首先仍是取得驗證碼,抓包可得:
http://check.ptlogin2.qq.com/check?regmaster=&pt_tea=1&uin=2630366651&appid=7000101&js_ver=10113&js_type=1&login_sig=jBX*GEgR-BFtNPRz-Rz6AG1f2PwOqw0ksVxs0gHPEceuRD0e1VBmwdztN-JoAIlY&u1=http%3A%2F%2Fpet.qq.com%2Floginback.html&r=0.4001144212670624css
uin是用戶名都懂得,login_sig目前仍是沒堵上可忽略,其中最大的變化就是增長了pt_tea參數,通過分析測試應該是個過分參數,若是爲0在登陸時必定要求輸入驗證碼,而且採用老算法加密參數。
這也是爲何老程序仍然能夠登陸,但每次都要驗證碼的緣由,估計不久就要堵上了,因此這裏應該賦值1採用新算法。html
響應以下:
ptui_checkVC('0','!MOF','\x00\x00\x00\x00\x9c\xc8\x35\xbb','d1f329403a04f3cdcfa2c2edb634bcba803a436ee23330e6d728500550d61349c756894065e5e2ae635c783dd10d3ba1','0');算法
爲了方便敘述,各自段名左到右分別命名爲:isverified,vcode,salt,pt_verifysession_v1,pt_vcode_v1
isverified仍是指示是否須要驗證,0和1分別表明無需和須要。
slat以前叫pt_uin,當使用QQ號登陸時仍是老含義,既字節化的QQ號,而當使用郵箱登陸時返回的字節序列目前不明,分析了下其值是固定的,沒找到還原成QQ號的算法,貌似新算法的QQ號都是從cookies裏直接取得的。
pt_verifysession_v1就是session驗證碼,以前一直是擺設如今堵上了,當須要驗證的時候這個字段爲空,其值須要從cookies中取出。
pt_vcode_v1是新增的,後面會講到。
vcode在無需驗證的狀況下含義不變,當須要驗證時有了新含義,此時會返回一串字符,以前取得驗證碼圖片時有個cap_cd參數,此次也堵上了,
那麼這個參數哪來的呢?就是vcode返回的這串字符了,前面說了須要驗證時pt_verifysession_v1爲空,當取得驗證碼後cookies裏會多出一個verifysession,沒錯就是它了。cookie
有了以上參數剩下的就是登陸了:
http://ptlogin2.qq.com/login?u=2630366651&p=Bf89JSlQuPB7vtFHxbBdS9-0BH2SPHfv5f3FcRVsPE8TyMT24eTW5GkVxyAoQXqY58fNiMUyCUJ586NasPx8F-m*pvorVhEKRqedsLIqjFr-nZu6e3W6x8*CVUcbb*LS6OhXQSsul70IMpGBUmw0KEJXURnKApOcPeIJXy1bCEaOkLET*realhzlnmsagmNuRZvqobAVGjFw5QVKmAubXw__&verifycode=!MOF&aid=7000101&u1=http%3A%2F%2Fpet.qq.com%2Floginback.html&h=1&ptredirect=0&ptlang=2052&daid=41&from_ui=1&dumy=&low_login_enable=0®master=&fp=loginerroralert&action=1-10-1423480485958&mibao_css=&t=1&g=1&js_ver=10113&js_type=1&login_sig=jBX*GEgR-BFtNPRz-Rz6AG1f2PwOqw0ksVxs0gHPEceuRD0e1VBmwdztN-JoAIlY&pt_uistyle=17&pt_randsalt=0&pt_vcode_v1=0&pt_verifysession_v1=d1f329403a04f3cdcfa2c2edb634bcba803a436ee23330e6d728500550d61349c756894065e5e2ae635c783dd10d3ba1session
u是用戶名,verifycode和pt_verifysession_v1無需多言,而pt_vcode_v1不要被這貨騙了,不管前面返回的是什麼,這裏都應該是0,而前面進行驗證時返回的pt_vcode_v1實際上對應這裏的pt_randsalt,這個字段是幹啥的呢,
當你用qq號登陸時它爲0,反之你用郵箱之類的輔助賬號登陸時爲1,否則登陸會失敗。
最後的重頭戲就是參數p了,它是暗文密碼,相較以前簡單的MD5幾回此次可謂喪心病狂還新增了RSA,我已經逆向出一大半了,可最終仍是放棄了,理由很簡單新算法可變更的地方較多,隨便改改又要花費大把精力從新分析絕比費力不討好,
那麼咱們就充分發揚拿來主意吧,反正登陸腳本是現成的,僞造document對象或者把腳本改改直接用本地js引擎拿結果就好嘍~~~app