微信协议pc微信协议

news/2024/11/8 14:43:31/

最近在做个微信机器人,所以研究了网页版的微信协议及相关接口,在这里简单总结一下。
从表面上看,对于网页版微信我们的使用流程是这样的:
很简单,只有四步,但如果细化到内里细节的话,上面这简单四步的背后其实隐藏很多其他的逻辑。比如说网页微信是怎么知道手机已经扫码了?微信服务器是怎么确定用户此时的登录是有效的?网页微信又是怎么知道新消息过来的?关于这些,我们可以看看下面的流程图:

e68859bc167d45ce85f6360938940b5c.png
而在这个流程中,主要涉及以下几个接口:
UUID获取接口
登录二维码下载接口
二维码扫描状态查询接口
登录页面跳转接口(获取登录后的关键参数)
登录初始化接口(获取同步密钥SyncKey)
心跳检测接口(查询是否有新消息)
消息拉取接口
消息发送接口
UUID获取接口:
url:https://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==
登录二维码下载接口:
二维码扫描状态查询接口:
url:https://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”;
登录页面跳转接口(获取登录后的关键参数):
url:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage
method:GET
request parameter:
response:0OKxxxxxxxxx
xxx1
登录初始化接口(获取同步密钥SyncKey):
url:https://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
心跳检测接口(查询是否有新消息):
url:https://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: 有新消息

5aff428c90ff4ef8875f0da699f82413.png
消息拉取接口:
url:https://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(消息列表)
消息发送接口:
url:https://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": "" }, ... }

 

 

 


http://www.ppmy.cn/news/799049.html

相关文章

Ubuntu下安装微信(electronic-wechat)

谢天谢地,谢计算机大佬,在linux下搞出微信,没微信,办公还真是不行,虽然有其它的传输方式,但总觉没有那么方便呀"。这真是个奇迹。 1.安装包 大佬的wechat for linux github链接: https://github.com/…

win10 UWP FlipView

FlipView 可以让用户逐个浏览的项目集合 <FlipView Grid.Row"0" Height"100" Margin"10,10,10,10"><Image Source"Assets/QQ.png"/><Image Source"Assets/搜狐.png"/><Image Source"Assets/暴风…

Ubuntu 下安装微信客户端

本文图片等部分资源搬运的作者的。感谢&#xff01; Ubuntu 下微信还没有官方客户端&#xff0c;不过已经有第三方了&#xff0c;并且在持续维护&#xff0c;用的是网页版的接口&#xff0c;使用起来效果和 Windows 下的体验差不多。上一张效果图。 1. 下载压缩包 https://gi…

Ubuntu 安装微信,网页版无法登陆

使用 ubuntu 五六年了&#xff0c; 我的微信就是天选之子&#xff0c; 网页版无法登陆&#xff0c;也试过其他各种办法&#xff0c;都是无法登陆&#xff0c;导致偶尔发个文件还要切换系统&#xff0c;非常麻烦,工作沟通也是天天抱个手机&#xff0c; 如果你也是这样&#xff0…

ubuntu 安装微信(wechat)

软件介绍 Wine &#xff08;“Wine Is Not an Emulator(Wine不是一个模拟器)” 的缩写&#xff09;是一个能够在多种 POSIX-compliant 操作系统&#xff08;诸如 Linux&#xff0c;Mac OSX 及 BSD 等&#xff09;上运行 Windows 应用的兼容层。 微信&#xff08;WeChat&#…

Ubuntu 安装微信客户端

文章目录 1、方案一&#xff1a;简单粗暴2、方案二&#xff1a;3、方案三&#xff1a;4、扫码登录 1、方案一&#xff1a;简单粗暴 打开UbuntuSoftware搜索electronic-wechat,然后点击install 2、方案二&#xff1a; 下载最新版本地址&#xff1a;https://github.com/geeeee…

win10 uwp 如何开始写 uwp 程序

本文告诉大家如何创建一个 UWP 程序。 这是一系列的 uwp 入门博客&#xff0c;所以写的很简单 本文来告诉大家如何创建一个简单的程序 安装 VisualStudio 在开始写 UWP 需要安装 VisualStudio &#xff0c;安装需要从官网下载程序&#xff0c;或者使用网上大神做的离线安装。…

win10 uwp 参考

态度随意申请专栏&#xff0c;没想到通过 看了我的博客&#xff0c;都是在别的大神博客看到&#xff0c;然后修改他们的 我看到的大神博客 东邪独孤 http://www.cnblogs.com/tcjiaan/ 老周&#xff0c;买了他的《Windows 10 应用开发实战》写的还好&#xff0c;只是代码没用…