新浪微博登录

总共三次请求:

第一次目的获取 nonce  servertime  pubkey  rsakv  pcid
第二次目的获取 ticket  loginUrl
第三次目的获取 Cookie


1.将用户名先urlencode编码再Base64Encode编码

2.根据http://login.sina.com.cn/sso/prelogin.PHP?entry=weibo&callback=sinaSSOController.preloginCallBack&su=二次编码后的用户名&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.5)&_=System.currentTimeMillis() url来构造HttpGet
3.添加请求头  

[java]  view plain  copy
  1. headers.put("Accept""*/*");  
  2. headers.put("Referer""http://weibo.com/");  
  3. headers.put("Accept-Language""zh-cn");  
  4. headers.put("User-Agent""Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 691)");  
  5. headers.put("Host""login.sina.com.cn");  
  6. headers.put("Connection""Keep-Alive");</span>  
4.抛出Get请求后 能够从响应中获得nonce  servertime  pubkey  rsakv  pcid这几个值
5.根据url(http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.5))构造HttpPost请求
6.用户名二次编码 密码RSA加密(servertime+"\t"+nonce+"\n"+password)并转为16进制
7.向HttpPost请求中加header      

[java]  view plain  copy
  1. headers.put("Accept""text/html, application/xhtml+xml, */*");//Accept: */*\r\n  
  2. headers.put("Referer""http://login.sina.com.cn/member/my.php?entry=sso");  
  3. headers.put("Accept-Language""zh-cn");  
  4. headers.put("User-Agent""Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN");  
  5. headers.put("Host""login.sina.com.cn");  
  6. headers.put("Connection""Keep-Alive");  
  7. headers.put("Content-Type""application/x-www-form-urlencoded");  
  8. headers.put("Cache-Control""no-cache");</span>  
8.向HttpPost中添加参数  

[java]  view plain  copy
  1. params.put("encoding""UTF-8");  
  2. params.put("entry""weibo");  
  3. params.put("from""");  
  4. params.put("prelt""112");  
  5. params.put("gateway""1");  
  6. params.put("nonce", nonce);  
  7. params.put("pwencode""rsa2");//wsse  
  8. params.put("returntype""META");  
  9. params.put("pagerefer""");  
  10. params.put("savestate""7");      
  11. params.put("servertime", servertime);  
  12. params.put("rsakv", rsakv);  
  13. params.put("service""miniblog");  
  14. params.put("sp", 二次编码后的用户名);  
  15. params.put("ssosimplelogin""1");  
  16. params.put("su", 加密后的密码);  
  17. params.put("url""http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack");  
  18. params.put("useticket""1");  
  19. params.put("vsnf""1");</span>  
9.Post请求后从响应中获取ticket loginUrl
10.构造HttpGet(http://passport.weibo.com/wbsso/login?ticket=上一步获取的ticket&url=上一步获取的loginUrl&ssosavestate=1468932314&retcode=0)
11.抛出Get请求  这里要设置HttpGet不让他自动重定向
12.此时response中的Set-Cookie就是我们想要的Cookie了


http://download.csdn.NET/detail/onepiecehuiyu/8931417

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值