介绍
微信自动回复其实主要就是登录,接收消息,回复消息三个功能,微信没有提供方便的API,但是可以分析网页版微信通信原理,通过模拟浏览器来实现需要的功能。下面将给出微信网页版通信原理以及Python具体实现代码。
分析
-获取uuid:
GET
https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi- bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1486743163000
Param _ (13位时间戳)
Response window.QRLogin.code = 200; window.QRLogin.uuid = "4YyQFP2Daw==";
-获取二维码:
GEThttps://login.weixin.qq.com/qrcode/4YyQFP2Daw==
Param 4YyQFP2Daw== 即上面的uuid
Response二维码图片
-监听是否扫描二维码以及是否确认登录:
GET https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=4YyQFP2Daw==
Param uuid 同上
Response
window.code=200;window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=ARxD7GSdBYtNHOxhK0BF0ek-
@qrticket_0&uuid=4YyQFP2Daw==&lang=zh_CN&scan=1486743186";
code = 408 无响应,201 扫描二维码但没有登录(此时响应数据中还包含用户头像图片base64编码的字符串,UserAvatar) 200 登录
redirect_uri 为接下来需要请求的地址
-获取后续访问所需要的key等
GET https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=ARxD7GSdBYtNHOxhK0BF0ek-@qrticket_0&uuid=4YyQFP2Daw==
&lang=zh_CN&scan=1486743186p
Param URL为上次返回的redirect_uri 参数已经带上了
Response
<error><ret>0</ret><message></message><skey>@crypt_828c27e0_e98d62f6954235194f2b1252943f25ad</skey><wxsid>0zEvAdWKm9ZZgYVn</wxsid><wxuin>1564527827</wxuin><pass_ticket>OLxGHwqL%2BWNArxvXaqjDy06qzdrSojq6DJwiBF19sgw2CibZSJBv1WwOXAf