Fiddler 2 高級應用(一)


        我們來看一下Fiddler的可擴展性,現在好的軟件不是自己做到最好,而是開放一個接口給互聯網的程序員們,

讓大家為這個軟件增添更多的功能。同時也可以使這個年代想要個性的人們定制屬於自己風格的軟件。我們熟知的就有Firefox、Eclipse。

         首先聲明:今天所講的內容屬於Fiddler的高級應用,一般有此需求的人不多。目前沒有此需求的人,可以不看本節內容。

         今天我們來配置Fiddler中的Web會話列表頂部的列的內容。

頂部列大小的調整、前后位置的調整、和會話內容的排序。

     通過使用鼠標拖動一個列到其它列的邊緣然后放開鼠標,這樣就可以調整列頭在整個列表中的前后順序。通過使用鼠標拖動一個列的邊緣就可以改變本列的大小。通過單擊某一列的列頭就可以對本列的會話列表進行排序。

    Fiddler會記住整個列的布局設置,包括前后列的順序,大小等。當Fiddler重啟之后,就會恢復這些布局,但是Fiddler不記住對會話列表排序功能,通常,在Fiddler重啟之后,它會按照ID的升序來對會話列表進行排序。

添加自定義列

你可以通過三種方式添加自定義列。

1.使用QuickExec命令行為當前的調試實例添加一個自定義列。

在Fiddler 2.2.8.5及其以上版本,你可以通過使用QuickExec命令行添加一個自定義列。

具體語法如下:

cols add [Title] FlagName 

你可以鍵入下面的命令:

cols add @Request.Accept
或者

cols add "Client IP Address" X-CLIENTIP

想要獲取合法的flagnames接着看第三種方法。

注意:通過QuickExec,命令行添加的列在每一次Fiddler重啟之后都會被刪除,

想要創建永久性的自定義列,請接着往下看。。。

2.FiddlerScript BindUIColumn Attribute

通過FiddlerScript, 你可以添加一個BindUIColumn方法。

例子代碼

 

       public static BindUIColumn("HTTPMethod")
       function CalcMethodCol(oS: Session){
              if (null != oS.oRequest) return oS.oRequest.headers.HTTPMethod; else return String.Empty;
       }

或者

 

       public static BindUIColumn("Time Taken")
       function CalcTimingCol(oS: Session){
 
       var sResult = String.Empty;
         if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest))
         {
           sResult = String.Format("{0:h:mm:ssss.ffff}",
           (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest));
         }
         return sResult;
      
}

 

Fiddler將會在每一個會話中運行這個方法來生成自定義列。

注意:為了避免出現異常或者錯誤,一定要確保你的代碼足夠的強壯,

在調用對象之前一定要先確保對象存在!

3.FiddlerScript AddBoundColumn

還可以在FiddlerScript中調用AddBoundColumn() 方法。

第一個參數是要顯示的列名,第二個參數是默認的列的寬度,第三個參數是一個Fiddler Session Flag 字符串,或者一個以@為前綴的請求頭或者響應頭的名字,或者一可以返回字符串的JavaScript函數。

例子代碼:

       static function Main()
       {
              FiddlerObject.UI.lvSessions.AddBoundColumn("ClientPort", 50, "X-ClientPort");
              FiddlerObject.UI.lvSessions.AddBoundColumn("SentCookie1", 60, getSentCookie);
              FiddlerObject.UI.lvSessions.AddBoundColumn("SentCookie2", 60, "@request.Cookie");
              FiddlerObject.UI.lvSessions.AddBoundColumn("ReturnedCookie", 60, "@response.Set-Cookie");

      
}

       static function getSentCookie(oS: Session){ if (null != oS.oRequest) return oS.oRequest["Cookie"]; }

通過 IFiddlerExtension, 你可以使用AddBoundColumn 方法, 傳遞一個 getColumnStringDelegate 作為第三個參數.

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM