有一个高中微信搞笑群,经常发一些搞笑的图片,但是发回来后是撤回的,如果我不小心就看不到了微信网页版`,所以我考虑如何查看撤回的图片或文字。
这个想法是这样的,当微信收到撤回消息的请求时,撤回的响应包将被更改,这样微信就无法撤回,微信APP就更难参与,只需使用微信网页版来抓取包来修改它。
关于微信网页版的抓包其实比较复杂,主要是经常抓包失败,网页打不开(支付宝、淘宝也是,看来他们的https协议更安全,代理不好,解决了),为此专门做了一个虚拟机,配置是xpsp3+搜狗浏览器6.3.8.22061+v4.6.2.32002。
打开,设置网址,如图所示:
打开搜狗浏览器设置代理服务器:
在浏览器中访问时,浏览器将显示以下屏幕截图,指示代理成功:
将显示以下内容以指示捕获已成功:
微信手机扫描二维码并成功登录:
截获的数据包如下所示:
介绍接收消息和回调消息的区别:收到消息时,微信响应数据包 = 1 是引入的消息:
当收到召回消息 = 10002 时,是召回提醒:
要查看召回消息,只需将 “”: 10002 替换为 “”: 1,然后将其替换为友好消息。
编辑下面的脚本以自动替换指定的响应数据:
要编辑脚本,
要下载脚本编辑插件,请单击->规则->规则,按照提示安装插件,重启,截图如下:
编辑脚本,使其自定义响应包中指定的替换微信网页版`,直接编辑函数,然后按如下方式替换它:
static functionOnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode== 304) {
oSession["ui-hide"] ="true";
}
if(oSession.GetResponseBodyAsString().Contains('"MsgType": 10002')){
// Remove any compression orchunking
oSession.utilDecodeResponse();
var oBody =System.Text.Encoding.UTF8.GetString(oSession.responseBodyBytes);
// Replace all instances of the DIVtag with an empty string
//var oRegEx =/]*>(.*?)<\/div>/gi; //oBody = null;
varstrBody=oBody.replace('"MsgType": 10002','"MsgType": 1');
// Set the response body to thediv-less string
//oSession.utilSetResponseBody(strBody);
var resourse=/"Content":"(.*)"/gi;
var resourse1='"Content":"以上为撤回消息"'; //
varstrBody=strBody.replace(resourse,resourse1);
//FiddlerObject.alert(strBody);
oSession.utilSetResponseBody(strBody);
}
}
保存,你就完成了!!
通过发送一段文本,然后按如下方式收回它来测试它:
查看数据包,召回消息数据包已被直接替换:
这样,微信网络版始终处于打开状态,您可以查看所有已撤回的消息
*本文原作者:未经许可禁止转载