Fidder Script 保存请求信息

环境:
windows 7
Fidder 5.0

需求:要抓包的时候,要保存相关的请求信息,如:地址、参数、返回等

可以使用Fidder Script 来实现,步骤如下:
1. 在主界面中,按快捷键[ ctrl + r ]就可以打开其默认的脚本文件,前提已安装其自带的编辑器【Fidder ScriptEditor】,如图:

Fidder ScriptEdirot

2. 此脚本使用的是语言是 --> JScript.Net  类似C#,要深入的话,自己学语法吧

3. 主要函数:

OnBeforeResponse ->响应、OnBeforeRequest -> 请求、OnExecAction-> 异常

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. 保存的时候,会自动编译并执行脚本检查,注意看错误提示