qq收不到消息

更新时间:2023-03-04 02:24:44 阅读: 评论:0

粽子里的故事-老人家生日祝福语

qq收不到消息
2023年3月4日发(作者:女朋友过生日送什么礼物好)

smartQQ登录协议分析

魔羯座_轩(Efy)

简介...................................................................................................................................................3

获取登录二维码................................................................................................................................4

验证合法性.......................................................................................................................................5

收发消息...........................................................................................................................................6

获取群列表.......................................................................................................................................8

简介

基于smartQQ协议制作的第三方登录工具,语言使用JAVA,收发QQ信息,使用事件机制.

目前基础功能已经完成,可直接使用jar包方式,注册监听器即可.临时消息需要先发送一次消

息给对方,才能接收到对方发来的消息,如果没有发送过消息,则无法接收该QQ的临时消息.

获取登录二维码

1.获取二维码前需要先获取验证所需cookie

URL:"/login?";

请求方式:GET

请求参数:

("appid",appid+"");

("s_url","http%3A%2F%%%3Flogin2qq%3D1%26web

qq_type%3D10");//必须URLEncode转码

请求cookie:无

返回cookie:最好完整保存,关键参数pt_login_sig这个后面会用到

2.获取二维码

URL:"/ptqrshow?";

请求方式:GET

请求参数:

{

appid:501004106

e:501004106

l:M

s:5

d:72

v:4

t:随机数

}

请求cookie:带上login返回的cookie

返回cookie:qrsig,保存

3.获取二维码状态(未过期,已被扫描,已过期)

此方法需要轮询

URL:/ptqrlogin

请求方式:GET

请求参数:

("webqq_type","10");

("remember_uin","1");

("login2qq","1");

("aid",appid+"");

("u1","http%3A%2F%%%3Flogin2qq%3D1%26webqq_

type%3D10");

("ptredirect","0");

("ptlang","2052");

("daid","164");

("from_ui","1");

("pttype","1");

("dumy","");

("fp","loginerroralert");

("action","0-0-82429");

("mibao_css","m_webqq");

("t","1");

("g","1");

("js_type","0");

("js_ver","10156");

("login_sig","");

("pt_randsalt","2");

请求cookie:带上loginCookie和qrsig

返回cookie:无

返回结果为

ptuiCB('66','0','','0','二维码未失效。(1876977836)','');

第一个参数为状态码

0:认证成功

65:二维码未失效

66:二维码已失效

67:二维码认证中

认证成功后保存cookie中的ptwebqq,uin

("ptwebqq",getCookie("ptwebqq"));

("uin",getCookie("uin"));

验证合法性

1.获取登录地址

二维码认证成功时会返回

ptuiCB('0','0','/check_sig?pttype=1&uin=QQ号

&rvice=ptqrlogin&nodirect=0&ptsigx=4d2e8d7b09fcb184e237bf2b09af157deae11539884de0e

005d465d414f51fa33dc313644564c0b6de52448193f7c08b17576f966eed7aa3adddaa25d6710c7

e&s_url=http%3A%2F%%%3Flogin2qq%3D1%26webqq_type%3D10&f_

url=&ptlang=2052&ptredirect=100&aid=501004106&daid=164&j_later=0&low_login_hour=0&re

gmaster=0&pt_login_type=3&pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0','0','登录成功!',

'QQ昵称');

取第三个参数的地址,进行post请求(如果用GET方式请求,需要设置禁用请求重定向,否则获

取不到cookie)

保存cookie

("skey",getCookie("skey"));

("p_skey",getCookie("p_skey"));

("pt4_token",getCookie("pt4_token"));

("uin",getCookie("uin"));

("p_uin",getCookie("p_uin"));

("pt2gguin",getCookie("pt2gguin"));

将上述6项参数组成cookie参数

2.获取vfwebqq(该值用来获取信息时验证的,极为关键)

Stringurl="/api/getvfwebqq?";//获取vfwebqq的URL

一定要有referer

referer="/?v=2&callback=1&id=1";

("ptwebqq",("ptwebqq"));

("clientid",clientid+"");//clientid为53999199

("t",getRandomCode());

Cookie为上面的6个参数,使用GET方式请求

返回数据为json

{"retcode":0,"result":{"vfwebqq":"vfwebqq"}}

保存vfwebqq

将referer改回

referer="/?v=2&callback=1&id=2";

登录上线.

Post方式请求/channel/login2

参数为json格式

("ptwebqq",("ptwebqq"));

//clientid为53999199

("clientid",clientid);//必须为数字,不能是字符串,否则认证不通过!!

("status","online");

("pssionid","");

参数格式为r=json数据

返回数据为json

Retcode为0表示登录成功

保存pssionid,意义同vfwebqq

至此登录完成

收发消息

1.接收消息

Stringurl="/channel/poll2";

referer="/?v=2&callback=1&id=2";

Cookie为之前的6项参数

请求参数为json格式

("ptwebqq",("ptwebqq"));

("clientid",clientid);

("pssionid",("pssionid"));

("key","");

参数格式为r=json数据

返回数据同样为json

如果没有消息,则返回recode=0,errmsg=”errormsg!!!”

该请求是一个长等待的post(1分钟超时),轮询时只要接受到返回结果即可发送下一次

请求,不需要延迟等待.

样例:

请求地址:/channel/poll2

请求Referer:/?v=2&callback=1&id=2

请求Cookie:6项参数

返回Cookie:

请求结果:HTTP/1.1200OK

{"result":[{"poll_type":"group_message","value":{"content":[["font",{"color

":"000000","name":"微软雅黑","size":10,"style":[0,0,0]}],"不是好狗子

"],"from_uin":2744064845,"group_code":2744064845,"msg_id":8046,"msg_type":0

,"nd_uin":669622643,"time":1465972700,"to_uin":本人QQ号}}],"retcode":0}

收消息时有分群消息和好友消息

在返回的json中有poll_type区分(message和group_message.)

同时该协议并不支持除文字消息外的其他类型消息(包括临时消息)

2.发送消息

QQ协议中所有号码并非真实QQ号,而是由uin这个临时唯一码代替,该码每隔一段时间

会变化,最长不超过一天,

收发消息所用的也是这个uin

发送个人消息

请求地址:/channel/nd_buddy_msg2

请求Referer:/?v=2&callback=1&id=2

请求Cookie:6项参数

请求参数:

name:r

value:{"face":591,"clientid":53999199,"pssionid":"登录时返回数据中获取

","to":1379141056,"msg_id":20503237,"content":"["水水水水

",["font",{"size":10,"color":"000000","name":"宋体

","style":[0,0,0]}]]"}

返回Cookie:

请求结果:HTTP/1.1200OK

{"errCode":0,"msg":"ndok"}

发送群消息

请求地址:/channel/nd_qun_msg2

请求Referer:/?v=2&callback=1&id=2

请求Cookie:6项参数

请求参数:

name:r

value:{"face":591,"clientid":53999199,"group_uin":1811824570,"pssionid":"

登录时返回数据中获取","msg_id":20503239,"content":"["水水水水

",["font",{"size":10,"color":"000000","name":"宋体

","style":[0,0,0]}]]"}

返回Cookie:

请求结果:HTTP/1.1200OK

{"errCode":0,"msg":"ndok"}

其中msg_id为随机数,但只随机一次,后续消息都为该随机数+1递增

遇到发送失败的消息,类似errCode=100012之类的,表示msg_id被使用过(猜测,官方协

议也有此bug),循环发送至成功为止即可.

获取群列表

Stringurl="/api/get_group_name_list_mask2";

//请求参数

JSONObjectr=newJSONObject();

("vfwebqq",("vfwebqq"));

//这里的uin就是本人的QQ号,协议中只有本人的uin是真实QQ号,其他人都是临时码

longuin=ong(("uin").replace("o",""));

("hash",hCode(uin,("ptwebqq")));

Post方式

r=json数据

Cookie:6项参数

Hash算法

publicStringgetHashCode(longlfUin,Stringptwebqq){

int[]n=newint[4];

for(intt=0;t<();t++){

n[t%4]=n[t%4]^(int)(t);

}

String[]u=newString[]{"EC","OK"};

int[]v=newint[4];

v[0]=(int)(lfUin>>24&255^(int)u[0].charAt(0));

v[1]=(int)(lfUin>>16&255^(int)u[0].charAt(1));

v[2]=(int)(lfUin>>8&255^(int)u[1].charAt(0));

v[3]=(int)(lfUin&255^(int)u[1].charAt(1));

int[]ui=newint[8];

for(intt=0;t<8;t++)ui[t]=t%2==0?n[t>>1]:v[t>>1];

char[]hex=newchar[]{'0','1','2','3','4','5','6','7','8','9',

'A','B','C','D','E','F'};

Stringhash="";

for(intt=0;t<;t++){

hash+=hex[ui[t]>>4&15]+"";

hash+=hex[ui[t]&15]+"";

}

returnhash;

}

获取好友列表

Stringurl="/api/get_ur_friends2";

//请求参数

JSONObjectr=newJSONObject();

("vfwebqq",("vfwebqq"));

longuin=ong(("uin").replace("o",""));

("hash",hCode(uin,("ptwebqq")));

Post方式

r=json数据

Cookie:6项参数

返回数据为json

获取群成员

该方法实际上是获取群详细信息,包括成员,公告之类的

Stringurl="/api/get_group_info_ext2?";

//请求参数

Mapparams=newHashMap();

("vfwebqq",("vfwebqq"));

("gcode",gcode+"");

("t",getRandomCode());

referer="/?v=2&callback=1&id=1";

cookie=("CheckSigCookie_2");

doGet(url+getParamStr(params));

Get方式

Cookie:6项参数

返回数据为json

获取个人资料

Mapparams=newHashMap();

("t",getRandomCode());

cookie=("CheckSigCookie_2");

doGet(url+getParamStr(params));

Get方式

Cookie:6项参数

返回数据为json

本文发布于:2023-03-04 02:24:43,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1677867884130010.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:qq收不到消息.doc

本文 PDF 下载地址:qq收不到消息.pdf

上一篇:浙江的景点
下一篇:返回列表
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26 专利检索|