Well done! 為了探究webqq的http請求流程和數據交互,我付出了很多心血。
寫下這篇文章!!!這是我逝去的青春
系列寫完之后我會把源碼打包奉上~
------我的征途是星辰大海
預計會有這些步驟,當然某些步驟可能會合並:
- 驗證碼
- 第一次登陸
- 第二次登陸
- 保持在線和接收消息
- 獲取好友和群列表
- 發送消息
- 變成智能的(*゚∀゚*)
一、 進入webqq頁面
二、 檢查是否需要驗證碼
在用戶輸入完QQ號之后,會觸發一個http請求,用來檢測該賬號是否需要驗證碼。
請求地址: "https://ssl.ptlogin2.qq.com/check?uin=" + QQNum + "&appid=501004106&js_ver=10095&js_type=0&login_sig=a9NQ-9*PnzKFxzP7jcE7voRx5Z9x6Khffy44FKhIkaD-n8fShtaK1r1GZRjgsxzA&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html&r=0.6158497643191367";
三、 不需要驗證碼的返回結果
1.這里是使用了jsonp的方式,對QQ號碼的安全性進行了檢測
2.本圖的操作不需要驗證碼校驗
3.方法內前4個參數用得到:
- 1表示需要驗證碼,0則表示QQ號碼安全
- 第二個參數表示驗證碼,QQ安全表示你不用自己輸入驗證碼,TX會幫你后台生成驗證碼...
- QQ號碼16進制
- verifysession,后文用得到,先保存下來
四、 需要驗證碼的返回結果
1.這里是使用了jsonp的方式,對QQ號碼的安全性進行了檢測
2.本圖的操作需要驗證碼校驗(多次反復登陸,IP異常等)
3.這次返回的參數只有第一個用得到,1表示需要驗證碼,0則表示QQ號碼安全
var num=2835049203; var num16=num.toString(16); var result='\\x00\\x00\\x00\\x00'; for(var i=0;i<8;i+=2){ result+='\\x'+num16.substr(i,2); } console.log(num16); console.log(result);
五、 需要驗證碼的時候,下載驗證碼
1.請求的地址:"https://ssl.captcha.qq.com/getimage?aid=501004106&r=0.8478438374586403&uin=" + QQNum;
2.請求需要帶上referer:"https://ui.ptlogin2.qq.com/cgi-bin/login?daid=164&target=self&style=16&mibao_css=m_webqq&appid=501004106&enable_qlogin=0&no_verifyimg=1&s_url=http%3A%2F%2Fw.qq.com%2Fproxy.html&f_url=loginerroralert&strong_login=1&login_state=10&t=20131024001";
3.獲取圖片后,需要保存該次請求的cookie
4.從cookie中找到"verifysession"的值,保存下來
本步驟的demo,一步一步來做WebQQ機器人-(一)(驗證碼),更新於2015/1/28
可以到該系列最后一篇文章查看是否可能有最新demo
轉載請保留本頁鏈接:http://www.cnblogs.com/lianmin/p/4231340.html
.