web api实现微信机器人遇到的坑

Github地址:https://github.com/icecooly/WeixinAutoChat

第一坑:网页微信怎么抓包?

mac下推荐使用Charles

image.png
image.png
image.png

(注意:一定不能开启VPN,否则抓不了包,这里差点坑死我了)

第二坑:rr

有几个接口是需要rr(时间戳取反)

int now=(int) System.currentTimeMillis();
return (~now)+"";

第三坑:syncCheck报错

https://webpush.wx.qq.com/cgi-bin/mmwebwx-bin/synccheck
https://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck
这个接口因为换了host,cookie需要自己带上,否则会报错
我使用的是Okhttp3
addHeader("cookie", WxCookieJar.cookieHeader());

第四坑:webwxsync返回的消息数量一直在增加

最终发现是DeviceID的问题,原来以为DeviceID是固定的,没想到是每次都随机
this.DeviceID="e"+StringUtil.randomNumbers(15);

第五坑:wx.qq.com和wx2.qq.com

刚开始一直都使用wx2.qq.com,但发现换了一个微信就不行了
原来每个微信对应的接口host还会有区别
在第一步https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login接口,通过返回值确定host

String redirectUri= Utils.getMatchGroup0(regex,content[1])+"";
String tmpUrl=redirectUri.replaceAll("https://", "");
wxRootURL=tmpUrl.substring(0,tmpUrl.indexOf("/")).trim();

第六坑:上传图片

这个只能抓包模仿,代码如下

MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);
builder.addFormDataPart("id","WU_FILE_1");
builder.addFormDataPart("name","image.png");
builder.addFormDataPart("type","image/png");
builder.addFormDataPart("lastModifiedDate",new Date().toLocaleString());
builder.addFormDataPart("mediatype","pic");
builder.addFormDataPart("uploadmediarequest",body);
RequestBody fileBody = RequestBody.create(MediaType.parse(PostRequest.getMimeType(fileName)),content);
builder.addFormDataPart("filename","image.png",fileBody);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容