新浪邮箱模拟登录java

抓包分析

主要请求

1、破解用户名和密码

首先访问链接:

/**
 * stage 1
 */
String url = "http://login.sina.com.cn/sso/prelogin.php?entry=cnmail&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.18)&_=" + new Date().getTime();

这步和新浪微博的模拟登录一样,因为新浪是使用SSO进行单点登录,所以前期破解步骤是一样的。
这一步获得:
在分析过程中,我们知道我们所输入的用户名和密码都是经过加密了的,用户名加密比较简单,是用Base64进行加密:

 public static String encode(String  str) {  
         byte[] bytes = URLEncoder.encode(str).getBytes();
            return new String(Base64.encode(bytes));
    }

而密码的加密是通过以下四个值进行加密:
加密js在http://2008mail.sina.com.cn/js/ssologin.js?ver=201610101这链接里面

nonce = obj.getString("nonce");
servertime = obj.getString("servertime");
pubkey = obj.getString("pubkey");
rsakv = obj.getString("rsakv");
password=sinaSSOEncoder.hex_sha1(""+sinaSSOEncoder.hex_sha1(sinaSSOEncoder.hex_sha1(password))+me.servertime+me.nonce)}}

把加密js抠出来以供我们来调用破解。
破解之后,我们设置header来请求链接:

http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)

2、获取部分cookies

/**
 * stage 2
 */
String url2 = "http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.18)";
Map<String,String> headers = new HashMap<String, String>();
Map<String,String> params = new HashMap<String, String>();
params.put("su", encode(username));
params.put("service", "sso");
params.put("servertime", servertime);
params.put("nonce", nonce);
params.put("pwencode", "rsa2");
params.put("rsakv", rsakv);
params.put("sp", encoding(pubkey, servertime, nonce, password));
params.put("prelt", "122");
params.put("cdult", "3");

通过多次偿试返回header中的cookies只有以下三个值有用:

SUB=开头的值
SUBP=开头的值
sso_info=开头的值
SWEBAPPSESSID=开头的值

上面步骤只能获得前三个值,然后又发现SWEBAPPSESSID这个值是从访问以下这个链接来的,

3、获取完整cookies

http://m0.mail.sina.com.cn/?sid=XXXXXXXXXXXXXXXXXXXXXXX&a=1479276717769&b=1479276718751

面这个链接是从链接

http://mail.sina.com.cn/cgi-bin/sla.php?a=1479276717769&b=1479276718751&c=0&ssl=0

重定向而来的。那么我们首先访问这个链接获得目标链接,然后获得SWEBAPPSESSID的值。
目标cookies
终于获得所有的目标cookies,后面就可以愉快的爬取邮箱咯。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值