美文网首页
web api实现微信机器人遇到的坑

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

作者: icecooly | 来源:发表于2017-07-25 23:05 被阅读0次

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);

相关文章

网友评论

      本文标题:web api实现微信机器人遇到的坑

      本文链接:https://www.haomeiwen.com/subject/ucwgkxtx.html