Web QQ API 分析
Web QQ协议分析
本文信息 站在前人的肩膀上 。
本文信息 不定期更新
前言
对Web QQ协议的一些看法
- 整个鉴权模块Cookie、Session、Token全都用上了
- 加密函数压缩混淆后放在JS还是会被找出来,不过只要偶尔换换也很折腾人
- 整个登录流程分了5步,偶尔加一步、减一步或者改一步同样折腾人
- 返回数据只提供了返回码而没有描述,因为什么失败了自己猜去吧
- 大部分请求都同时检查了Cookie、Referer、User-Agent和Origin(只有Post请求有)
- 对一些不合理的情况进行了判断,比如登录后却没有发起接收消息的
- 请求 对访问频率进行了控制,太频繁的请求也会被拒绝
版本
2015年12月版本的Web QQ协议
Api 数据来源
基本上都是通过Chrome控制台对Smart QQ进行抓包得到的
公共约定:
- 保证请求头中包含正常的User-Agent、Referer、Cookie等信息,如果是Post请求需要额外加上Origin
- 在大部分情况下(除了获取二维码和确认二维码状态),返回内容均为JSON,其中retcode为请求结果(0为成功),response为返回数据
- 不过还有个特例是发送消息的接口,成功时返回的字段是errCode,失败时才是retcode
- 请求失败后,返回的错误码如果是1000000或1000001,几乎可以认为是缺少了第一条中的某个数据
- 如果请求参数中有t,当前版本不会检验它的值,所以我统一设为0.1,但是实际上它的值一般情况下均为当前时间的unix timestamp
- 如果返回的返回的错误码为1000003,很有可能是你的请求频率过于频繁
登录
获取cookie,用户登录逻辑的模拟。
目标参数
ptwebqq
:保存在Cookie中的鉴权信息vfwebqq
:类似于Token的鉴权信息psessionid
:类似于SessionId的鉴权信息clientid
:设备id,为固定值53999199uin
: 登录用户id(其实就是当前登录的QQ号)
登陆流程
- 获取二维码
- 确认二维码已被扫描
- 获取鉴权参数ptwebqq
- 获取鉴权参数vfwebqq
- 获取鉴权参数uin和psessionid
流程 1 获取二维码
method: Get
url: https://ssl.ptlogin2.qq.com/ptqrshow?appid=501004106&e=0&l=M&s=5&d=72&v=4&t=0.1
return: 二维码图片 (PNG
)
流程 2 获取二维码扫描状态
method: Get
url: https://ssl.ptlogin2.qq.com/ptqrlogin?webqq_type=10&remember_uin=1&login2qq=1&aid=501004106 &u1=http%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10 &ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert &action=0-0-157510&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10143&login_sig=&pt_randsalt=0
referer: https://ui.ptlogin2.qq.com/cgi-bin/login?daid=164&target=self&style=16&mibao_css=m_webqq&appid=501004106&enable_qlogin=0&no_verifyimg=1 &s_url=http%3A%2F%2Fw.qq.com%2Fproxy.html&f_url=loginerroralert &strong_login=1&login_state=10&t=20131024001
return:
- 扫描前 & 未失效
ptuiCB('66','0','','0','二维码未失效。(3203423232)','');
- 扫描前 & 已失效
ptuiCB('65','0','','0','二维码已失效。(4012918406)', '');
-扫描后 & 认证前
ptuiCB('66','0','','0','二维码认证中。(3203423232)','');
-认证后
ptuiCB('66','0','','0','http://ptlogin4.web2.qq.com/check_sig?xxxxxx','');
- 扫描前 & 已失效
这个请求可以直接轮训请求,直到认证成功后,将返回的地址保存下来用作下次请求。
流程 3 获取 ptwebqq
method: Get
url: 流程 2 返回的 url
referer: http://s.web2.qq.com/proxy.html?v=20130916001&callback=1&id=1
成功后
- HTTP 状态码 302
- 存储 cookie ptwebqq
流程 4 获取 vfwebqq
method: Get
url: http://s.web2.qq.com/api/getvfwebqq?ptwebqq=#{ptwebqq}&clientid=53999199&psessionid=&t=0.1
referer: http://s.web2.qq.com/proxy.html?v=20130916001&callback=1&id=1
url中需要填入上一步获取到的ptwebqq,请求成功后会返回一个JSON,将result.vfwebqq保存下来。
流程 5 获取 psessionid
& uin
method: Get
url: http://d1.web2.qq.com/channel/login2
referer: http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2
表单数据只有一个,Key为
r
Value (JSON)
{"ptwebqq": "#{ptwebqq}","clientid": 53999199,"psessionid": "","status": "online",
}
> 动态参数 `ptwebqq`
> 储存 `result.uin` & `result.psessionid`
> 返回值 `result.vfwebqq` 无用
> 成功后有效期约2天,Web QQ 允许多页面同时在线但会出现接口冲突
资料获取 todo
消息收发 todo
其他 todo
来源
- http://www.scienjus.com/webqq-analysis-1
- http://www.scienjus.com/webqq-analysis-2
- http://www.scienjus.com/webqq-analysis-3
- http://www.scienjus.com/webqq-analysis-4
- http://www.scienjus.com/webqq-analysis-5
Web QQ API 分析相关推荐
- web qq协议分析
WebQQ网页登陆HTTP接口探究 1.研究说明 Tencent在tqq.tencent.com的8000有一个使用HTTP的QQ接口,通过这个接口,可以进行一些基本的操作,如:登陆.登出.改变登陆状 ...
- Web性能API——帮你分析Web前端性能
开发一个现代化的互联网网站是一项复杂的任务,需要各种职能的密切合作以应对用户日新月异的需求.其中,网页的性能直接决定了用户的体验,而随着新型客户端浏览设备的出现与网站功能的日益复杂化,对于性能的专注也 ...
- 【协议分析】Web QQ登陆验证分析
今天开始想写个验证QQ密码的工具,以前写过一个QQ验证器的程序,就拿了那个代码试了一下居然不能同.就到QQ登陆页面去抓包. xmit.jpg (110.62 KB, 下载次数: 111) 下载附件 ...
- Web Audio API实现简单变声效果
前言 想在网页中实现实时音频变声效果该如何实现呢,之前遇到这种处理音视频的需求,可能会想到需要借助C代码实现.但是现在随着浏览器性能的提升.web API的丰富,通过浏览器原生的API也可以操作音频数 ...
- Web动画API教程:可爱的运动路径(Motion Path)
这是介绍浏览器中web动画API的系列教程的第五篇.如果你有什么问题/想法,或者发现我理解错了规范的内容,或是希望我在接下来的文章中对某部分内容进行探讨的话,请在Twitter给我留言吧~@dancw ...
- 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)
DEMO: http://sources.ikeepstudying.com/menu-mail-qq/ 一.这是什么样的一个插件 我们都知道,默认状态下,我们右键web页面,会出现一个上下文菜单,例 ...
- 10个好用的Web日志安全分析工具
首先,我们应该清楚,日志文件不但可以帮助我们溯源,找到入侵者攻击路径,而且在平常的运维中,日志也可以反应出很多的安全攻击行为. 一款简单好用的Web日志分析工具,可以大大提升效率,目前业内日志分析工具 ...
- 【Web】1326- 深入浅出 Web Audio API
前言 2011被提出,同年草案被Google Chrome和Mozilla Firefox实现 在此之前Web音频较为原始,无法应付较为复杂的应用场景,例如Web游戏或互动应用 旨在提供全套Web音频 ...
- HTML 利用 Web Audio API 进行音频可视化
利用Web Audio API 进行音乐可视化 1.什么是 Web Audio API: 官方:Web Audio API 提供了在Web上控制音频的一个非常有效通用的系统,允许开发者来自选音频源,对 ...
最新文章
- 通过Python在Windows或Linux上快速搭建HTTP服务器
- AWS之EC2搭建WordPress博客
- sap和OA之间数值传递2(工程创建)
- 初学微信小程序 TodoList
- 【杂谈】图像识别书看完了感觉不过瘾?这些拓展资料值得你关注一下
- explode() 字符串转换数组
- Centos7 LAMP服务源码搭建
- 20172304 2017-2018-2 《程序设计与数据结构》第六周学习总结
- GitHub推出云端IDE,可在浏览器里使用VS Code了
- linux 如何解压.exe,linux下解压火狐浏览器压缩包 ./filefox 运行可执行程序报错问题...
- c调用python keras模型_tensorflow中调用keras训练模型作为一个计算过程
- php pathseparator,在PHP拥有与命名空间和通过set_include_path()的一个问题
- 通过内网穿透 将本地端口 使其外网可以进行访问 使用花生壳内网穿透 网站访问
- (转)Moblin V2活动映像安装详解
- C#多线程学习笔记(三)
- 开发者必装的软件工具总结
- Java图形用户界面实验
- 运维简历怎么写项目描述_应届生没有工作经验该怎么写简历?
- led灯闪烁代码_如何设置LED灯并使其通过代码闪烁
- 武汉公布304个可售楼盘名单,保证供应稳定市场预期(蚌埠华瑞房地产评估)