快速业务通道

实现基本QQ功能的PHP类:QQ机器人

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22

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为字符)

(6).发送验证

说明:

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。

(7).删除好友

提交数据:

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为字符)

(8).改变状态

提交数据:

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为对方拒绝你理由

当对方发送的消息过长时,服务器会自动截成几段,每段最多400个字节。完整的信息最后将有一个空格。

比如,我发送401个"A"的信息,接受的时候,服务器返回:


VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=0&MN=2&MT=9,9,&UN=106814,106814,&MG=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,A ,

比如,我发送400个"A"的信息,接受的时候,服务器返回:


VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=0&MN=2&MT=9,9,&UN=106814,106814,&MG=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,A ,

比如,我发送399个"A"的信息,接受的时候,服务器返回:


VER=1.1&CMD=GETMSGEX&SEQ=标记&UIN=QQ号&RES=0&MN=1&MT=9,9,&UN=106814,&MG=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ,

(10).发送消息

提交数据:

VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&UN=对方QQ号&MG=发送内容

说明:

发送内容的长度应小于400字节

返回:


VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=0&(成功发送,对方不一定能收到哦)

VER=1.1&CMD=CLTMSG&SEQ=标记&UIN=QQ号&RES=3(发送过快或者内容超长>400个字节)

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

4、过长的消息需要分段发送,当消息长度超过400字节的时候,服务器返回RES=3

(11).登出

提交数据:

VER=1.1&CMD=Logout&SEQ=标记&UIN=QQ号

返回:


VER=1.1&CMD=LOGOUT&SEQ=标记&UIN=QQ号&RES=0(成功,好像永远成功的,不管你是否登陆)

NULL(UIN为字符)

5、总结

通过对照以上的接口说明,我开发出了能够实现基本QQ功能的PHP类,它整合了以上所有的接口,使用更方便,可以开发QQ机器人、群发广告程序等。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号