360每日自动签到,领取积分 (java httpclient4.x)

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

  1 import java.io.IOException;
  2 import java.util.Map;
  3 import java.util.regex.Matcher;
  4 import java.util.regex.Pattern;
  5
  6 import net.sf.json.JSONObject;
  7
  8 import org.apache.http.Header;
  9 import org.apache.http.HttpEntity;
 10 import org.apache.http.HttpResponse;
 11 import org.apache.http.client.ClientProtocolException;
 12 import org.apache.http.client.methods.HttpGet;
 13 import org.apache.http.client.methods.HttpPost;
 14 import org.apache.http.client.params.CookiePolicy;
 15 import org.apache.http.client.params.HttpClientParams;
 16 import org.apache.http.impl.client.DefaultHttpClient;
 17 import org.apache.http.util.EntityUtils;
 18 import org.apache.log4j.Logger;
 19
 20 import com.kae.common.CustomerHttpClient;
 21 import com.kae.common.DummyRedirectHandler;
 22
 23 /**
 24  *
 25  * @ClassName: Jifen360
 26  * @Description: 360积分
 27  * @author kaedeen.com
 28  * @date 2013-11-22 下午9:28:24
 29  *
 30  */
 31
 32 public class Jifen360 {
 33
 34     private static final Logger logger = Logger.getLogger(Jifen360.class);
 35
 36     private static DefaultHttpClient httpclient = null;// HttpClient对象
 37
 38     private static HttpResponse response = null;
 39
 40     private String url = "";
 41
 42     public Jifen360(String url) {
 43         this.url = url;
 44     }
 45
 46     /**
 47      * 签到
 48      *
 49      * @return
 50      */
 51     @SuppressWarnings({ "deprecation","rawtypes" })
 52     public boolean signIn() {
 53         boolean flag = false;
 54
 55         httpclient = new DefaultHttpClient();
 56         // 设定cookie策略
 57         HttpClientParams.setCookiePolicy(httpclient.getParams(),
 58                 CookiePolicy.BROWSER_COMPATIBILITY);
 59
 60         httpclient.setRedirectHandler(new DummyRedirectHandler());
 61
 62         HttpGet httpGet = new HttpGet(url);
 63
 64         try {
 65             response = httpclient.execute(httpGet);
 66         } catch (ClientProtocolException e) {
 67             // TODO Auto-generated catch block
 68             logger.error("Jifen360 signIn ClientProtocolException:"+e.toString());
 69         } catch (IOException e) {
 70             // TODO Auto-generated catch block
 71             logger.error("Jifen360 signIn IOException:"+e.toString());
 72         } finally {
 73             httpGet.abort();
 74         }
 75
 76         String token = getToken();
 77
 78         // 请求签到链接
 79         String signInUrl="http://jifen.360.cn/safe/ajax_signin.html?token="+token;
 80
 81         HttpPost httppost = new HttpPost(signInUrl);
 82         httppost.setHeader("Accept", "*/*");
 83         httppost.setHeader("Accept-Language","zh-CN,zh;q=0.8,en;q=0.6,ja;q=0.4,zh-TW;q=0.2");
 84         httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
 85         httppost.setHeader("Host", "jifen.360.cn");
 86         httppost.setHeader("Origin", "http://jifen.360.cn");
 87         httppost.setHeader("Proxy-Connection", "keep-alive");
 88         httppost.setHeader("Referer", "http://jifen.360.cn/safe?src=safe");
 89         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");
 90         httppost.setHeader("X-Requested-With", "XMLHttpRequest");
 91
 92         try {
 93             //获取签到应答内容
 94             response = httpclient.execute(httppost);
 95             HttpEntity httpEntity = response.getEntity();
 96             String responseJsonStr = EntityUtils.toString(httpEntity);
 97
 98             //请求示例
 99             //{"errno":0,"errmsg":"","data":{"dayslen":1,"score":2,"signin_count":608904}} 成功
100             //{"errno":1,"errmsg":"\u60a8\u4eca\u5929\u5df2\u7ecf\u7b7e\u8fc7\u5230\u4e86~","data":""} 失败
101
102             logger.info("Jifen360 请求签到链接 responseJsonStr:"+responseJsonStr);
103
104             Map map = JSONObject.fromObject(responseJsonStr);
105             int code=(Integer)map.get("errno");
106
107             if(0==code){
108                 flag=true;
109                 logger.info("Jifen360 签到 成功!");
110             }else{
111                 logger.info("Jifen360 今天已经签到了!");
112             }
113
114         }catch (Exception e) {
115             logger.error("Jifen360 signIn 请求签到链接 失败:"+e.toString());
116             return false;
117         } finally {
118             httppost.abort();
119         }
120
121
122         return flag;
123     }
124
125     /**
126      * 获取302跳转的
127      *
128      * @return
129      */
130     private String getRedirectLocation() {
131         Header locationHeader = response.getFirstHeader("Location");
132         if (locationHeader == null) {
133             return null;
134         }
135         return locationHeader.getValue();
136     }
137
138     /**
139      * 获取360 token
140      *
141      * @return
142      */
143     private String getToken() {
144
145         String redirectUrl = getRedirectLocation();
146
147         String token = "";
148
149         String responseBody = CustomerHttpClient.get(httpclient, redirectUrl);
150         // System.out.println(responseBody);
151
152         Pattern pattern1 = Pattern.compile("token\":\"(.*)\",\"mall_tpl");
153         Matcher m1 = pattern1.matcher(responseBody);
154         if (m1.find()) {
155             token = m1.group(1);
156             logger.info("Jifen360 360 token:"+token);
157         } else {
158             logger.error("Jifen360 360 获取360 token失败!");
159         }
160
161         return token;
162     }
163
164 }

