Fiddler 使用教程

一、Fiddler的基本介紹

  Fiddler的官方網站:  http://www.telerik.com/fiddler

  Fiddler官方網站提供了大量的幫助文檔和視頻教程, 這是學習Fiddler的最好資料。

  Fiddler是位於客戶端和服務器之間的HTTP代理,是最強大最好用的Web調試工具之一,它能記錄所有客戶端和服務器的http和https請求,允許你監視,分析請求數據、設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基於事件腳本的子系統,並且能使用.net語言進行擴展。

  你對HTTP 協議越瞭解, 你就能越掌握Fiddler的使用方法。你越使用Fiddler,就越能幫助你瞭解HTTP協議。

  Fiddler無論對開發人員或者測試人員來說,都是非常有用的工具。

二、同類的其它工具

  同類的工具有: httpwatch, firebug, wireshark, chrome審查元素

三、Fiddler的工作原理

  Fiddler 是以代理web服務器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。Fiddler作爲系統代理,當啓用Fiddler時,IE的Proxy設定爲127.0.0.1:8888,因此如果你的瀏覽器在開啓Fiddler之後沒有設置相應的代理,則Fiddler可能無法捕獲到HTTP請求的。只有通過代理的流量才能被Fiddler捕獲到。訪問 127.0.0.1:8888 ,看一下效果:

wKiom1b_56uS-1e9AAFldId9m_s024.png

     當Fiddler退出的時候它會自動註銷,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因爲Fiddler沒有自動註銷,會造成網頁無法訪問(因爲IE代理是系統全局的[系統代理],對整個系統都是有影響的)。解決的辦法是重新啓動下Fiddler。

wKioL1b_4KjSjpdPAAE7oNPvbhg231.png

     能支持HTTP代理的任意程序的數據包都能被Fiddler嗅探到,Fiddler的運行機制其實就是本機上監聽8888端口的HTTP代理。 Fiddler2啓動的時候默認IE的代理設爲127.0.0.1:8888。 通過 IE - Internet 選項 - 連接 - 設置 - Proxy server [高級] ,可以查看到。

wKioL1b_4-mArDMFAAB6pQUgS34279.png

    而其他瀏覽器是需要手動設置的,以Firefox爲例,默認情況下,Firefox是沒有啓用代理的,所以將Firefox的代理改爲127.0.0.1:8888,Fiddler纔可以監聽Firefox瀏覽器的流量。

3.1 chrome / Firefox 瀏覽器默認不會被監聽

  Fiddler安裝之後,默認會在IE瀏覽器中安裝一個Fiddler插件,所以他對IE以及國內基於IE內核實現的各種瀏覽器都能實現監聽,但是其他內核的瀏覽器默認無法監聽。

解決辦法:禁用chrome或Firefox中具有代理功能的插件,並設置127.0.0.1:8888的代理。

Firefox 上通過如下步驟設置代理

  點擊: 菜單 - 選項 - 高級 - 網絡 - 設置. 並配置代理如下:

wKioL1cAWaTDPk_CAABg4Pb_8sA210.png

chrome 上通過SwitchSharp設置

     禁用SwitchSharp或選擇“使用系統代理設置”,或者在SwitchSharp中配置一個代理項(比如名爲fiddler,指向 127.0.0.1,端口 8888),即可。

\

3.2 無法代理本地web服務器的訪問請求

  使用Fiddler時,我們更多的是基於本地程序的調試,可惜Fiddler捕獲不了本地(localhost, 127.0.0.1)的http請求。難道Fiddler就束手無策了麼, 當然不是。

    一般我們訪問安裝在本地的服務器時,使用的localhost或127.0.0.1,默認會繞過Fiddler代理。通過Fiddler特有的方式,可以使本地請求及響應被Fiddler監聽。

    方法一: 在localhost後面加上: .fiddler

    如請求: http://localhost:8080 -> http://localhost.fiddler:8080

    方法二: 在localhost或127.0.0.1後面加上一個點即可。

    如: http://localhost.:8080

3.3 無法捕獲HTTPS會話

    使用Fiddler默認情況下不會捕獲HTTPS會話,需要手動設置。 打開Fiddler,Tools - Fiddler Options - HTTPS

wKiom1cAfbOz3pVrAAB8IC6pRgc785.png

四、Fiddler的基本界面    

  看看Fiddler的基本界面。主要分爲4個區域:菜單欄、工具欄、Web_Sessions、詳情和數據統計面板

wKioL1b_70Kyljk4AAIko_T2ejQ860.png

4.1 Web Sessions

    每一條記錄稱爲一個session,詳細的字段含義如下:

