前段时间闲着无聊,突然想起以前玩的QQ机器人,然后作为一条咸鱼,觉得还是有必要翻下身,于是就寻思能不能弄一个微信的聊天机器人给自己找点事。通过对WebChat的抓包,同时也查了一些资料,花了四个晚上终于整了出来。orz
由于只是想做一个自动回消息的聊天机器人,所以像用户信息、好友列表、群组之类的接口就没有去弄了,可能以后有时间会继续接着做吧。同时也欢迎fork & pull request
项目大致上分三个阶段,首先是登录,然后获取消息,最后发送消息。
Tip:
项目用的是WebChat的协议 ,然后WebChat和PC客户端的微信是不能并存的,所以机器人会把客户端的微信顶下去。所以一直让我觉得这个机器人很鸡肋orz,然而这个是微信自己的设定,本咸鱼表示很无奈 -。-
登录
登录阶段一共是两部分,一个就是字面上的登录了;另一个是初始化信息,包括全局的参数信息和必要的个人信息。
登录
- 首先获取UUID,终端的唯一标识符;
- 然后通过UUID生成登录二维码;
- 最后手机微信上扫码确认登录。
获取UUID
说明:
appid
固定为wx782c26e4c19acffb
redirect_uri
要进行URL编码化操作
fun
固定为new
lang
语言格式
1505468334967
时间戳,java下System.currentTimeMillis()
200
表示成功
4aqV8YT42A==
UUID
生成二维码
说明:
不需要传参数,直接拼接url字符串即可,返回的也直接就是二维码图片
轮询扫码结果
说明:
loginicon
固定为true
uuid
上面第一步获取到的uuid
tip
1表示未扫描,0表示已扫描(第一次传1就行,然而刚刚看了下代码好像我一直传的1。。尴尬 = =!)
r
时间戳取反
_
时间戳
window.code
扫描结果,201表示扫描成功,200表示确认登录,还有一个408,表示超时(一直没有扫码)
window.userAvatar
用户头像base64编码
window.redirect_uri
获取初始化信息的重定向Url
初始化
- 初始化全局参数
- 初始化个人信息及最近联系人列表
初始化全局参数
说明:
直接用上面获取的 window.redirect_uri
拼接 &fun=new&version=v2&lang=zh_CN
即可
获取结果如下图
剩下的有时间再写,毕竟最近要发新版本有点忙 -。-