时间: 2024-11-04 11:47:25

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

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

公司规定每日签到两次:日子太安逸了,有时候中午居然会忘记签到…… 于是,笔者寻思写一个自动签到的脚本:每天指定两个签到时段,每次打开页面,先检测当前是否为签到时段,如果在签到时段,则检查cookie中记录的值,确认该时段是否已经签到过了,巴拉巴拉…… 具体细节见流程图: 其中第一步调用的getCheckTime用来检测当前是否为签到时间,并返回当前时间距下一个时段的毫秒数,具体请见下面的流程图: 整个页面的代码如下,其中用到了笔者<JavaScript类库/组件/框架封装的总体结构>一文中提到

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

本项目是基于nodejs开发,实现的功能是,什么值得买自动签到,自动评论功能,自动发邮件,支持多人多账号运行 目的是为了,解放双手,轻松获取什么值得买的经验和积分,得到更高的等级,从而突破很会员等级限制,如领取部分紧俏的优惠券 项目运行即执行签到和评论 目前规则:每天6:10 执行签到和评论功能,17:30执行签到结果邮件发送功能,执行间隔为随机时间,可自行修改. 由于值得买,每天前三条,发送评论有经验和积分,故该项目每天会随机发送3条评论,评论内容请到config.js文件中配置 如有条件,请

基于AccessibilityService制作的钉钉自动签到程序

标签: 移动开发安卓自动化操作 2015-12-03 09:56 1736人阅读 评论(10) 收藏 举报 分类: Android(3) 版权声明:本文为博主原创文章,未经博主允许不得转载. 前两天公司开始宣布要使用阿里钉钉来签到啦!!!~~这就意味着,我必须老老实实每天按时签到上班下班了,这真是一个悲伤的消息,可是!!!!那么机智(lan)的我,怎么可能就这么屈服!!!阿里钉钉签到,说到底不就是手机软件签到吗?我就是干移动开发的,做一个小应用每天自动签到不就行了:) 说干就干,首先分析一下,阿

利用python登录网页并自动签到

最近接触python操作网页,甚是方便.很多网站为了粘贴用户,要求每天签到送积分,而我们这么忙哪有空去干这个呀,python可以自动帮我们做这个事情. 实验网站:www.shuobar.com,这是一个提供免费电话的网站,以前在任何时候打电话都免费的,但是现在只能在中午12点之前免费,其他时间打电话要积分,每天签到可以送一些积分 实验方法:windows下pyhton编程 1.用户的登录.www.shuobar.com采用QQ授权登录,不提供帐号密码的登录方式,这给自动签到带来一些不便,首先研究

每日自动备份JENKINS_HOME至SVN

每日自动备份JENKINS_HOME至版本控制系统SVN Jenkins是一个可扩展的开源的持续集成工具,也是当下最流行的持续集成工具. Jenkins主要功能 易于安装(Easy installation) 易于配置(Easy configuration) 变更集支持(Change set support) 永久链接(Permanent links) RSS/Email/IM集成(RSS/E-mail/IM Integration) 事后标签(After-the-fact tagging) J

批处理实现每日自动备份和清除数据库文件

说明 利用任务计划,每天指定时间执行批处理文件: 1.实现自动Copy数据库备份文件至另一台主机上 2.自动删除指定天数的备份文件 1.批处理文件代码 CopyDB2Lan (factory).bat ************************* 代码开始处 *************************  @echo off color 0e cls title Copy DB 到 镜像主机下 (by [email protected])... set desthost=\\172.

【Android】Android Layout Binder——根据layout布局文件自动生成findViewById的java代码的神器

Android Layout Binder是一个网站,能够在线的根据layout布局文件自动生成findViewById的java代码. 网址是http://android.lineten.net/layout.php 如图:

兼容360模式自动播放视频【需要flvpalyer.swf】

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="210" height="160"> <param name="movie

Linux下使用crontab命令以及Python脚本实现自动签到

关于这一部分, 我首先介绍下如何实现使用Python脚本实现签到功能其实,linux下有个命令叫做curl,完全可以完成模拟签到的功能,但是为了练习Python,我就用Python来写了.有这个想法完全是因为实验室的学长开发了一款App,上边收个起床签到,还有排名,为了能那个首签... 言归正传 首先,因为是手机上的App, 所以,我们需要抓包看下它具体的URL以及发送的内容是什么,关于这部分内容我就不在赘述了,我实现的功能主要有模拟发布状态和模拟签到两种功能,两个的URL也是不同的.为了不让学