前边的文章介绍了逆向、协议抓包、抓包工具的详细使用方法等知识需要了解的朋友点头像去翻看下之前的文章,我来为大家科普一下关于qq登录验证接口?下面希望有你要的答案,我们一起来看看吧!

qq登录验证接口(手把手教你写QQ聊天机器人之smartQQ登陆协议逆向)

qq登录验证接口

前边的文章介绍了逆向、协议抓包、抓包工具的详细使用方法等知识。需要了解的朋友点头像去翻看下之前的文章。

smartQQ的前身是webQQ,webqq大概是10年11时间腾讯推出的,当时webqq功能很全,支持帐号密码登陆,登陆后会挤掉客户端QQ。在13年14年的时候,腾讯下线webQQ,具体原因不详,可能是webQQ的接口相对简单透明,被很多第三方软件利用并滥用QQ服务。后来由smartQQ替代、smartQQ和微信网页版很像,登陆需要手机扫码,不再支持帐号和密码登陆。

本文会带大家研究学习一下如何利用smartqq协议写一个自己的QQ聊天机器人,以加深大家对逆向协议的理解。对这方面感兴趣的朋友可以关注,哪里写的不对还请技术大神在评论区指出。

分析登陆流程:

首先打开抓包软件Fiddler,按照上一篇文章进行设置,准备抓包。

然后在浏览器打开smartQQ(web2.qq.com)

smartQQ

这里首先简单分析下登陆原理。网页给出一个动态的二维码,让手机QQ去扫描。然后还有一个网络请求在不断的监控你是否成功扫描了二维码,如果成功,那么直接转到登陆成功的页面。

登陆流程很简单,我们要自己编程的话,首先要让自己的程序也可以生成上图这个二维码。那么我们去Fiddler里看下,哪个包是生成二维码的?

通过逐条查看或者理解url包含的单词字义,结合请求链接的响应内容,我们确定红圈这个请求是生成二维码的请求。

请求链接为:http://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&e=2&l=M&s=3&d=72&v=4&t=0.78603778152708&daid=164&pt_3rd_aid=0

我们要自己编程去模拟这个请求的话,我们需要搞清楚请求链接是什么,请求方式是get还是post,请求头包含什么,请求链接里各参数是否固定,如果不固定,算法是什么?

通过抓包我们找到这个请求是get,请求链接如上,通过对比多次请求的链接发现参数几乎固定,只有t是一个随机小数。然后看下请求头

发现携带了大量Cookie,所以我们要模拟这个请求,必须先搞清楚这些cookie 是哪个请求下发下来的,继续在Fiddler里寻找

http://xui.ptlogin2.qq.com/cgi-bin/xlogin?daid=164&target=self&style=40&pt_disable_pwd=1&mibao_css=m_webqq&appid=501004106&enable_qlogin=0&no_verifyimg=1&s_url=http://web2.qq.com/proxy.html&f_url=loginerroralert&strong_login=1&login_state=10&t=20131024001

我们找到上图这个请求Set了很多Cookie,所以我们的程序要先去模拟这个请求,拿到Cookie后再去模拟生成二维码的请求。

分析这个链接的各个参数,通过Fiddler的Composer模拟提交调试,发现以上参数都可以固定,不需要特别去逆向每个参数的生成方式。请求头也相对干净,不包含cookie,所以这个链接可以作为我们程序的一个初始化请求。

下面开始编程,实现以上2个请求,我呢工作中主要使用java和c#,下面的代码使用python,不甚熟悉,有错误的地方还请大神们指出。源码在文章末尾会给出下载链接


突然停电。没办法继续写监控是否登录成功和上传源代码,今天就先写到这里,明天会再发一篇接着写完整个登录流程。觉着有用的童鞋请关注下。