近来由于毕设需要,重新修改了新浪微博爬虫废了不少劲,希望下边的总结能够帮助后来的同学们。
现行版的模拟登陆与以前相比,最大的改动在于cookie获取时候的模拟url的请求过程,其难点之一的密码加密并没有任何改动,因为此次的改动主要是重新理顺它的cookie获取过程中的几个url请求的节点。
一、url请求流
1、“http://www.weibo.com”,获取login_sid_t,uug等两个参数,在放入后续的请求cookie中。
2、“HttpGet hg = new HttpGet(
"http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.11)&_="
+ (new Date()).getTime());”,即预登陆请求,获得serverTime,nonce,pubkey,rsaKV等参数,在加密和真正登陆时用。
3、http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.11),开始真正的登陆,包括10几个参数,最关键的是加密参数。
5、“http://www.weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack&sudaref=www.weibo.com”,得到上个请求中的cookies,加入该次请求中,得到此次的cookies,即可作为模拟抓取的cookies值。
二、在1、2、...5的5个请求中,需要抓包,分析每个cookies设置中的特殊之处,需要个人去分析一下,关键是要看懂第一大步。
在4、5之间的转向很关键,如果用httpclient的自动转向会丢失cookie导致最后得到的cookie看上去是对的,其实是非法不对的。
故需要在4、5之间改成手动设置重定向之后的cookie设置,在此处我废了很大劲,以为httpclient会自动加载重定向前的cookie了。
试试吧,希望同学们早日搞定。