漫談WebQQ 協議


閱讀目錄       

1,WEBQQ的登陸協議

2,傳說中的心跳包

3,獲得群,好友,

4實戰(盜號-外掛-廣告)

 

 

要說怎么突然研究起WEBQQ,也是比較偶然的機會,因為前一份工作專注於B2C商城的開發,

經常,自己寫點工具,模擬一個HTTP請求來進行秒殺之類的,然后聯想到QQ的農場,牧場

有很多輔助的小工具,自己開始研究WEBQQ,時間大概是2個雙休,4天.

 

 

1,WEBQQ登陸協議

工具:火狐+firebug

1, 進入WEBQQ, http://web.qq.com/,

 

通過工具分析,可以知道,通過WEB登陸,會首先GET一個請求過去

http://check.ptlogin2.qq.com/check?uin=236773862&appid=1003903&r=0.14233942252344134,我們只詳細分析下這一個請求,看看,這個請求到底攜帶了什么樣的數據

 

請求頭部這些內容,就是等會,模擬HTTP提交需要的,

 

這個GET請求返回ptui_checkVC('0','!W61','\x00\x00\x00\x00\x9b\x8f\xdb\xab');這樣的字符串,其中第一個字符串,’0’代表不需要驗證碼,’!w61’這個數據,是等會登陸需要的,

第3個參數沒用,

我輸入密碼登陸,監控到這樣一個請求

http://ptlogin2.qq.com/login?u=236773862&p=C678AF49F29847C34BA8165EDE59C5A7&verifycode=quhw&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=8-38-447467&mibao_css=m_webqq&t=3&g=1

這個不用多說了,接着用C#進行模擬就行了,其中分清哪些是不變的就行了

String loginUrl = "http://ptlogin2.qq.com/login?u=" + qq + "&p=" + md5pass + "&verifycode=" + verifyCode + "&webqq_type=10&remember_uin=1&login2qq=0&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=6-25-303994&mibao_css=m_webqq&t=1&g=1";

不用多說了吧, md5pass這個是密碼加密后的一個參數

 

加密的方式,就是QQ號,密碼的明文,還有就是驗證碼,如果沒有驗證碼就是,’!w61’這個參數,至於如何加密的,其實也非常簡單,騰訊的加密肯定在客戶端加密然后傳輸的,找到相應的JS文件,然后改寫成C#版本就行了,至於第三個參數,就是驗證碼或者是’!w61’了,

 

ptuiCB('0','0','http://web2.qq.com/loginproxy.html?login2qq=1&webqq_type=10','0','登錄成功!', 'Zr');

登陸成功后,返回這樣的一個格式,一旦登陸成功,我就可以拿到COOKie

 

有了COOKIE,可以取出PTWEBQQ,和Skey,因為接着還會有一個POST包過去

http://d.web2.qq.com/channel/login2

 

其中這個POST請求需要PTWEBQQ,我們構造一下,POST過去

String postData = String.Format("r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22psessionid%22%3Anull%7D&clientid={2}&psessionid=null", this.ptwebqq, this.clientid, this.clientid);

                String login3 = QQ.getHtml(channelLoginUrl, "post", postData);

其中clientid是個隨機數,自己定義就行了,那么到此,登陸就完成了,我們看一下界面

 

1,心跳包

顧名思義,心跳包,就是維持一個長連接,讓WEBQQ保持在線的一種機制,.這個心跳包非常簡單

http://d.web2.qq.com/channel/poll2只需要每隔幾秒,或者寫一個死循環也可以,,

這個地址POST

 

這樣一段數據,就可以了,其中必要的參數,在登陸的時候可以全部拿到,這里值得一說的是,當POST這個數據過去后,服務器會等大概30秒左右的時間,如果30秒,QQ沒有收到任何信息,那么它會自動返回,如果有信息會攜帶信息返回

 

實際上,這個心跳包弄清楚后,后面基本就沒難度了,自己完全可以寫一個簡單的QQ,,難道這就是所謂的長連接??

1,獲得群和好友

      獲得群和好友,然后模擬HTTP請求,就可以聊天了。。。這里簡單的說

 

對這個地址POST,然后會返回一個JSON,自己解析吧,后面已經沒有技術含量了,體力活了

1,實戰

我記得騰訊有很多游戲。。。同樣的方法,先寫個簡單的3366外掛,其實很簡單,就是一個get請求過去,分數什么的自己寫吧,,把外掛上傳,其實盜個什么QQ號的,沒一點技術含量,,

 

 

自己嘗試了下,。。。在比如說

 

等等吧,盜來的QQ號,有什么用??呵呵,我個人都是拿來上傳我的外掛,然后盜更多的號,其實研究WEBQQ或者PCQQ協議的人,都是為了打廣告,我至今難於忘記,那個賣鐵觀音茶的廣告,幾乎每個人的群里都會有這么一個廣告。。,不光是QQ.新浪微博刷粉也可以這樣搞,本人精力有限,連寫這篇文章,都是趕出來的,有興趣的同事,可以找我要源碼,或者一起研究都可以

 

BY gitdnn        


免責聲明!

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



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