使用Filddler模拟获取请求参数并保存文件



在一些特殊网页或者App的数据采集过程中,有一些post或者get随机参数是系统加密的,为例模拟请求 获取数据,可以使用Fiddler的Rules-Customize Rules 保存参数到指定文件 ;

1,如果是app,可以先模拟相关操作,然后用Fiddler监控抓包

2,方法:Fiddler-Rules-Customize Rules,里面都是js代码 然后可以在 onBeforeRequest 在请求以前 记录

if (oSession.HostnameIs(“域名”) && oSession.uriContains(“uri的关键字”)){
var filename = “c:/TempFile/fiddler-postBody.log”;
var curDate = new Date();
var logContent = “[” + curDate.toLocaleString() + “] ” + oSession.PathAndQuery +’ ‘ +byteToString(oSession.RequestBody) +”\r\n”;
var sw : System.IO.StreamWriter;
if (System.IO.File.Exists(filename)){
sw = System.IO.File.AppendText(filename);
sw.Write(logContent);
}
else{
sw = System.IO.File.CreateText(filename);
sw.Write(logContent);
}
sw.Close();
sw.Dispose();
}

然后外部加入自定义 byte[]转string 的静态方法

static function byteToString(arr) {
if(typeof arr === ‘string’) {
return arr;
}
var str = ”,
_arr = arr;
for(var i = 0; i < _arr.length; i++) {
var one = _arr[i].toString(2),
v = one.match(/^1+?(?=0)/);
if(v && one.length == 8) {
var bytesLength = v[0].length;
var store = _arr[i].toString(2).slice(7 – bytesLength);
for(var st = 1; st < bytesLength; st++) {
store += _arr[st + i].toString(2).slice(2);
}
str += String.fromCharCode(parseInt(store, 2));
i += bytesLength – 1;
} else {
str += String.fromCharCode(_arr[i]);
}
}
return str;
}