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


而在这个流程中,主要涉及以下几个接口:
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: 有新消息


消息拉取接口:
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": "" }, ... }

微信协议pc微信协议相关推荐

  1. 用javascript教你打造一个免费的PC微信机器人《二》

    发送消息的后台逻辑 从手机微信,PC微信,发送文本消息.图片消息.语音等消息,首要的一步:选择你要发送消息的具体对象,实际就是选择你通讯录里面的好友(包括好友,群).但真正微信后台的处理,是用到了微信 ...

  2. 使用java做一个能赚钱的微信群聊机器人(2020年基于PC端协议最新可用版)

    前言 微信群机器人,主要用来管理群聊,提供类似天气查询.点歌.机器人聊天等用途.由于微信将web端的协议封杀后,很多基于http协议的群聊机器人都失效了,所以这里使用基于PC端协议的插件来实现. 声明 ...

  3. PC微信协议 小程序数据接收处理

    ## 微信小程序协议 先抓包一个小程序进程的返回数据 pkg 大概如下格式 17 //协议状态位 03 03 //协议类型 小程序 07 99 //content 长度 BB 81 24 B3 67 ...

  4. PC微信协议 CDN上传之filecrc算法

    微信的cdn文件上传里面有一个参数filecrc,一开始我以为就是普通的crc32. 但是发现我计算出来的与微信的始终不一致.后来发现是微信的计算方式不一样导致. 这里贴出PC微信的filecrc算法 ...

  5. 不封号PC微信协议|微信iPad协议稳定|企业微信Api,群发多发,私有化部署解决方案、企业微信协议

    微信协议就是基于微信IPad协议的智能控制系统,利用人工智能AI技术.云计算技术.虚拟技术.边缘计算技术.大数据技术,打造出智能桌面系统RDS. 智能聊天系统ACS .智能插 件系统PLUGIN .云 ...

  6. 微信SDK非ipad协议

    微信SDK非ipad协议 无需扫码登录.可收发朋友圈.查看朋友圈.朋友圈互动点赞.评论. 好友列表.微信消息收发.发文本消息.图片消息.名片消息.动图表情.发文件.删好友 添加好友.微信转账.微信红包 ...

  7. 微信ipad协议,微信开发API接口

    最近公司需求开发一套自定义的微信机器人,需求是可以自动聊天,自动回复,发朋友圈,转发语音,以及自动添加好友等,还可以取聊天内容保存自己数据库里,what ????微信还能这么玩????调研开发了3个月 ...

  8. 微信ipad安卓协议,微信开发API接口大全

    微信ipad安卓协议,微信开发API接口大全 目前市面上用于微信个人号的所有API协议,主要包括 web版微信协议, ipad协议 , pc微信协议/mac协议 , hook pc版微信 , hook ...

  9. 微信SDK非微信ipad协议

    微信SDK非微信ipad协议 个人微信号开发sdk非微信ipad协议.非mac协议,非安卓协议 无需扫码登录.可收发朋友圈.查看朋友圈.朋友圈互动点赞.评论.好友列表.微信消息收发.发文本消息.图片消 ...

最新文章

  1. 乐高无限无法进入服务器,乐高无限6.13更新 无法进入游戏问题修复
  2. IceStorm src simple analyse
  3. Swift结构体与类
  4. python day2 python基础 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码...
  5. coverity代码检测工具介绍_兴业证券:静态代码检测最佳实践
  6. 【BIM入门实战】建筑墙体知识全攻略
  7. 单片机 架构 程序 经验总结_单片机“死机”了怎么办?看看一个资深工程师的经验总结...
  8. LeetCode 1335. 工作计划的最低难度(DP)
  9. linux终端运行w3m,linux shell浏览器,终端浏览器w3m参考参数
  10. Rust : codewars的up AND down 算法
  11. 清除zencart分类页多页后面的disp_order sort字符串的方法
  12. android 字体显示框架,XUI 一个简洁而又优雅的Android原生UI框架
  13. JAVA互联网架构师VIP项目实战(完整)
  14. 几个国外广告联盟介绍
  15. android应用程序设计答案,Android移动应用程序设计智慧职教MOOC答案
  16. 5种最热门编程语言的优缺点
  17. 上面两点下面一个三角形_初中数学:相似三角形判定定理证明浅见,来说说你的方法吧...
  18. 推荐计划常见问题解答:有哪些问题是必须的?
  19. 低密度奇偶校验码(LDPC)
  20. 阿里云国际站代理商:美国和香港服务器怎么配置采购?

热门文章

  1. OkHttp实现远程调用
  2. MAC上VSCode无Git源代码管理的解决办法
  3. 字符串转成可计算的数学表达式
  4. Understanding the Users and Videos by Mining a Novel Danmu Dataset
  5. addon游戏_addon_game_mode游戏基本情况设置
  6. Java中带有T Z格式(UTC是世界标准时间)的时间转换为date,string,long类型
  7. [苹果开发者账号]02 申请苹果开发者账号 快速申请邓白氏编码DUNS(提示:抱歉,您暂时不能注册)
  8. MeterSphere案例分享丨88完美邮箱全面提升产品质量的落地指南
  9. 树莓派配置IP地址和wifi方法
  10. php 星际争霸 面向对象,星际争霸之php面向对象(一)