程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 一步一步來做WebQQ機器人-(三)(登錄QQ並保持在線),webqq機器人

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

編輯:C#入門知識

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


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

目前總進度大概50%

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

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

第二次登陸 真正的在線,擠下PCQQWebQQ在線狀態

首先看看這個請求

 

請求報文分析

 

    • 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就掉線啦゚(つд`゚),所以請往下看

長輪詢POLL 保持在線+獲取好友、群消息

請求說明:

請求地址: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請求可以參考猛戳這裡

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

 

 

 

.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved