最近好幾個新項目積一起了,比較忙,所以博客遲遲未更新,還請各位見諒!下面來繼續分析webqq協議,本章將說明如何實現登陸
1:輸入QQ號和密碼登陸,檢測HTTP請求url如下,這是第一次登陸
https://ssl.ptlogin2.qq.com/login?u={0}&p={1}&verifycode={2}&webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=0-28-696051&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10095&login_sig=a9NQ-9*PnzKFxzP7jcE7voRx5Z9x6Khffy44FKhIkaD-n8fShtaK1r1GZRjgsxzA&pt_randsalt=0&pt_vcode_v1=0&pt_verifysession_v1={3}
需要傳遞4個參數
u ---qq號
p ---加密后的密碼
verifycode ---驗證碼
verifysession_v1 ---獲取驗證碼時取到的verifysession
2:提交請求,記得保存cookie,登陸成功之后返回結果如下
ptuiCB('0','0','http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=2358922602&service=login&nodirect
=0&ptsigx=55ddde2b4b297168034309d52aff1a679bd60595863b77f2ab13fa9ff5a688631e6b177d54aef1e886bac0954f5fac07597f81b5d287bdeb3ab06acd2e2dbfd4
&s_url=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&f_url=&ptlang=2052&ptredirect
=100&aid=501004106&daid=164&j_later=0&low_login_hour=0®master=0&pt_login_type=1&pt_aid=0&pt_aaid=0
&pt_light=0','0','登錄成功!', 'Zero');
說明:第一個 0 狀態碼,0表示登陸成功
第二個0 不知道干啥用,反正后面我沒用到
http://..... 3之后請求的url
0 無用
登陸成功 提示信息
Zero 昵稱
3:獲取QQ令牌ptwebqq
4:請求2 中的url,記得保存cookie
5:進行第二次登陸,提交POST請求,記得保存cookie
url:http://d.web2.qq.com/channel/login2
referer:http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2
post數據:r={{"ptwebqq":"1fcc5dc887871eacc0c74632f2397550b306ca28479fa8950d967b893d32c31a","clientid":53999199,"psessionid"
:"","status":"online"}}
說明:ptwebqq 前面獲取的qq令牌
clientid 客戶端id,基本不變
pessionid 這一步為空,后面會獲取
status 登陸狀態
POST返回結果如下
說明:retcode 狀態碼,0表示成功
result 結果對象集合
uin qq號
cip 類似臨時碼,不用管
index 不知道干嘛的,不用管
port 不用管
status 狀態 online:在線 callme:Q我吧 silent:請勿打擾
vfwebqq qq令牌,再次保存
psessionid 需要保存的,后面用到
user_state 狀態
f 不用管
ok,到此登陸搞定了,但是你會發現你的qq無法持續在線,這就涉及心跳包的發送了,敬請等待下一篇文章,謝謝!
程序員技術交流群 歡迎您的加入