如何登陆360,并每日自动签到
这次的难点主要集中在登陆这里了,开始抓包发现360登陆验证很麻烦,但是后来发现一个简单的方法。
因为我安装了360安全卫士,发现点击那个金币的按钮能直接验证登陆,哈哈~所以httpclient直接get这个url就能创建cookie完成登陆了~
上面说的不明白,看图:

 import java.io.IOException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import net.sf.json.JSONObject; import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger; import com.kae.common.CustomerHttpClient;
import com.kae.common.DummyRedirectHandler; /**
*
* @ClassName: Jifen360
* @Description: 360积分
* @author kaedeen.com
* @date 2013-11-22 下午9:28:24
*
*/ public class Jifen360 { private static final Logger logger = Logger.getLogger(Jifen360.class); private static DefaultHttpClient httpclient = null;// HttpClient对象 private static HttpResponse response = null; private String url = ""; public Jifen360(String url) {
this.url = url;
} /**
* 签到
*
* @return
*/
@SuppressWarnings({ "deprecation","rawtypes" })
public boolean signIn() {
boolean flag = false; httpclient = new DefaultHttpClient();
// 设定cookie策略
HttpClientParams.setCookiePolicy(httpclient.getParams(),
CookiePolicy.BROWSER_COMPATIBILITY); httpclient.setRedirectHandler(new DummyRedirectHandler()); HttpGet httpGet = new HttpGet(url); try {
response = httpclient.execute(httpGet);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
logger.error("Jifen360 signIn ClientProtocolException:"+e.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
logger.error("Jifen360 signIn IOException:"+e.toString());
} finally {
httpGet.abort();
} String token = getToken(); // 请求签到链接
String signInUrl="http://jifen.360.cn/safe/ajax_signin.html?token="+token; HttpPost httppost = new HttpPost(signInUrl);
httppost.setHeader("Accept", "*/*");
httppost.setHeader("Accept-Language","zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,zh-TW;q=0.2");
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
httppost.setHeader("Host", "jifen.360.cn");
httppost.setHeader("Origin", "http://jifen.360.cn");
httppost.setHeader("Proxy-Connection", "keep-alive");
httppost.setHeader("Referer", "http://jifen.360.cn/safe?src=safe");
httppost.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36");
httppost.setHeader("X-Requested-With", "XMLHttpRequest"); try {
//获取签到应答内容
response = httpclient.execute(httppost);
HttpEntity httpEntity = response.getEntity();
String responseJsonStr = EntityUtils.toString(httpEntity); //请求示例
//{"errno":0,"errmsg":"","data":{"dayslen":1,"score":2,"signin_count":608904}} 成功
//{"errno":1,"errmsg":"\u60a8\u4eca\u5929\u5df2\u7ecf\u7b7e\u8fc7\u5230\u4e86~","data":""} 失败 logger.info("Jifen360 请求签到链接 responseJsonStr:"+responseJsonStr); Map map = JSONObject.fromObject(responseJsonStr);
int code=(Integer)map.get("errno"); if(0==code){
flag=true;
logger.info("Jifen360 签到 成功!");
}else{
logger.info("Jifen360 今天已经签到了!");
} }catch (Exception e) {
logger.error("Jifen360 signIn 请求签到链接 失败:"+e.toString());
return false;
} finally {
httppost.abort();
} return flag;
} /**
* 获取302跳转的
*
* @return
*/
private String getRedirectLocation() {
Header locationHeader = response.getFirstHeader("Location");
if (locationHeader == null) {
return null;
}
return locationHeader.getValue();
} /**
* 获取360 token
*
* @return
*/
private String getToken() { String redirectUrl = getRedirectLocation(); String token = ""; String responseBody = CustomerHttpClient.get(httpclient, redirectUrl);
// System.out.println(responseBody); Pattern pattern1 = Pattern.compile("token\":\"(.*)\",\"mall_tpl");
Matcher m1 = pattern1.matcher(responseBody);
if (m1.find()) {
token = m1.group(1);
logger.info("Jifen360 360 token:"+token);
} else {
logger.error("Jifen360 360 获取360 token失败!");
} return token;
} }

