文档章节

微信网页版协议分析 资料整理

我是一个文化人
 我是一个文化人
发布于 2017/02/25 17:27
字数 973
阅读 2710
收藏 3

接口的调用步骤:
1、jslogin获取token生成二维码,然后登录状态轮循 login接口;用户扫描后会返回用户头像,可以替换掉二维码表示用户已经扫描过(此时还没有在手机上确认登录)
2、确认登录后,获取cookie webwxnewloginpage
3、初始化,获取密钥 webwxinit
4、报告自己的状态 webwxstatusnotify
5、轮循检查最新消息 synccheck,此时会selector==2。大约每隔25秒检查1次(感觉是服务器端hold住)
6、获取所有联系人 webwxgetcontact
7、获取一批12个联系人详情 webwxbatchgetcontact(此接口可以传递单个用户或群聊的username参数)
8、根据synccheck的结果,获取最近联系人和未读消息列表的 同步消息 webwxsync, MsgType==51
9、批量获取33个联系人详情 webwxbatchgetcontact
10、报告状态 webwxstatreport ,每隔10分钟汇报1次 (主要用于网页执行速度的性能时间统计,貌似可以不用提交)
11、批量获取2个联系人详情 webwxbatchgetcontact

其它注意事项:
1、进入聊天室要发webwxstatusnotify消息,和批量获取用户详情webwxbatchgetcontact;进入单聊不需要以上操作;
2、用户的username每次重新登录都会变化,如何识别同一个用户是个问题,建议用Alias+KeyWord+PYInitial+PYQuanPin,webwxbatchgetcontact接口还会返回 RemarkPYInitial,RemarkPYQuanPin也可以用上?
3、webwxstatreport报告要定期调用,否则会超期?
4、头像要异步加载,同时要传递cookie
5、微信各接口返回的数据格式的比较乱,有js,json,xml,不知微信怎么想的,为何不统一,另外输出也没定义charset头信息,导致在chrome develop tool上显示出乱码(据说firefox里不会乱码)
6、消息类型有: 1 文字 3 图片 51 最新有状态变化的帐号(公众号,微信id,群聊id等,可能值有1 2 5等,感觉像是进入了群聊、查看了公众号属性等操作就会发出op消息【待测试确认】,op id==2表示打开过了群?op id==5表示离开群?iOS设备才有此消息,安卓没有此消息)  10000 添加到群/移除出群的通知 49 公众号文章 43 语音 10002 消息撤回(op消息时,StatusNotifyUserName同时有值,表示通知的对象,一般是群帐号),47 GIF动画图
7、群聊时:群主发消息时,FromUserName是群主,ToUserName是群帐号;其他成员发消息时反过来了,ToUserName是成员帐号,FromUserName是群帐号。如何区分两者?成员发的消息内容Content里是以@xxxx<br/>内容(@后面的编码是群成员帐号),群主发的没有此前缀。
8、webwxnewloginpage登录时设置的cookie超期时间是12小时,如果保持一直在登录状态在后台运行是个问题?

完整消息类型:

MSGTYPE_TEXT: 1,
MSGTYPE_IMAGE: 3,
MSGTYPE_VOICE: 34,
MSGTYPE_VIDEO: 43,
MSGTYPE_MICROVIDEO: 62,
MSGTYPE_EMOTICON: 47,
MSGTYPE_APP: 49,
MSGTYPE_VOIPMSG: 50,
MSGTYPE_VOIPNOTIFY: 52,
MSGTYPE_VOIPINVITE: 53,
MSGTYPE_LOCATION: 48,
MSGTYPE_STATUSNOTIFY: 51,
MSGTYPE_SYSNOTICE: 9999,
MSGTYPE_POSSIBLEFRIEND_MSG: 40,
MSGTYPE_VERIFYMSG: 37,
MSGTYPE_SHARECARD: 42,
MSGTYPE_SYS: 10000,
MSGTYPE_RECALLED: 10002,  // 撤销消息

分析自官网js的接口 

