Github地址:https://github.com/icecooly/WeixinAutoChat
第一坑:网页微信怎么抓包?
mac下推荐使用Charles
(注意:一定不能开启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);