腾讯微博的登录过程分为三步,第一步根据微博名产生验证码,第二步验证用户名和加密后的密码,第三步重定向页面。比较特殊的是每步产生的cookie文件会作为参数代入下一步,所以只是提交用户名、密码不能自动登录微博,还要保存每次请求产生的cookie。如果短时间重复多次登录,会出现图形验证码输入。
1.获取验证码 http://ptlogin2.qq.com/check?uin=@bigmarten&&appid=46000101
该url请求会返回一个随机验证码,uin表示微博名,appid表示产品编号。该步保存的cookie文件中的参数会代入第二步。
2.QQ密码做3次md5加密,然后连接上面的验证码再做1次md5加密。加密后的字符串作为下面url的参数p,verifycode表示第一步的验证码,u1表示转向的url。该步保存的cookie文件中的参数会代入第三步。
url = ‘http://ptlogin2.qq.com/login?u=@’+user+’&p=’+password+’&verifycode=’+checkCode
url = url + ‘&aid=46000101&u1=http%3A%2F%2Ft.qq.com&ptredirect=1&h=1&from_ui=1&fp=loginerroralert’
3.请求成功后返回下面的字符串,表示登录成功。然后重定向到http://t.qq.com/bigmarten就完成了自动登录。
ptuiCB(’0′,’0′,’www.qq.com’,’1′,’登录成功!’);
登录过程都可以从http://ui.ptlogin2.qq.com/login_t.js文件中分析出。
B+=md5(md5_3(E.p.value)+F 就是微博的加密逻辑。
下面是模拟腾讯微博登录过程中保存的cookie。
.ptlogin2.qq.com TRUE / FALSE 0 ptvfsession 6f858ea990ce43cd0b5a2a94cb2531bdf0c459039a22a1f29b0fb988b9054b84399e0a832006ae39d33c6d4bc52dc96e
.qq.com TRUE / FALSE 1577923200 pt2gguin o0029131579
.qq.com TRUE / FALSE 0 uin o0029131579
.qq.com TRUE / FALSE 0 skey @swP7TtKgr
.qq.com TRUE / FALSE 86400 clientuin
.qq.com TRUE / FALSE 86400 clientkey
.qq.com TRUE / FALSE 86400 zzpaneluin
.qq.com TRUE / FALSE 86400 zzpanelkey
.qq.com TRUE / FALSE 0 ptisp cnc
.ptlogin2.qq.com TRUE / FALSE 0 ptuserinfo 6269676d617274656e
.ptlogin2.qq.com TRUE / FALSE 1577923200 ptcz 0188a0d87e421c9aeeb51abd1386b86a82308b8cc7f04daa1297b9b6ddaad472
.qq.com TRUE / FALSE 86400 airkey
PS:虽然能登录但还不能自动发帖,可能还是cookie保存的不全。(文/bigmarten 转载请注明出处http://mtoou.info/tenxun-beibo/)