一步一步來做WebQQ機器人-(三)(登錄QQ並保持在線)


本篇的目的是讓你的QQ真正的上線:擠下你的PCQQ,和讓好友狀態欄顯示webqq在線

目前總進度大概50%

全系列預計會有這些步驟,當然某些步驟可能會合並:

  • 驗證碼
  • 第一次登陸
  • 第二次登陸
  • 保持在線和接收消息
  • 獲取好友和群列表
  • 發送消息
  • 變成智能的(*゚∀゚*)

首先看看這個請求

 

請求報文分析

 

    • referer是不可少的,先告訴TX的服務器請求是來自於這里:http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2
    • post數據是一個json格式的: string.Format("r={{\"ptwebqq\":\"{0}\",\"clientid\":{1},\"psessionid\":\"\",\"status\":\"online\"}}", this.PtWebQQ, this.ClientID);

ptwebqq,是上一篇文章中從cookie中得到的值,不記得可以回去看看...

clientid是一個8長度的數字,如:29528322,作用是作為用戶的唯一標識,可定義一個常量來表示,這個可隨意輸入

返回值:

 

retcode:0,表示成功

注意:result屬性中的psessionidvfwebqq是你本次登陸的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群列表的獲取。

因此解析部分我暫時延后。

到目前為止,已經可以完整的登陸,並保持在線,獲取消息

下一篇文章將對獲取好友列表和Q群列表作分析,以及一些擴展的介紹

使用C#模擬http請求可以參考猛戳這里

您有沒有對這篇文章感興趣呢?

 

一步一步來做WebQQ機器人-(三)(登錄QQ並保持在線):

demo中的信息提示,請使用 this.Invoke((Action)(()=>xxx.Text=xxx)); 來改一下

本步驟的demo,一步一步來做WebQQ機器人-(三)(登錄QQ並保持在線),更新於2015/2/2

可以到該系列最后一篇文章查看是否可能有最新demo

轉載請保留本頁鏈接:http://www.cnblogs.com/lianmin/p/4232879.html

 

 

 

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM