如何登陆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. 《IT小小鸟》阅读心得

    我是一个不爱看书的人,认为看那些又臭又长废话连篇的书是在浪费时间,但我不认为在那么多的书中没有好书,在一次的职业生涯规划中老师推荐了这本书,一开始认为不值得一看,但还是拿了起来,读了有不少的感触. 书 ...

  2. C++ Template之函数模版

    函数模版的定义: template <typename T> T const& max(const T& a,const T b) { return a > b ? ...

  3. 【BZOJ】【1015】 【JSOI2008】星球大战starwar

    并查集/时光倒流 删点维护连通块个数比较难处理,所以我们就逆序来做,先处理最后状态下有多少连通块,再依次加入被删的点,这样就变删点为加点,利用并查集即可维护连通块个数. /************** ...

  4. bzoj 1041 圆上的整点 分类: Brush Mode 2014-11-11 20:15 80人阅读 评论(0) 收藏

    这里先只考虑x,y都大于0的情况 如果x^2+y^2=r^2,则(r-x)(r+x)=y*y 令d=gcd(r-x,r+x),r-x=d*u^2,r+x=d*v^2,显然有gcd(u,v)=1且u&l ...

  5. HDOJ 1429 胜利大逃亡(续)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  6. SWF Web播放器

    <HTML> <HEAD> <!-- saved from url=(0013)about:internet --> <TITLE> Untitled. ...

  7. Razor之代码复用

    原文:http://www.cnblogs.com/youring2/archive/2011/07/26/2115493.html 1.布局(Layout)复用 Layout的使用,就像WebFor ...

  8. 斌哥的 Docker 进阶指南—监控方案的实现

    过去的一年中,关于 Docker 的话题从未断过,而如今,从尝试 Docker 到最终决定使用 Docker 的转化率依然在逐步升高,关于 Docker 的讨论更是有增无减.另一方面,大家的注意力也渐 ...

  9. delphi 中几种多线程操作方式

    在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程. 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:http: ...

  10. 整数划分 Integer Partition(二)

    本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中  m1 m2 ... mi连续,比如5=1+4就不符合 ...