QQ协议抓取

浮夸小生。
2019-09-27 / 0 评论 / 932 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2020年12月19日,已超过1316天没有更新,若内容或图片失效,请留言反馈。

作为 Tentcent QQ 的用户怎么能少得了去研究呢?人始于好奇心,只有去发现了解才能懂得更多。至此,给大家分享自己抓的 QQ 协议的相关内容,供大家学习。

 

近期…也不能算是近期吧,一次偶然的 QQ 第三方登录想分析下登录成功后的 Cookie,可能当时也回忆起 QQ 很多服务都是通过 skey 来鉴权的。所以应该能通过模拟扫描登录来操作签到之类的,不过经过大致的分析,各个地方登录得到 skey 可以操作的东西也是不一样的,比如是在腾讯业务登录的,那么 Qzone 就无法操作,反过来也是一样的。

实现的过程是这样的:

流程:
扫描二维码 > 确认登录 > 发起请求
模拟流程:
ptqrshow[请求二维码并记录Cookie] > xlogin[页面Cookie] > ptqrlogin[获取二维码状态] >? 登录成功 > check_sig[二次登录]
                 ↓                           ↓                                       ↓
               qrsig             qrsig, pt_login_sig                                skey

 

那么,一起来开始一场紧张刺激的模拟之旅吧!

首先,你需要懂得一门编程语言,其次就是得拥有一台电脑,如果你觉得不困难的话移动设备也是可行的。

 

First, 获取二维码。在这里我们仅需要使用 GET 请求即可。

请求地址:

https://ssl.ptlogin2.qq.com/ptqrshow?appid=715030901&e=2&l=M&s=3&d=72&v=4&t=0.{时间戳}&daid=73&pt_3rd_aid=0

先做个简单的介绍,这个是 ptqrshow 上面所提到的”请求二维码”的 API,715030901呢,是腾讯登录业务的 产品识别码 ,腾讯下的任何一款需要登录的产品都会有,包过第三方,都会分发一个这样的 APPID ,看到后面 t= 参数后的 {时间戳} 了吧,把它替换成 当前时段的时间戳 即可。
当然了,这小巧的身体里可不只是返回二维码那么简单,还藏着十分重要的大宝贝 (指 qrsig,对于此处,我们还需要获取这个页面所包含Cookie里的 qrsig,对于我的猜测是二维码的ID,当然这是十分重要的,请保存下来,后面需要使用。

 

大致的Cookie长这样:

 

Second, 获取页面Cookie。同样的,我们仅需要 GET 。

请求地址:

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=73&hide_close_icon=1&pt_no_auth=1&s_url=https%3A%2F%2Fqun.qq.com%2Fmember.html%23

此处是上述提到的 xlogin ,当然,这里请求结果返回的是HTML,不用管它,保存这个页面的Cookie就好,记得是全部。
之后全程需要,并将上面获取到的 qrsig  插入进去。

 

好的,目前我们已经得到了 qrsigpt_login_sig 。非常好,我们已经进行到一半了!

Third, 以心跳包的方式获取二维码状态,当然了,请使用 GET。

此处十分关键,请仔细阅读,如有任何疑问请在本文下方评论。

 

No.1 拼接 API 地址。

https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqun.qq.com%2Fmember.html%23&ptqrtoken={ptqrtoken}&ptredirect=1&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0-{时间戳}&js_ver=90305&js_type=1&login_sig={pt_login_sig}&pt_uistyle=40&aid=715030901&daid=73&has_onekey=1&

在看这段文字之前,想必你已经仔细阅读过该 Url 了吧。是的,这是第三部的 ptqrlogin 获取二维码状态。

可以发现,链接里有几个参数是需要填写的。分别是 {ptqrtoken} , {pt_login_sig} , {时间戳},前者 ptqrtoken 既是第一步获取到的 qrsig,对的,读取出来替换就好。而中间呢 pt_login_sig 既是第二步里,所请求的页面Cookie里包含的,依旧。读取出来替换就好。至于末尾的 {时间戳} 呢,不用我多说了吧,当然时段的时间戳。

然后我们需要设置Cookie,即是前两部获取到的 Cookie合集 ,对的,设置就好,否则会 400。

 

No.2 现在尝试请求吧!正常的返回结果是:

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

如果你的结果不是这样的数据格式,而且还无法排错的话,请评论。注意,心跳包推荐是 1次/s

那么,尝试扫码,并确认登录看看返回的结果吧!

 

No.3 通过读取我们可以获取到 ptuiCB 里的一个参数,意义:
66 => 正在等待二维码扫描
68 => 正在等待确认
0 => 登录成功

 

对了!别忘了保存Cookie,并插入到之前的Cookie里面,全局都需要哦。

 

Fourth, 该获取我们想要的 skey 了。

 

同样的,请使用 GET 。 现在,我们需要从上述操作中返回的 ptuiCB 里读取一个Url,这个就是二次登录啦。 请求地址就是上面的那个 Url ,大概长这样:

https://ptlogin2.qzone.qq.com/check_sig?pttype=1&uin=10001000&service=ptqrlogin&nodirect=0&ptsigx=0fe7ffb7e332xcascfqwfqw158ff6c40828d042d51f8e57e2636472d6eed984adqf12dcascf54979bc3688725b4fb7a55e610&s_url=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&f_url=&ptlang=2052&ptredirect=100&aid=549000912&daid=5&j_later=0&low_login_hour=0&regmaster=0&pt_login_type=3&pt_aid=0&pt_aaid=16&pt_light=0&pt_3rd_aid=0

当然,请设置上面所有操作的 Cookie合集 ,否则依旧会返回 400 错误。

 

请求之后不用管里面的返回有什么内容,请直接获取Cookie,我们需要的 skey 就在里面!

skey=@A0IboiylZ;

 

好了,我们现在已经完全模拟成功了,恭喜~

那么,有了 skey 我们可以干什么坏事呢?当然了,来操作QQ哒!

 

关于调戏群签到:

API [POST]:

https://qun.qq.com/cgi-bin/qiandao/sign/publish

Cookie: 之前模拟的所有Cookie合集
参数:
bkn, gallery_info, template_id, pic_id, gc, client, lgt, lat, poi, text

0

评论 (0)

取消