本篇的目的是讓你的QQ真正的上線:擠下你的PCQQ,和讓好友狀態欄顯示webqq在線
目前總進度大概50%擠下PCQQ
、WebQQ在線狀態
請求報文分析
http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2
string.Format("r={{\"ptwebqq\":\"{0}\",\"clientid\":{1},\"psessionid\":\"\",\"status\":\"online\"}}", this.PtWebQQ, this.ClientID);
ptwebqq,是上一篇文章中從cookie中得到的值,不記得可以回去看看...
clientid是一個8長度的數字,如:29528322
,作用是作為用戶的唯一標識,可定義一個常量來表示,這個可隨意輸入
retcode:0,表示成功
注意:result屬性中的psessionid
和vfwebqq
是你本次登陸的QQ令牌,是登陸成功的依據,一定要保存下來
到這裡你會發現PCQQ通知你:你的QQ在別處登陸,你被迫下線了。有木有很高興呢(*゚∇゚)
但是你馬上會發現,過半分鐘你的webqq就掉線啦゚(つд`゚),所以請往下看
請求地址:http://d.web2.qq.com/channel/poll2
Referer:http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2
POST參數:r:{"ptwebqq":"XXXX","clientid":XXXXX,"psessionid":"XXXXXX","key":""}
以上參數在前次操作中都已經保存。
這是一個poll長輪詢
,浏覽器ajax到服務器,timeout很長,當服務器有你的新消息之後,才把消息返回給你,或者等待很久就給你一個空消息。
服務器知道你還在試圖獲取新消息,就明白你還在線,即保持在線狀態
。
該次請求返回的消息,即為好友消息
或者群消息
我之前試著按照流程一步一步來,現在突然想到,對返回消息的解析,依賴於好友列表和Q群列表的獲取。
因此解析部分我暫時延後。
使用C#模擬http請求可以參考猛戳這裡
您有沒有對這篇文章感興趣呢?
.