[#]         - HTTP Request的順序,Fiddler 爲你生成的會話列表的ID,從1開始,根據頁面加載請求遞增。

[Result]   - HTTP響應的狀態碼

[Protocol] - 會話使用的協議類型(如:HTTP/HTTPS/FTP)

[Host]      - 請求的主機名

[URL]       - 請求的路徑和具體文件名,也包括GET參數

[Body]      - 響應返回內容的大小,以 byte 爲單位

[Caching]  - 是否使用了緩存,請求的緩存過期時間以及緩存控制header等

[Process]   - 發送本次請求的程序進程的名字及PID

[Content-Type] - 響應的響應頭的 Content-Type 值

[Custom]   - 通過腳本設置的文本域.  Learn more...

[Comments]    - 通過腳本或者在會話列表中右鍵添加的註釋。

在會話列表中默認的文本的顏色從HTTP的響應的狀態繼承而來(紅色代表錯誤,黃色代表需要授權),CONNECT類型爲灰色,

還有返回類型(CSS文件爲紫色,HTML文件爲藍色,JS腳本爲綠色,圖片爲灰色)你可以通過使用ui-color 標誌位來改變和重寫列表的默認顏色。

(提示:ui-color在Fiddler的腳本配置文件中,需要安裝FiddlerScript

爲了查看的方便每一個請求的前面都有一個圖標來表示。

wKioL1cAX7mCv8Z3AAFaAtdRs7Y483.jpg

wKiom1cAZR7ScmB_AABYpmOGmU8440.png

4.2 詳情和數據統計面板

[Statistics] : 

    統計分析

[Inspectors] : 

    審查,可以查看該session請求、和響應報文信息。分爲上下兩個部分,上半部分是請求頭部分,下半部分是響應頭部分。對於每一部分,提供了多種不同格式查看每個請求和響應的內容。JPG 格式使用 ImageView 就可以看到圖片,HTML/JS/CSS 使用 TextView 可以看到響應的內容。Raw標籤可以查看原始的符合HTTP標準的請求和響應頭。Auth則可以查看授權Proxy-Authorization 和 Authorization的相關信息。Cookies標籤可以看到請求的cookie和響應的set-cookie頭信息。

[AutoResponder] : 

[Composer] : 

    可模擬向服務器發送請求報文(創建和發送 HTTP Request)。版本的fiddler中叫request-builder.顧名思義,可以構建相應的請求,有兩種常用的方式構建請求:

(1)Parsed 輸入請求的url之後executed即可,也可以修改相應的頭信息(如添加常用的accept,  host,  referrer,  cookie, cache-control等頭部)後execute.

(2)Raw。使用HTTP頭部信息構建http請求。與上類似。不多敘述

[Log] :  

    日誌信息。

[Filters] :  

    Filter標籤則可以設置Fiddler的過濾規則,來達到過濾http請求的目的。最簡單如:過濾內網http請求而只抓取internet的http請求,或則過濾相應域名的http請求。Fiddler的過濾器非常強大,可以過濾特定http狀態碼的請求,可以過濾特定請求類型的http請求(如css請求,image請求,js請求等),可以過濾請求報文大於或則小於指定大小(byte)的請求。

[Timeline] : 時間線。


五、Fiddler的HTTP統計視圖

  通過陳列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您當前請求的頁面。使用Statistics頁籤,用戶可以通過選擇多個會話來得到這幾個會話的總的信息統計,比如多個請求和傳輸的字節數。

  選擇第一個請求和最後一個請求,可獲得整個頁面加載所消耗的總體時間。從扇形圖表中(Show Chart)還可以分別出哪些資源請求最多,資源分佈,從而對頁面的訪問進行訪問速度優化。

wKioL1cAWBOjbUuNAAB8IsrbkLo881.png


六、QuickExec命令行的使用

  Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。(黑色的輸入框)

  常見得命令有:

  help  打開官方的使用頁面介紹,所有的命令都會列出來

  cls    清屏  (Ctrl+x 也可以清屏)

  select  選擇會話的命令

  ?.png  用來選擇png後綴的圖片

  bpu  截獲request

wKiom1cAV22jhpifAAA8SKsgFSA446.png

Fiddler最強大的功能莫過於設置斷點了,設置好斷點後,你可以修改http Request的任何信息包括host, cookie或者表單中的數據。

1、select

    選擇所有響應類型(content-type / MIME)爲指定類型(主類型或子類型都可)的HTTP請求,如選擇圖片,使用命令 select image 或者 select jpeg。而select html則選擇所有響應爲HTML的會話。

2、allbut (取反)

  allbut命令用於選擇所有響應類型不是指定類型的HTTP請求。如allbut image用於選擇所有相應類型不是圖片的session(HTTP請求),該命令還有一個別名keeponly.需要注意的是,keeponly和allbut命令是將不是該類型的session刪除,留下的都是該類型的響應。因此,如果你執行allbut xxxx(不存在的類型),實際上類似與執行cls命令(刪除所有的session, ctrl+x快捷鍵也是這個作用)  

3、? STRING

    選擇匹配 STRING 的所有sessions。主要是 Host, URL 列進行匹配。

4、>size 和 <size  (單位是 b)

    選擇響應報文 Body 大於或小於size的sessions。 

5、=status

    選擇響應報文 Result 列等於某個響應狀態的sessions。

6、@host

    選擇包含指定 Host 的所有sessions。

7、bpafter, bps , bpv, bpm, bpu

    設置斷點。


七、Fiddler中設置斷點修改Request

  Fiddler最強大的功能莫過於設置斷點了,設置好斷點後,你可以修改http Request的任何信息包括host, cookie或者表單中的數據。

    通過設置斷點,Fiddler可以做到:

1. 修改HTTP請求頭信息。例如修改請求頭的UA, Cookie, Referer 信息,通過“僞造”相應信息達到達到相應的目的(調試,模擬用戶真實請求等)。

2. 構造請求數據,突破錶單的限制,隨意提交數據。避免頁面js和表單限制影響相關調試。

3. 攔截響應數據,修改響應實體。

    爲什麼以上方法是重要的?假設js前端程序員和服務器程序員是分工合作的,js程序員想要調試Ajax請求的功能,這樣便不必等待服務器端程序員開發好所有接口之後再開始開發js端的ajax請求功能,因爲通過“模擬”真實的服務器端的響應,便可以保證功能的正確性,而服務器端開發程序員,只要保證最終的響應是符合規定的即可。這大大簡化了程序開發的效率,當然也降低了不同業務線程序員聯調的難度。

有兩個設定斷點的位置:

    第一個:before response (也就是發送請求之後,但是Fiddler代理中轉之前,這時可以修改請求的數據。)

wKioL1cAhEjAdkrMAABULk6DCx0035.png    

    第二個:after response(也就是服務器響應之後,但是在Fiddler將響應中轉給客戶端之前。這時可以修改響應的結果。)

wKioL1cAhEnjcy86AABS61GSjVw480.png

設置斷點有兩種方法:

  第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint  ->Before Requests(這種方法會中斷所有的會話)

  如何消除命令呢?  點擊Rules-> Automatic Breakpoint  ->Disabled

  第二種:  在命令行中輸入命令:  bpu www.baidu.com   (這種方法只會中斷www.baidu.com)

  如何消除命令呢?  在命令行中輸入命令 bpu

終止斷點:

1. 在inspector界面點擊“run complete“即會終止本次HTTP請求的斷點。

2. 輸入go命令,也會使得當前的請求跳過斷點。

3. 在rules->auto breakpoint中disabled斷點即可。


    看個實例,模擬博客園的登錄, 在IE中打開博客園的登錄頁面,輸入錯誤的用戶名和密碼,用Fiddler中斷會話,修改成正確的用戶名密碼。這樣就能成功登錄:

  1. 用IE 打開博客園的登錄界面  http://passport.cnblogs.com/login.aspx

  2. 打開Fiddler,  在命令行中輸入bpu http://passport.cnblogs.com/login.aspx

  3. 輸入錯誤的用戶名和密碼,點擊登錄

  4. Fiddler 能中斷這次會話,選擇被中斷的會話,點擊Inspectors tab下的WebForms tab 修改用戶名密碼,然後點擊Run to Completion 如下圖所示。

  5. 結果是正確地登錄了博客園wKioL1cAWBTgZH9-AAE0y62h3_I152.png


八、Fiddler中設置斷點修改Response

  當然Fiddler中也能修改Response:

  第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint  ->After Response  (這種方法會中斷所有的會話)

  如何消除命令呢?  點擊Rules-> Automatic Breakpoint  ->Disabled

  第二種:  在命令行中輸入命令:  bpuafter www.baidu.com   (這種方法只會中斷www.baidu.com)

  如何消除命令呢?  在命令行中輸入命令 bpuafter,


九、Fiddler中如何過濾會話

  每次使用Fiddler, 打開一個網站,都能在Fiddler中看到幾十個會話,看得眼花繚亂。最好的辦法是過濾掉一些會話,比如過濾掉圖片的會話。Fiddler中有過濾的功能, 在右邊的Filters tab中,裏面有很多選項, 稍微研究下,就知道怎麼用。


十、Fiddler中會話比較功能

  選中2個會話,右鍵然後點擊Compare,就可以用WinDiff來比較兩個會話的不同了(當然需要你安裝WinDiff)

wKiom1cAV23yVsR7AAB-HP9o-uA842.png


十一、Fiddler中提供的編碼小工具

  點擊Fiddler 工具欄上的TextWizard,  這個工具可以Encode和Decode string.

wKiom1cAV8TjBVThAAB5825yn-o653.png





參考教程:

http://kb.cnblogs.com/page/130367/

http://www.cnblogs.com/kingwolf_JavaScript/archive/2012/11/09/Fiddler_AutoResponder.html

http://www.cnblogs.com/TankXiao/archive/2012/12/25/2829709.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章