360每日自动签到,领取积分 (java httpclient4.x)的更多相关文章

  1. 利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化.但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了. 有需要Python学习资料的小伙伴吗?小编整理[ ...

  2. 【开源】使用.Net Core和GitHub Actions实现哔哩哔哩每日自动签到、投币、领取奖励

    BiliBiliTool是一个B站自动执行任务的工具,使用.NET Core编写,通过它可以实现B站帐号的每日自动观看.分享.投币视频,获取经验,每月自动领取会员权益.自动为自己充电等功能,帮助我们轻 ...

  3. 自动签到升级版(JS实现的每日定时任务)

    公司规定每日签到两次:日子太安逸了,有时候中午居然会忘记签到…… 于是,笔者寻思写一个自动签到的脚本:每天指定两个签到时段,每次打开页面,先检测当前是否为签到时段,如果在签到时段,则检查cookie中 ...

  4. selenium之数据驱动框架应用WPS个人中心自动签到

    wps在注册后,有个每日签到的功能,签到后有几率送wps的专属金币[稻米],为了免费获得,又不想每天都是人工去执行签到动作,所以用selenium写了个小脚本,准备用数据驱动框架来完成这个事情,数据驱 ...

  5. nodejs什么值得买自动签到自动评论定时任务

    本项目是基于nodejs开发,实现的功能是,什么值得买自动签到,自动评论功能,自动发邮件,支持多人多账号运行 目的是为了,解放双手,轻松获取什么值得买的经验和积分,得到更高的等级,从而突破很会员等级限 ...

  6. Python 实现「食行生鲜」签到领积分

    用过食行生鲜的同学应该知道,每天可以在食行生鲜签到,签到可以领到 20 积分,在购物时可以抵 2 毛钱.钱虽少,但是积少成多,买菜时可以抵扣一两块钱还是不错的. 今天我们就用 Python 来实现自动 ...

  7. Python3编写自动签到服务程序

    公司加班的餐补需要登录网站签到领取,有时候会忘记,于是自己用Python写了小程序来自动签到.刚开始只是做了自己用,直接写的黑框程序,后来给同事用,就打包成exe.再后来有人说要写成window服务会 ...

  8. Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)

    T00ls 每日签到是可以获取 TuBi 的,由于常常忘记签到,导致损失了很多 TuBi .于是在 T00ls 论坛搜索了一下,发现有不少大佬都写了自己的签到脚本,签到功能实现.定时任务执行以及签到提 ...

  9. python3+任务计划实现的人人影视网站自动签到

    python3+任务计划实现的人人影视网站自动签到 这是一个自动化程度较高的程序,运行本程序后会从chrome中读取cookies用于登录人人影视签到, 并且会自动添加一个windows 任务计划,这 ...

随机推荐

  1. 【转】利用TCMalloc优化Nginx的性能

    From: http://www.linuxidc.com/Linux/2013-04/83197.html TCMalloc的全称是 Thread-Caching Malloc,是谷歌开发的开源工具 ...

  2. HDU 5293 Tree chain problem 树形dp+dfs序+树状数组+LCA

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5293 题意: 给你一些链,每条链都有自己的价值,求不相交不重合的链能够组成的最大价值. 题解: 树形 ...

  3. 在eclipse中配置maven

    http://pansanday.blog.163.com/blog/static/381662802012727103454743/ 从eclipse 3.6开始,eclipse有一个marketp ...

  4. Project Facets中Dynamic Web Module无法设置2.5的解决方法

    为什么将jre改到1.6,还是无法改变dynamic web module 到2.5啊 解决方法: 在工程目录下有一个.settings文件夹,打开org.eclipse.wst.common.pro ...

  5. codeforces #235div2 D

    完全没看出是状态压缩DP, 果然没练习,之前一直再看,看来要把状压做几道了, 上代码吧:代码也是问道的 无语... #include<cstdio> #include<cstring ...

  6. Swift 2.0 到底「新」在哪?

    [编者按]2015年6月,一年一度的苹果 WWDC 大会如期而至,在大会上苹果发布了 Swift 2.0,引入了很多新的特性,以帮助开发者更快.更简单地构建应用.本篇文章作者是 Maxime defa ...

  7. LA 4727

    Integers 1, 2, 3,..., n are placed on a circle in the increasing order as in the following figure. W ...

  8. Android 4.4KitKat AudioRecord 流程分析

    Android是架构分为三层: 底层      Linux Kernel 中间层  主要由C++实现 (Android 60%源码都是C++实现) 应用层  主要由JAVA开发的应用程序 应用程序执行 ...

  9. java web页面 base

    <base href="<%=basePath%>"> <base src="<%=basePath%>"> 主 ...

  10. ***mysql索引总结----mysql索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...