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

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

目前總進度大概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中獲得的值,不記得能夠回去看看...web

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

返回值:

 

retcode:0,表示成功json

注意:result屬性中的psessionidvfwebqq是你本次登錄的QQ令牌,是登錄成功的依據,必定要保存下來瀏覽器

到這裏你會發現PCQQ通知你:你的QQ在別處登錄,你被迫下線了。有木有很高興呢(*゚∇゚)服務器

可是你立刻會發現,過半分鐘你的webqq就掉線啦゚(つд`゚),因此請往下看cookie

請求說明:

請求地址:http://d.web2.qq.com/channel/poll2session

Referer:http://d.web2.qq.com/proxy.html?v=20130916001&callback=1&id=2post

POST參數:r:{"ptwebqq":"XXXX","clientid":XXXXX,"psessionid":"XXXXXX","key":""}this

以上參數在前次操做中都已經保存。

這是一個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

 

 

 

 

.

相關文章
相關標籤/搜索