webqq2協(xié)議分析和qq閑聊機器人簡單實現(xiàn)_第1頁
webqq2協(xié)議分析和qq閑聊機器人簡單實現(xiàn)_第2頁
webqq2協(xié)議分析和qq閑聊機器人簡單實現(xiàn)_第3頁
webqq2協(xié)議分析和qq閑聊機器人簡單實現(xiàn)_第4頁
webqq2協(xié)議分析和qq閑聊機器人簡單實現(xiàn)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——webqq2協(xié)議分析和qq閑聊機器人簡單實現(xiàn)

web2協(xié)議分析和閑聊機器人簡單實現(xiàn)

web2協(xié)議分析和閑聊機器人簡單實現(xiàn)

通過web接口,可以實現(xiàn)發(fā)送消息接收消息等,這樣,想實現(xiàn)一個閑聊機器人,就不是什么難事情了了,下面開始一步步做。

1。首先調(diào)用/check?appid=1003903uin=號碼,來獲取該號碼驗證碼之類的信息??捶祷亟Y(jié)果決定是不是要輸入驗證碼登陸。

假使返回:ptui_checkVC('1','95ab7db15e5ab17f50f25d33598259e83ccc098c4af2f8a4');需要輸入驗證碼,這里需要記住這個長字符串(獲取驗證碼圖片用)以及cookie

假使返回:ptui_checkVC('0','!MPG');不需要輸入驗證碼,驗證碼值用!MPG代替??赡転槠渌址?,但是以慨嘆號開頭

假使需要輸入驗證碼:則調(diào)用

/getimage?aid=1003903uin=號碼vc_type=95ab7db15e5ab17f50f25d33598259e83ccc098c4af2f8a4

獲取驗證碼圖片。。。

2。開始登陸,在登陸之前,需要將密碼加密,tx的加密方法很繁雜,不過還好,弄到了他的js文件,然后通過java的ScriptEnginee來執(zhí)行這個js來獲取加密后的字符串。。。

代碼:

Java代碼

ScriptEngineManagerm=newScriptEngineManager();ScriptEnginese=m.getEngineByName(javascript);se.eval(newFileReader(newFile(1.js)));Objectt=se.eval(md5(md5_3(\+p+\)+\+code.toUpperCase()+\););returnt.toString();

ScriptEngineManagerm=newScriptEngineManager();ScriptEnginese=m.getEngineByName(javascript);se.eval(newFileReader(newFile(1.js)));Objectt=se.eval(md5(md5_3(\+p+\)+\+code.toUpperCase()+\););returnt.toString();

現(xiàn)在調(diào)用登陸接口,以獲得相關(guān)的cookie。注意Referer。這個一定得加上,否則不成功:Referer:/proxy.html

/login?u=號碼p=密碼和驗證碼加密后的字符串verifycode=驗證碼remember_uin=1aid=1003903u1=http%3A%2F%%2Floginproxy.html%3Fstrong%

3Dtrueh=1ptredirect=0ptlang=2052from_ui=1pttype=1dumy=fp=loginerroralert

登陸成功后,要記住返回的cookie值。

如其中ptweb,skey等。

3。這還沒有完成,還需要再次登錄,這個好像就是閑聊接口登陸了(方才的登陸可以理解為登陸網(wǎng)站),只有這次登陸,才算真正登陸,這個時候,假使你已經(jīng)登陸,會把你的踢下線,而且此次登陸才算上線時間。

地址:/channel/login,把一個數(shù)據(jù)結(jié)構(gòu)post給它就夠了

r=%7B%22status%22%3A%22%22%2C%22ptweb%22%3A%22{1}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{2}%22%7D

其中{1}是ptweb,在第2步登陸后cookie返回的,{2}clientId,自己隨便定義一個數(shù)字吧。

假使成功:

會返回一個json數(shù)據(jù)結(jié)構(gòu):

{retcode:0,result:

{uin:號碼,mode:master,ind

ex:1055,port:38138,status:online,vfweb:f72a8722c988252aef4e0268f1d26a3d647f06f6ff3

web2協(xié)議分析和閑聊機器人簡單實現(xiàn)

53a5c6cdaaa49abb2fcdf0cee2d8d64373ac2,psessionid:

8368046764001D636F6E6E7365727665725F77656271714031302E3133332E332E3234300000235100000B79026E040043F60C166D0000000A404746365677767041316D00000028F72A8722C988252AEF4E0268F1D26A3D647F06F6

FF353A5C6CDAAA49ABB2FCDF0CEE2D8D64373AC2}}

記住其中的psessionid。后面在發(fā)送消息和獲取消息都需要這個參數(shù)。

4。發(fā)送一個消息給好友

地址:/channel/send_msg

同樣是post:r={to:號碼,face:0,content:[\23\,[\font\,{\name\:\宋體\,\size\:\10\,\style\:

[0,0,0],\color\:\000000

\}]],msg_id:7780001,clientid:15778909,psessionid:8368046764001D636F6E6E7365727665725F77656271714031302E3133332E332E3234300000326F00000B71026E040043F60C166D0000000A4042725946

34574676716D00000028E7D8E44718236B0C17365E824FD3817ED2EF6C879FEE88D07EA92D030CEA72EE8E59309863128A3E}

{retcode:0,result:ok}

需要把這個jsonUrlEncode一下再發(fā)送,否則會返回錯誤。

