微信协议网页版微信协议解析

16 篇文章 5 订阅
11 篇文章 2 订阅

最近在做个微信机器人,所以研究了网页版的微信协议及相关接口,在这里简单总结一下。

从表面上看,对于网页版微信我们的使用流程是这样的:

很简单,只有四步,但如果细化到内里细节的话,上面这简单四步的背后其实隐藏很多其他的逻辑。比如说网页微信是怎么知道手机已经扫码了?微信服务器是怎么确定用户此时的登录是有效的?网页微信又是怎么知道新消息过来的?关于这些,我们可以看看下面的流程图:

而在这个流程中,主要涉及以下几个接口:

UUID获取接口

登录二维码下载接口

二维码扫描状态查询接口

登录页面跳转接口(获取登录后的关键参数)

登录初始化接口(获取同步密钥SyncKey)

心跳检测接口(查询是否有新消息)

消息拉取接口

消息发送接口

UUID获取接口:

urlhttps://login.wx.qq.com/jslogin

method:GET

request parameter

response:window.QRLogin.code = 200; window.QRLogin.uuid = "gdl0dOM6cg==“;

window.QRLogin.code为请求响应结果,200表示成功

window.QRLogin.uuid后面为 uuid,这里的 uuid 是 gdl0dOM6cg==

登录二维码下载接口:

二维码扫描状态查询接口:

urlhttps://login.wx.qq.com/cgi-bin/mmwebwx-bin/login

method:GET

request parameter

response:这里的返回值有四种可能

参数校验失败:window.code = 400;

未扫码未登录:window.code = 408;

已扫码未登录:window.code = 201;

已扫码已登录:window.code=200;window.redirect_uri="https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=AyTxRevj7IxauFXHBvH_BVIl@qrticket_0&uuid=IeqFbW6eJQ==&lang=zh_CN&scan=1523256945”;

登录页面跳转接口(获取登录后的关键参数):

urlhttps://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage

method:GET

request parameter

response:0OKxxxxxxxxx

xxx1

登录初始化接口(获取同步密钥SyncKey):

urlhttps://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=129620808

method:POST

request parameter:JSON格式

{

BaseRequest: {

Uin: 登录关键参数wxuin,

Sid: 登录关键参数wxsid,

Skey: 登录关键参数skey,

DeviceID: 随机数

}

}

response:JSON格式,里面有个SyncKey字段,数据结构是一个List,List 里面的元素 e 是 key-value 的模式,后续心跳请求的时候通过 e1.key_e1.value | e2.key_e2.value 的格式拼装成 synckey

心跳检测接口(查询是否有新消息):

urlhttps://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck

method:GET

request parameter

response:window.synccheck = { retcode: "0", selector: "0" }

retcode:0( 0 表示请求成功)

selector

0: 无消息

2: 有新消息

消息拉取接口:

urlhttps://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsync

method:POST

request parameter:有两部分,url拼接 和 POST 都要

URL 拼接:sid 和 skey

POST:

{

BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },

SyncKey: xxx,

rr:

}

response:JSON格式。请求成功时有两个关键字段,SyncKey(新的同步密钥)和 AddMsgList(消息列表)

消息发送接口:

urlhttps://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg

method:POST

request parameter:JSON格式{

BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx },

Msg: {

Type: 1 文字消息,

Content: 要发送的消息,

FromUserName: 自己的ID,

ToUserName: 好友的ID,

LocalID: 与clientMsgId相同,

ClientMsgId: 时间戳左移4位随后补上4位随机数

}

}

response:JSON格式

{ "BaseResponse": { "Ret": 0, "ErrMsg": "" }, ... }

以上便是网页版微信的相关协议逻辑和接口解析,主要包含了登录以及消息发送的相关接口。此外,文章部分内容参考了 https://segmentfault.com/a/1190000004471678 这篇文章。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 微信协议是指在Windows操作系统上运行的微信软件所采用的通信协议微信是一款流行的即时通信软件,通过Windows 微信协议,用户可以在电脑上使用微信进行文字、语音、图片和视频等多种形式的交流。 Windows 微信协议遵循了微信的通信规则和协议,它建立了一种标准的数据传输方式,确保了用户在使用微信时的稳定性和安全性。这个协议使用了加密技术,确保了用户在使用微信时发送和接收的信息不会被未经授权的人获取。 使用Windows 微信协议,用户可以登录自己的微信账号,查看和发送消息,添加和删除好友,创建和加入群组,以及进行语音和视频通话等功能。协议还支持消息的发送和接收状态的标识,以及消息的发送时间和接收时间的展示。 除了基础的通信功能,Windows 微信协议还支持一些高级功能,比如支付功能、分享功能、定位功能等。用户可以通过微信在Windows操作系统上进行各种操作,比如通过微信支付购买商品、通过微信分享内容到朋友圈、通过微信定位功能分享自己的位置等。 总而言之,Windows 微信协议在Windows操作系统上提供了丰富的微信功能,使用户能够更加方便地进行各种形式的交流和分享。通过使用Windows 微信协议,用户可以在电脑上获得类似于手机上使用微信的体验,为用户提供了更加便捷和多样化的交流方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值