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