發(fā)送成功返回:{retcode:0,result:ok}

5。循環(huán)獲取消息接口:

通過這個接口你可以實時的不休止的獲取最新的消息。

/channel/poll?

clientid=15778909psessionid=8368046764001D636F6E6E7365727665725F77656271714031302E3133332E332E3234300000326F00000B71026E040043F60C166D0000000A404272594634574676716D00000028E7D8E447182

36B0C17365E824FD3817ED2EF6C879FEE88D07EA92D030CEA72EE8E59309863128A3Et=1288591644319

返回格式:

{retcode:0,result:[{poll_type:message,value:{msg_id:9712,from_uin:號碼,to_uin:號碼,msg_id2:217523,msg_type:9,reply_ip:2887452740,time:1288591740,content:[[font,{size:9,color:000000,style:

[0,0,0],name:\u5B8B\u4F53}],helloworld],raw_content:helloworld}}]}

其中的poll_type表示消息格式,message就是普通的消息,可以看到發(fā)送人,發(fā)送時間,以及消息的內(nèi)容等。

此接口很特別,在實現(xiàn)時,需要循環(huán)不休止調(diào)用,假使沒有消息返回,該接口會一直等待到,有消息,讀取完后要馬上再調(diào)用該接口。

6.其他接口

獲取頭像

/cgi/svr/face/getface?cache=0type=1fid=0uin=號碼

獲取個人信息

/api/get_single_info?tuin=號碼

獲取簽名

/api/get_single_long_nick?tuin=號碼t=1288751545148

獲取好友列表

/api/get_user_friends

r{vfweb:8f1383ba2239bb7295b100af215274aff1ee4be177b467cbc386fc53ff6606a8e5941aca61d0eb51}

獲取在線的好友

/channel/get_online_buddies?clientid=9547083psessionid=8368046764001D636F6E6E7365727665725F77656271714031302E3133332E332E323430000062F000000B86026E040043F60C166D0000000A404F526B7558357668476D000000288F1383BA2239BB729

5B100AF215274AFF1EE4BE177B467CBC386FC53FF6606A8E5941ACA61D0EB51t=1288751548600

獲取最近聯(lián)系人

/api/get_recent_contact

r

web2協(xié)議分析和閑聊機器人簡單實現(xiàn)

{vfweb:8f1383ba2239bb7295b100af215274aff1ee4be177b467cbc386fc53ff6606a8e5941aca61d0eb51}

等等。。。

7.附件這是本人通過java寫的一個實例客戶端,啟動后,處于接受消息狀態(tài),當收到好友發(fā)來的消息時,回返回然后呢?。。。。

類似閑聊機器人吧。。。

1.js是密碼的加密js文件。

。。

完整代碼:

Java代碼

importjava.awt.image.BufferedImage;

importjava.io.BufferedReader;

importjava.io.File;

importjava.io.FileReader;

importjava.io.InputStream;

importjava.io.InputStreamReader;

import.HttpURLConnection;

import.URL;

import.URLEncoder;

importjava.util.Date;

importjava.util.Random;

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

importjavax.imageio.ImageIO;

importjavax.script.ScriptEngine;

importjavax.script.ScriptEngineManager;

importnet.sf.json.JSONArray;

importnet.sf.json.JSONException;

importnet.sf.json.JSONObject;

publicclassClient{

privateint=-1;

privateStringpwd=null;

privateintclientid=66933334;//這個可以隨便寫

privateStringpsessionid=;

privateStringptweb;

privateStringvfweb;

privateStringskey;

privateStringrefer=/proxy.html;

privateStringcookie=;

//讀取消息線程

privatebooleanisrun=false;

privateThreadpoolThread=newPollThread();

publicThreadgetPoolThread(){

returnpoolThread;

}

/**

*記錄日志

*/

privatevoidlog(Stringmsg){

System.out.println(newDate().toLocaleString()+:+msg);

}

publicClient(int,Stringpwd){

this.=;

this.pwd=pwd;

try{

booleanrs=checkAndLogin();

if(rs){

isrun=true;

poolThread.start();//開始循環(huán)接收

log(啟動成功);

}

}catch(Exceptione){

e.printStackTrace();

}

}

/*****************綺麗的分界限*****************/

//測試

publicstaticvoidmain(String[]args)throwsException{

Clientq=newClient(903695452,fafengongzuo);

q.getPoolThread().join();

}

/*****************綺麗的分界限*****************/

/**

*給to發(fā)送一個msg消息,前提是to是你的好友,要不然他收不到

*/

publicbooleansendMsg(intto,Stringmessage){

try{

JSONObjectjson=newJSONObject();

json.put(to,to);//要發(fā)送的人

json.put(face,0);

JSONArraymsg=newJSONArray();

msg.add(message);

JSONArrayfont=newJSONArray();

font.add(font);

JSONObjectfont1=newJSONObject();

font1.put(name,宋體);

font1.put(size,10);

JSONArraystyle=newJSONArray();

style.add(0);

style.add(0);

style.add(0);

font1.put(style,style);

font1.put(

color,000000);

font.add(font1);

msg.add(font);

json.put(content,msg.toString());

json.put(ms

web2協(xié)議分析和閑聊機器人簡單實現(xiàn)

ll;

@Override

publicvoidrun(){

Stringurl=pollUrl+?clientid=+clientid+psessionid=

+psessionid;

try{

while(isrun){

//線程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論