腾讯微博的登录过程分为三步,第一步根据微博名产生验证码,第二步验证用户名和加密后的密码,第三步重定向页面。比较特殊的是每步产生的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/)