API_webwxdownloadmedia: 'https://' + o + '/cgi-bin/mmwebwx-bin/webwxgetmedia',
API_webwxuploadmedia: 'https://' + o + '/cgi-bin/mmwebwx-bin/webwxuploadmedia',
API_webwxpreview: '/cgi-bin/mmwebwx-bin/webwxpreview',
API_webwxinit: '/cgi-bin/mmwebwx-bin/webwxinit?r=' + ~new Date,
API_webwxgetcontact: '/cgi-bin/mmwebwx-bin/webwxgetcontact',
API_webwxsync: '/cgi-bin/mmwebwx-bin/webwxsync',
API_webwxbatchgetcontact: '/cgi-bin/mmwebwx-bin/webwxbatchgetcontact',
API_webwxgeticon: '/cgi-bin/mmwebwx-bin/webwxgeticon',
API_webwxsendmsg: '/cgi-bin/mmwebwx-bin/webwxsendmsg',
API_webwxsendmsgimg: '/cgi-bin/mmwebwx-bin/webwxsendmsgimg',
API_webwxsendemoticon: '/cgi-bin/mmwebwx-bin/webwxsendemoticon',
API_webwxsendappmsg: '/cgi-bin/mmwebwx-bin/webwxsendappmsg',
API_webwxgetheadimg: '/cgi-bin/mmwebwx-bin/webwxgetheadimg',
API_webwxgetmsgimg: '/cgi-bin/mmwebwx-bin/webwxgetmsgimg',
API_webwxgetmedia: '/cgi-bin/mmwebwx-bin/webwxgetmedia',
API_webwxgetvideo: '/cgi-bin/mmwebwx-bin/webwxgetvideo',
API_webwxlogout: '/cgi-bin/mmwebwx-bin/webwxlogout',
API_webwxgetvoice: '/cgi-bin/mmwebwx-bin/webwxgetvoice',
API_webwxupdatechatroom: '/cgi-bin/mmwebwx-bin/webwxupdatechatroom',
API_webwxcreatechatroom: '/cgi-bin/mmwebwx-bin/webwxcreatechatroom',
API_webwxstatusnotify: '/cgi-bin/mmwebwx-bin/webwxstatusnotify',
API_webwxcheckurl: '/cgi-bin/mmwebwx-bin/webwxcheckurl',
API_webwxverifyuser: '/cgi-bin/mmwebwx-bin/webwxverifyuser',
API_webwxfeedback: '/cgi-bin/mmwebwx-bin/webwxsendfeedback',
API_webwxreport: '/cgi-bin/mmwebwx-bin/webwxstatreport',
API_webwxsearch: '/cgi-bin/mmwebwx-bin/webwxsearchcontact',
API_webwxoplog: '/cgi-bin/mmwebwx-bin/webwxoplog'

参考

https://my.oschina.net/biezhi/blog/618493

http://www.tanhao.me/talk/1466.html/

http://www.tuicool.com/articles/73eiiuv

https://github.com/Urinx/WeixinBot 数据分析的比较细,值得参考!

这个node.js+webdriver版本比较不错

微信通讯协议分析

WeChat-Cloud-Robot

图灵智能客服SDK

http://www.batiaotui.com/
http://www.wqchat.com/

© 著作权归作者所有

我是一个文化人
粉丝 34
博文 336
码字总数 75456
作品 0
广州
技术主管
私信 提问
王爵/wechat-robot

wechat-robot wechat-robot是基于微信网页版协议开发的普通微信号机器人程序,使用Java语言。 微信协议分析 使用 这是一个Maven工程,如果你想在普通项目中运行该程序,需要下载 blade-kit....

王爵
2016/02/22
0
0
CoreThink&OpenCMF技术分享之:浏览器自定义协议

欢迎交流,互联网产品开发解决方案CoreThink&OpenCMF:www.corethink.cn 浏览器自定义协议 一、是什么 正如http://baidu.com, 整个网址称之为url,http部分我们称之为scheme,通过这样的链接,...

CoreThink
2016/08/12
196
0
微信小程序(应用号)资源汇总整理(转)

微信小应用资源汇总整理 开源项目 WeApp - 微信小程序版的微信 wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list wechat-weapp-gank - 微信小程序版Gank客户端 wechat-dribb...

老朱教授
2017/10/09
0
0
liberxue/WechatYUNchart

微信多开多账号机器人 云客服系统 微商营销 系统web协议一键登录 非公众号微信机器人微信群管家 微信自动回复 微信定时发送消息 微信多账号登录 逆向是工具,是我们学习他人软件的方法,而不...

liberxue
2017/07/14
0
0
关于微信和支付宝线下扫码支付代理服务商能做什么

1.1 微信支付 1.1.1 JSAPI网页支付 JSAPI网页支付即前文说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页...

王超23
2017/04/19
598
4

没有更多内容

加载失败,请刷新页面

加载更多

哈希

第一个只出现一次的字符的位置

Garphy
30分钟前
23
0
Centos7.7之离线安装kubectl

Centos7.7,kubernates-1.13.5. 我的Centos7.7上已经安装了kubernates 1.13.5,但是没有kubectl命令,手动安装 浏览器中访问https://storage.googleapis.com/kubernetes-release/release/sta......

克虏伯
33分钟前
33
0
redis原理及应用

一、redis来源 二、数据类型 三、主流的应用场景 四、特性 五、补充 一、 redis来源 redis作者:Salvatore Sanfilippo (antirez),男,意大利人. 需求:一个访客信息追踪网站,网站可以通过...

天子剑毅
40分钟前
35
0
12_多线程

12_多线程 wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器(释放锁)。 notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个...

行者终成事
45分钟前
40
0
图片的切换功能

<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; ......

zhengzhixiang
今天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部