使用Fiddler将响应数据保存到指定文件

最近有一个简单的需求,就是使用Fidder把去向特定IP和URL的HTTP请求标注起来,并且保存到指定文件中去。下面是实现的FiddlerScript脚本,供参考

  1. 筛选指定条件的请求,在发起前拦截
static function OnBeforeRequest(oSession: Session) {
       // 筛选指定条件的请求
        if (oSession.HostnameIs("118.145.4.46") &&
           oSession.HTTPMethodIs("POST") &&
           oSession.uriContains("/member/monitor/customerhold!sum.action")) {
               oSession["ui-color"] = "red";
        }
}

2.设置菜单栏接口开关

    // 菜单栏名称
    public static RulesOption("Automatically Dump Summary Data")
    var m_AutoDumpSumData: boolean = false;

3.请求完成后,将数据包按时间格式指定文件名并保存
方法一:

static function OnDone(oSession: Session) {
        if (null == Session){
            return;
        }
        // 筛选指定条件的请求
        if(m_AutoDumpSumData){
            if (oSession.HostnameIs("118.145.4.46") &&
                oSession.HTTPMethodIs("POST")){
                var dSessionId = oSession.id;
 
                // 时间格式化
                var date = new Date();
                var month = date.getMonth() + 1;
                var strDate = date.getDate();
                var strHours = date.getHours();
                var strMinutes = date.getMinutes();
                var strSeconds = date.getSeconds();
                var strMilliSeconds = date.getMilliseconds();
 
                if (month >= 1 && month <= 9) {
                    month = "0" + month;
                }
                if (strDate >= 0 && strDate <= 9) {
                    strDate = "0" + strDate;
                }
                if (strHours >= 0 && strHours <= 9) {
                    strHours = "0" + strHours;
                }
                if (strMinutes >= 0 && strMinutes <= 9) {
                    strMinutes = "0" + strMinutes;
                }
                if (strSeconds >= 0 && strSeconds <= 9) {
                    strSeconds = "0" + strSeconds;
                }
                if (strMilliSeconds >= 0 && strMilliSeconds <= 9) {
                    strMilliSeconds = "00" + strMilliSeconds;
                }else if(strMilliSeconds >= 10 && strMilliSeconds <= 99){
                    strMilliSeconds = "0" + strMilliSeconds;
                }
 
                var currentdate = date.getFullYear() + month + strDate
                    + '_' +strHours + strMinutes + strSeconds + '_'+ strMilliSeconds;
 
                // 保存指定文件名到指定位置
                if(oSession.uriContains("/member/monitor/customerhold!sum.action")) {
                    var outFileName = 'C:/Work/origin/customerhold_sum_' + currentdate +'_'+dSessionId+'.txt';
                    var parsedFileName = 'C:/Work/parsed/customerhold_sum_' + currentdate +'_'+dSessionId+'.txt';
                    oSession.SaveResponseBody(outFileName);
 
                    // 执行文件处理
                    System.Diagnostics.Process.Start("C:/Work/parser/Parser.exe",outFileName+" "+parsedFileName);
                }
            }
   }     

方法二:

if (oSession.fullUrl.Contains("www.baidu.com"))
        {
            var fso;
            var file;
            fso = new ActiveXObject("Scripting.FileSystemObject");
            
                file = fso.OpenTextFile("D:\\http\\Interface.txt",8 ,true, -2);
                file.writeLine("Request url:" + oSession.url);
                file.writeLine("Request header:" + "\n" + oSession.oRequest.headers);
                file.writeLine("Request body:" + oSession.GetRequestBodyAsString());
                file.writeLine("\n");
                file.close();
    
        }

你可能感兴趣的:(测试,网络相关,测试开发工程师成长记录)