WEB版微信协议部分功能分析

更新

不知道是不是因为网页版微信的console.log问题被发现(可以看看知乎这里),中秋假期里出了新版本,有一些地方改了。但具体哪里改了还没时间去深究,不过可以发现同步更新的时间间隔改成了25s,如下图:
同步间隔25s

可以对比原来的27s间隔(点我)

有发现其他改变的地方的朋友有兴趣的话可以提出来,大家一起交流。

2016-09-20更新


因为项目需要,对网页版微信的通信过程做了一番研究。以下是探索过程中的分析笔记。

登录

1. 获取UUID

首先,我们打开浏览器端发起登陆请求,系统返回一个唯一的uid,并将uid的信息绘制成二维码返回给用户。
这里写图片描述

请求:

url https://login.wx.qq.com/jslogin
method GET
Params appid:wx782c26e4c19acffb,应用ID(固定值)
redirect_uri:https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
fun : new
lang : en_US 或 zh_CN,浏览器的语言
_ : 1466394395577,时间戳(ms,js中的实现为new Date)

%2F是’/ ‘的URL编码

返回数据(String):
window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
如下:
这里写图片描述

2. 显示二维码

得到uuid之后,请求二维码:
https://login.weixin.qq.com/qrcode/wYGuImiikg==

返回的数据:
一张二维码图片

3. 等待扫码登录

url https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login
method GET
params loginicon : true
uuid : 获取到的uuid
tip : 1-未扫描 0-已扫描
r : 1698811404(时间戳取反,js中的实现:~new Date)
_ : 时间戳


返回数据(String):

window.code=xxx;

xxx值可以是:
    408 登陆超时
    201 扫描成功
    200 确认登录

如下:
(1)如果一直没有扫描,则得到408返回码
这里写图片描述

(2)扫描成功后,得到201返回码:
这里写图片描述

扫描成功后网页上会出现你的账号头像,userAvatar后面的字符串是将要登录账号的头像(直接将userAvatar后面的字符串放入地址栏就可以得到你的头像)

(3)登录成功,得到200返回码:
这里写图片描述

登录成功后的返回数据(String):

window.code=200;
window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=AXMhC-q8hFm1YagQCIfejW0W@qrticket_0&uuid=wYGRJ91k7A==&lang=en_US&scan=1466408041";

PS:scan值为时间戳(s),js中的实现为Date.now()


登录成功之前,每隔27s左右就会重新确认状态,如下:
这里写图片描述

4. 获取登录参数(uin、skey、sid、pass_ticket)

请求:
https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=ATB6rg04PsHA1mpklaCZd2Tu@qrticket_0&uuid=AaGxsJd1kQ==&lang=zh_CN&scan=1467183053&fun=new&ve

  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 49
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值