亚洲精品久久久久久久久久久久久,91大神xh98hx在线播放,91精品免费 http://www.aygfsteel.com/dorian/category/5911.htmlzh-cn Wed, 28 Feb 2007 03:09:53 GMT Wed, 28 Feb 2007 03:09:53 GMT 60 RFC 3261 - SIP: Session Initiation Protocol http://www.aygfsteel.com/dorian/archive/2006/03/01/32986.htmlDorian's Blog Dorian's Blog Wed, 01 Mar 2006 03:28:00 GMT http://www.aygfsteel.com/dorian/archive/2006/03/01/32986.html http://www.aygfsteel.com/dorian/comments/32986.html http://www.aygfsteel.com/dorian/archive/2006/03/01/32986.html#Feedback 0 http://www.aygfsteel.com/dorian/comments/commentRss/32986.html http://www.aygfsteel.com/dorian/services/trackbacks/32986.html 閱讀全文 ]]> QQ的HTTP接口探究 http://www.aygfsteel.com/dorian/archive/2005/12/12/23482.htmlDorian's Blog Dorian's Blog Mon, 12 Dec 2005 06:54:00 GMT http://www.aygfsteel.com/dorian/archive/2005/12/12/23482.html http://www.aygfsteel.com/dorian/comments/23482.html http://www.aygfsteel.com/dorian/archive/2005/12/12/23482.html#Feedback 1 http://www.aygfsteel.com/dorian/comments/commentRss/23482.html http://www.aygfsteel.com/dorian/services/trackbacks/23482.html 1、研究說明 Tencent在tqq.tencent.com的8000有一個使用HTTP的QQ接口,通過這個接口,可以進行一些基本的操作,如:登陸、登出、改變登陸狀態(上線、忙碌、離線、隱身)、添加刪除好友、查看好友信息、發送驗證信息(接受被加為好友、申請加對方為好友、拒絕被加為好友)、收發用戶消息、系統信息。 目前我研究的是1.1版本的HTTP QQ協議,研究是微程在的成果上進行的,不敢說有什么超越,只不過更為詳細和準確。 2、接口說明: 接口位置:tqq.tencent.com:8000 通信協議:HTTP 數據傳輸方法:POST HTTP請求格式: POST HTTP/1.1 Host: tqq.tencent.com:8000 Content-Type: text/plain; charset=UTF-8 Content-length: 長度 Connection: close 數據 其中長度為 數據 的長度,數據的格式: VER=1.1&CMD=命令&SEQ=標記&UIN=QQ號&.... 以上4個參數是每個請求都必有的。其中,VER表示協議的版本,目前為1.1,據說1.2已經出來了,這個亂寫的話,服務器返回NULL; CMD為操作的指令,有Login、List、Query_Stat、GetInfo、AddToList、Ack_AddToList、 DelFromList、Change_Stat、GetMsgEx、CLTMSG、Logout;SEQ為當前請求的標記,防止重復發送,可以用當前時間,也可以用隨機數;UIN是當前執行操作的QQ號。不過不同的CMD還需要不同的參數,下面我就公布我的研究成果。 3、研究方法: 我對目前網上的資料不夠滿意,就自己寫程序,發送多條相同CMD不同參數的請求,根據服務器的返回,來做判斷。感興趣的朋友可以參考一下,此處可以跳過。 下面我公布我探測的代碼(PHP): [code:1:1bbf2dec18] <? $uin = "QQ號"; $pwd = md5("QQ密碼"); //登陸測試 $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235"; //注意:登陸測試不能同時進行,必須等到服務器認為QQ斷開了,才能夠測試,不然結果不可信 /******* $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=0&LC=9326B87B234E7235"; $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=1&LC=9326B87B234E7235"; $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=2&LC=9326B87B234E7235"; $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M5=3&LC=9326B87B234E7235"; $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=9326B87B234E7235"; $poststring[] = "VER=1.1&CMD=Login&SEQ=".rand(1000,9000)."&UIN=".$uin."&PS=".$pwd."&M6=1&LC=1223423545756679"; *******/ //得到好友列表 $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0"; $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=List&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814"; //得到在線列表 $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=160&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=".rand(1,200)."&UN=0"; $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=".rand(1,10); $poststring[] = "VER=1.1&CMD=Query_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&TN=0&UN=106814"; //查看好友信息 $poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=0&UN=106814"; $poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=1&UN=106814"; $poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=2&UN=106814"; $poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=3&UN=106814"; $poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=4&UN=106814"; $poststring[] = "VER=1.1&CMD=GetInfo&SEQ=".rand(1000,9000)."&UIN=".$uin."&LV=5&UN=106814"; //增加好友 $poststring[] = "VER=1.1&CMD=AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814"; //發送驗證 $poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=0&RS=TEST"; $poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=1&RS=TEST"; $poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=2&RS=TEST"; $poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=3&RS=TEST"; $poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=4&RS=TEST"; $poststring[] = "VER=1.1&CMD=Ack_AddToList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&CD=5&RS=TEST"; //刪除好友 $poststring[] = "VER=1.1&CMD=DelFromList&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814"; //改變狀態 for($i=0;$i<=60;$i=$i+5) { $poststring[] = "VER=1.1&CMD=Change_Stat&SEQ=".rand(1000,9000)."&UIN=".$uin."&ST=".$i; } //獲得消息 $poststring[] = "VER=1.1&CMD=GetMsgEx&SEQ=".rand(1000,9000)."&UIN=".$uin.""; //發送消息 $poststring[] = "VER=1.1&CMD=CLTMSG&SEQ=".rand(1000,9000)."&UIN=".$uin."&UN=106814&MG=TEST"; //登出 $poststring[] = "VER=1.1&CMD=Logout&SEQ=".rand(1000,9000)."&UIN=".$uin.""; $file = fopen("p.txt","w"); foreach($poststring as $k=>$v) { ss_timing_start(); $fp = fsockopen('tqq.tencent.com', '8000', $errno, $errstr, $timeout = 10); if(!$fp){ //error tell us $content = $k.chr(13).chr(10)."ERROR:$errstr ($errno)"; }else{ //send the server request fputs($fp, "POST HTTP/1.1\r\n"); // fputs($fp, "Host: $host\r\n"); // fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ".strlen($v)."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $v . "\r\n\r\n"); //loop through the response from the server $res = ""; while(!feof($fp)) { $res .= fgets($fp, 4096); } //close fp - we are done with it fclose($fp); $content = $v.chr(13).chr(10).$res; } ss_timing_stop(); $content .= chr(13).chr(10)."Time: ".ss_timing_current().chr(13).chr(10)."--------------------------------------".chr(13).chr(10); fputs($file,$content); } fclose($file); ?> <? function ss_timing_start ($name = "default") { global $ss_timing_start_times; $ss_timing_start_times[$name] = explode(' ', microtime()); } function ss_timing_stop ($name = "default") { global $ss_timing_stop_times; $ss_timing_stop_times[$name] = explode(' ', microtime()); } function ss_timing_current ($name = "default") { global $ss_timing_start_times, $ss_timing_stop_times; if (!isset($ss_timing_start_times[$name])) { return 0; } if (!isset($ss_timing_stop_times[$name])) { $stop_time = explode(' ', microtime()); } else { $stop_time = $ss_timing_stop_times[$name]; } $current = $stop_time[1]-$ss_timing_start_times[$name][1]; $current += $stop_time[0]-$ss_timing_start_times[$name][0]; return $current; } ?> [/code:1:1bbf2dec18] 4、研究成果: (1).登陸 說明:在你做任何其他操作以前,你必須登陸。只有在登陸以后,你的其他指令才有可能被正確執行(返回RES=0),不然服務器會返回RES= 20,不過有個例外,就是logout。當你成功登陸以后,服務器就會根據你的IP*和參數中的UIN來驗證身份。一臺電腦可以同時登陸多個QQ,互不影響,就是因為有參數UIN。 *至于我能夠確定服務器是通過IP來驗證的,是因為服務器不可能通過我的請求獲得其他信息了^_^ 提交數據:VER=1.1&CMD=Login&SEQ=標記&UIN=QQ號&PS=QQ密碼&M5=1&LC=9326B87B234E7235 說明:QQ密碼是通過md5加密的字符串,在PHP中可以直接用md5()進行加密; M5這個參數的作用還不清楚,但最好為1。 LC這個參數有點神秘,不能有絲毫改動,不然服務器就沒有響應(沒有響應就是返回NULL)。 返回:VER=1.1&CMD=LOGIN&SEQ=標記&UIN=QQ號&RES=0&RS=0&HI=60&LI=300(成功) VER=1.1&CMD=LOGIN&SEQ=標記&UIN=QQ號&RES=0&RS=1&RA=密碼錯誤(密碼錯誤) VER=1.1&CMD=LOGIN&SEQ=標記&UIN=QQ號&RES=5(QQ號非法,如100) NULL(UIN為字符、PS為空、LC錯誤) (2).得到好友列表 提交數據:VER=1.1&CMD=List&SEQ=標記&UIN=QQ號&TN=160&UN=0 說明:TN、UN還不清楚具體表示什么,但是TN的值會影響返回的結果,有沒有UN對結果沒有影響 返回:VER=1.1&CMD=LIST&SEQ=標記&UIN=QQ號&RES=0&FN=9(當TN=0或沒有TN參數時,FN表示好友數) VER=1.1&CMD=LIST&SEQ=標記&UIN=QQ號&RES=0&FN= 1&SN=9&UN=3814526,...,(當TN存在且非0時,FN=1,SN表示好友數,UN為好友列表,用","分割) VER=1.1&CMD=LIST&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、TN、UN為字符) (3).得到在線好友列表 提交數據:VER=1.1&CMD=Query_Stat&SEQ=標記&UIN=QQ號&TN=50&UN=0 說明:TN、UN還不清楚具體表示什么,但是TN的值會影響返回的結果,有沒有UN對結果沒有影響 返回:VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES= 0&FC=0,&FN=1&SN=1&ST=10,&UN=106814,&NK=Hackfan 好,(當TN存在且非0時,FN=1,SN表示在線好友數,FC、ST、UN、NK的值用','分割,分別表示頭像、狀態、號碼、昵稱) VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、TN、UN為字符) 說明:FC為QQ頭像的的ID,如的頭像ID為270,那么其頭使用的圖片為91.bmp,其算法為ID/3+1; ST為QQ用戶的狀態,10為上線,20為離線(或隱身),30為忙碌; 特別說明:當參數TN=0或不存在時,服務器返回: VER=1.1&CMD=Query_Stat&SEQ=標記&UIN=QQ號 HTTP/1.1 200 OK Server: tencent imserver/1.0.0 Content-Type: text/plain; charset=UTF-8 Content-Length: 56 VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES=0&FN=1 HTTP/1.1 200 OK Server: tencent imserver/1.0.0 Content-Type: text/plain; charset=UTF-8 Content-Length: 77 VER=1.1&CMD=QUERY_STAT&SEQ=標記&UIN=QQ號&RES=0&FC=&FN=1&SN=0&ST=&UN=&NK= 返回了2次,第一次的結果中,FN為在線好友數,第二次返回的數據基本沒用。 (4).查看好友信息 提交數據:VER=1.1&CMD=GetInfo&SEQ=標記&UIN=QQ號&LV=查詢類型&UN=被查詢QQ號碼 說明:LV=0,1為精簡查詢,LV=2為普通查詢,LV>=3為詳細查詢 返回:VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=0&LV=0&UN=106814&NK=Hackfan 好(精簡查詢) VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=0&AD =地址&AG=19&EM=hackfan@qq.com&FC=0&HP=http: //blog.hackfan.net&JB=學生 &LV=2&PC=郵編&PH=電話&PR= The guy is updating to .NET Frameword......&PV=江蘇&RN=胡吉陽&SC= 畢業院校&SX=0&UN=106814&NK=Hackfan 好(普通查詢) VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=0&AD =地址&AG=19&BT=2&CO=6&CT=蘇州&CV=%01&CY=中華人民共和國 &EM=hackfan@qq.com&FC=0&HP=http://blog.hackfan.net&ID =-&JB=學生&LV=3&MO=136********&MT=0&MV=&PC=郵編& PH=電話&PR=The guy is updating to .NET Frameword......&PV=江蘇&RN=胡吉陽&SC=畢業院校&SH=3&SX=0&UN=106814&NK=Hackfan 好(詳細查詢) VER=1.1&CMD=GETINFO&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、LV、UN為字符) 說明:AD為聯系地址 AG為年齡 BT為血型 CO為星座 CT為城市 CV為未知* CY為國家 EM為Email FC為頭像 HP為網站 ID為未知 JB為職業 LV為查詢代碼(就是發送的LV) MO為移動電話 MT為未知 MV為未知 PC為郵編 PH為聯系電話 PR為簡介 PV為省 RN為真實姓名 SC為畢業院校 SH為生肖 SX為性別 UN為QQ號 NK為昵稱 血型:0 => '', 1 => 'A型', 2 => 'B型', 3 => 'O型', 4 => 'AB型', 5 => '其他' 星座:0 => '', 1 => '水瓶座', 2 => '雙魚座', 3 => '牡羊座', 4 => '金牛座', 5 => '雙子座', 6 => '巨蟹座', 7 => '獅子座', 8 => '處女座', 9 => '天秤座', 10 => '天蝎座', 11 => '射手座', 12 => '摩羯座' 生肖:0 => '', 1 => '鼠', 2 => '牛', 3 => '虎', 4 => '兔', 5 => '龍', 6 => '蛇', 7 => '馬', 8 => '羊', 9 => '猴', 10 => '雞', 11 => '狗', 12 => '豬' 性別:0 => '男', 1 => '女' (5).增加好友 提交數據:VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&UN=對方QQ號 返回:VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=0&CD=0&UN=對方QQ號(允許被加為好友,此時他已經是你的好友) VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=0&CD=1&UN=對方QQ號(需要驗證) VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=0&CD=2&UN=對方QQ號(決絕被加為好友) VER=1.1&CMD=AddToList&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、UN為字符) (5).發送驗證 說明:1、如果你加對方為好友,你需要發送驗證 2、對方加你為好友,發送了驗證,你要通過或者拒絕 這2種情況需要發送驗證消息 提交數據:VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&UN=對方QQ號&CD=驗證類型&RS=理由 說明:CD為0表示“通過驗證”,CD為1表示“拒決加為對方為好友”,CD為2表示“為請求對方加為好友”。 返回:VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&RES=0(成功) VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&RES=3(*) VER=1.1&CMD=Ack_AddToList&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、UN、CD為字符,RS為非UTF-8字符) *如果服務器返回RES=3,那么這次對話的響應時間在20s。當發送驗證請求的時候,必須連發2次(請求內容不必一樣),其中一條RES=3,對方收不到,一條RES=0,對方能夠收到。當CD>=3時,RES=3,響應時間20s。 (6).刪除好友 提交數據:VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&UN=刪除的QQ號 返回:VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&RES=0&(成功) VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&RES=3(響應時間30s,重復發送的后果) VER=1.1&CMD=DelFromList&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、UN為字符) (7).改變狀態 提交數據:VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&ST=狀態代碼 說明:狀態代碼:10為上線,20為離線,30為忙碌,40為隱身,其他視為非法 返回:VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&RES=0&(成功) VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&RES=3(失敗,原因不明,響應時間20s,可能是過于頻繁的改變狀態引起的) VER=1.1&CMD=Change_Stat&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN為字符,ST非法) 特別說明:如果你改變好友,將會給所有好友發送一條系統信息,內容就是狀態代碼;如果隱身,發送的狀態代碼為20,表示離線。 同理,當你的好友改變狀態,你也會收到一條系統信息。 (9).獲得消息 提交數據:VER=1.1&CMD=GetMsgEx&SEQ=標記&UIN=QQ號 返回:VER=1.1&CMD=GETMSGEX&SEQ=標記&UIN=QQ號&RES=0& MN=4&MT=99,99,99,9,&UN=36791785,99833581,99833581,106814,&MG= 20,30,10,hi ,(MN表示信息數量,MT、UN、MG的值用","分割,分別表示消息類型、發送人號碼、消息內容) VER=1.1&CMD=GETMSGEX&SEQ=標記&UIN=QQ號&RES=0&MN=0&MT=&UN=&MG=(表示沒有信息) VER=1.1&CMD=GETMSGEX&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN為字符) 說明:關于MT: 9為用戶消息,99為系統消息,2為請求信息,3為通過驗證,4為拒絕被加好友 關于MG: 當MT=9時,MG為用戶發送的消息內容 當MT=99時, MG=10(QQ_STATUS_ONLINE)表示對方上線 MG=20(QQ_STATUS_OFFLINE)表示對方下線 MG=30(QQ_STATUS_BUSY)表示對方進入忙碌狀態 當MT=2時,MG為對方請求你驗證的信息 當MT=3時,表示對方通過你的驗證 當MT=4時,MG為對方拒絕你理由 (10).發送消息 提交數據:VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&UN=對方QQ號&MG=發送內容 返回:VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&RES=0&(成功發送,對方不一定能收到哦) VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&RES=3(發送過快) VER=1.1&CMD=CLTMSG&SEQ=標記&UIN=QQ號&RES=20(沒有正確登陸) NULL(UIN、UN為字符,MG含非UTF-8字符) 說明:1、當你發消息時,以下情形對方可能看不到(其實是收到了,QQ不提示)你發送的消息: 你倆互為陌生人,且對方沒有和你說過話 你在他的陌生人列表里,并且他沒有和你說過話(沒有驗證) 2、當你過快發送消息時,系統會給你一個懲罰,RES=3,相應時間20s 3、當我發送含有小寫字母h的信息時,服務器有可能返回NULL (11).登出 提交數據:VER=1.1&CMD=Logout&SEQ=標記&UIN=QQ號 返回:VER=1.1&CMD=LOGOUT&SEQ=標記&UIN=QQ號&RES=0(成功,好像永遠成功的,不管你是否登陸) NULL(UIN為字符) ]]>
主站蜘蛛池模板:
九江县 |
烟台市 |
荥经县 |
宣化县 |
三原县 |
济南市 |
淮阳县 |
西安市 |
甘孜 |
陈巴尔虎旗 |
鄂州市 |
德格县 |
涿州市 |
武平县 |
新巴尔虎右旗 |
武宁县 |
扎鲁特旗 |
双城市 |
鹤庆县 |
仙桃市 |
托克托县 |
历史 |
广安市 |
当涂县 |
施甸县 |
镇平县 |
永年县 |
栾川县 |
新源县 |
乐陵市 |
西充县 |
伊金霍洛旗 |
陕西省 |
贡山 |
沂南县 |
资溪县 |
安仁县 |
新田县 |
马山县 |
咸丰县 |
海安县 |