环境:
windows 7
Fidder 5.0
需求:要抓包的时候,要保存相关的请求信息,如:地址、参数、返回等
可以使用Fidder Script 来实现,步骤如下:
1. 在主界面中,按快捷键[ ctrl + r ]就可以打开其默认的脚本文件,前提已安装其自带的编辑器【Fidder ScriptEditor】,如图:
2. 此脚本使用的是语言是 --> JScript.Net 类似C#,要深入的话,自己学语法吧
3. 主要函数:
4. 根据需要,可在相应的方法添加自己的脚本代码,我的代码如下:
static function OnBeforeResponse(oSession: Session) { if (m_Hide304s && oSession.responseCode == 304) { oSession["ui-hide"] = "true"; } //滤无关请求,只关注特定请求 if (oSession.HostnameIs("api.kkk.net") && oSession.uriContains("/api/v1/")) { // 标红 oSession["ui-backcolor"] = "red"; //消除保存的请求可能存在乱码的情况 oSession.utilDecodeResponse(); // 保存的文件 var filename = "c:/response.log"; // 请求地址 var logContent = '["api_url"=>"' + oSession.PathAndQuery.Replace('/api/v1','')+'", '; // 请求 POST参数 var postData = oSession.GetRequestBodyAsString(); // 响应结果 var st = oSession.GetResponseBodyAsString(); var responseData = logContent +'"api_args"=>"' +postData+ '",'+'"api_response"=>'+"'"+ st.Replace("'","") + "'],"; // 文件句柄 var sw : System.IO.StreamWriter; if (System.IO.File.Exists(filename)){ sw = System.IO.File.AppendText(filename); sw.Write(responseData); } else { sw = System.IO.File.CreateText(filename); sw.Write(responseData); } sw.Write("\r\n"); sw.Close(); // 注意,使用如下代码,多个请求的时候,会报错 // sw.Dispose(); }
5. 保存的时候,会自动编译并执行脚本检查,注意看错误提示