Fiddler 教程

1、簡介

Fiddler(中文名稱:小提琴)是一個HTTP的調試代理,以代理服務器的方式,監聽系統的Http網絡數據流動, Fiddler能夠也可讓你檢查全部的HTTP通信,設置斷點,以及Fiddle全部的「進出」的數據(我通常用來抓包),Fiddler還包含一個簡單卻功能強大的基於JScript .NET事件腳本子系統,它能夠支持衆多的HTTP調試任務。html


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


2、工做原理

Fiddler是以代理WEB服務器的形式工做的,瀏覽器與服務器之間經過創建TCP鏈接以HTTP協議進行通訊,瀏覽器默認經過本身發送HTTP請求到服務器,它使用代理地址:127.0.0.1, 端口:8888. 當Fiddler開啓會自動設置代理, 退出的時候它會自動註銷代理,這樣就不會影響別的程序。不過若是Fiddler非正常退出,這時候由於Fiddler沒有自動註銷,會形成網頁沒法訪問。解決的辦法是從新啓動下Fiddler.緩存

3、界面操做

一、主界面

Fiddler的主界面分爲 工具面板、會話面板、監控面板、狀態面板,下面進行一一介紹。性能優化

二、工具面板

  • 說明
    註釋、從新請求、刪除會話、繼續執行、流模式/緩衝模式、解碼、保留會話、監控指定進程、尋找、保存會話、切圖、計時、打開瀏覽器、清除IE緩存、編碼/解碼工具、彈出控制監控面板、MSDN、幫助服務器

  • 兩種模式cookie

緩衝模式(Buffering Mode
Fiddler直到HTTP響應完成時纔將數據返回給應用程序。能夠控制響應,修改響應數據。可是時序圖有時候會出現異常網絡

流模式(Streaming Mode
Fiddler會即時將HTTP響應的數據返回給應用程序。更接近真實瀏覽器的性能。時序圖更準確。可是不能控制響應。app

三、會話面板

單間查看請求的狀態碼、請求方式、請求的URL

四、監控面板

  • 統計報表

(1) 請求總數、請求包大小、響應包大小;composer

(2) 請求起始時間、響應結束時間、握手時間、等待時間、路由時間、TCP/IP傳輸時間;工具

(3) HTTP狀態碼統計;

(4) 返回的各類類型數據的大小統計以及餅圖展示。

  • 時間軸

    每一個網絡請求都會經歷域名解析、創建鏈接、發送請求、接受數據等階段。把多個請求以時間做爲 X 軸,用圖表的形式展示出來,就造成了瀑布圖。在Fiddler 中,只要在左側選中一些請求,右側選擇Timeline標籤,就能夠看到這些請求的瀑布圖

看到這張圖,你是否能夠回答這些問題:

  1. 圖標的 Y 軸上顯示的是簡化後的 URL。爲何有些是綠色的,有些是黑色的?
  2. 爲何第一個請求用陰影線來表示,其它請求卻都是實心的?
  3. 請求條的不一樣顏色分別表明什麼?
  4. 每一個請求中的黑色豎線表示什麼?
  5. 請求後面的圖標(如閃電和軟盤)表明了什麼?
  6. 每一個請求前面兩個小圓圈是什麼,爲何有的是紅色,有的是綠色?
    下面將一一揭曉。

  1. 綠色的請求表示這是一個「有條件的請求」。HTTP 協議定義了 5 個條件請求頭部,最多見的兩個是「If-Modified-Since」和「If-None-Match」。服務器根據這兩個頭部來驗證本地緩存是否過時,若是過時則正常返回資源的最新版本;不然僅返回 304 Not Modified,瀏覽器繼續使用本地緩存。包含條件請求頭部的請求用綠色顯示,不然用黑色。

  2. 有陰影線的請求是緩衝模式下的請求,實心的是流模式下的請求。Fiddler 提供了緩衝(Buffering)和流(Streaming)兩種抓包模式:緩衝模式下,Fiddler 會在響應完成時纔將數據返回給應用程序(一般是瀏覽器),這種模式下能夠控制響應,方便地修改響應內容;流模式下,Fiddler 會實時返回響應數據給瀏覽器,但沒辦法控制響應。通常使用流模式,瀑布圖會更真實一些。這兩種模式能夠經過 Fiddler 的工具欄選擇。特別的,經過 Fiddler 的「AutoResponder」功能返回的響應,只能是緩衝模式。

  3. 請求條的不一樣顏色對應着不一樣類型的響應,根據響應頭的 MIME Type 來歸類。如淺綠色表示圖片類型的響應;深綠色是 JavaScript;紫色是 CSS;其它都是藍色。

  4. 請求中的黑色豎線,表示的是瀏覽器收到服務端響應的第一個字節這一時刻。這個時間受 DNS 解析、創建鏈接、發送請求、等待服務端響應等步驟的影響。

  5. 請求條後面的圖標表示響應的某些特徵。如軟盤圖標表示這個響應正文從本地得到,也就是說服務端返回了 304;閃電錶示這是 Fiddler 的「AutoResponder」的響應;向下的箭頭表示響應是 302,須要重定向;紅色感嘆號說明這個請求有錯誤發生(狀態碼是 4XX 或 5XX)。特別的,若是請求條後面有一個紅色的X,說明服務端響應完這個請求以後,斷開了鏈接。出現這種狀況通常有兩種可能:HTTP/1.0 的響應中沒有 Connection: Keep-Alive;或者是 HTTP/1.1 的響應中包含了 Connection: close。使用持久鏈接能夠省去創建鏈接的開銷,也能夠減少 TCP 慢啓動和其它擁塞控制機制帶來的影響,總之是好處多多。

  6. 請求前面的紅色圓圈表示這個鏈接是新建的,綠色表示是複用的。上面的圓圈表示的是瀏覽器到 Fiddler 的鏈接,下面的圓圈是 Fiddler 到服務端的鏈接。

五、狀態面板

  • 控制檯
    Fiddler的左下角有一個命令行工具叫作QuickExec,容許你直接輸入命令。
    常見得命令有
命令 解釋
help 打開官方的使用頁面介紹,全部的命令都會列出來
cls 清屏 (Ctrl+x 也能夠清屏)
select 選擇會話的命令
?.png 用來選擇png後綴的圖片
bpu 截獲request
bpafter 截獲response

4、經常使用功能

一、監聽HTTPS

Fiddler不只能監聽HTTP請求並且默認狀況下也能捕獲到HTTPS請求,Tool -> Fiddler Option -> HTTPS下面進行設置,勾選上「Decrypt HTTPS traffic」,若是沒必要監聽服務器端得證書錯誤能夠勾上「Ignore server certification errors」,也能夠跳過幾個指定的HOST來縮小或者擴大監聽範圍。

二、HOST切換

三、模擬各種場景

  • 經過GZIP壓縮,測試性能
  • 模擬Agent測試,查看服務端是否對不一樣客戶端定製響應
  • 模擬慢速網絡,測試頁面的容錯性
  • 禁用緩存,方便調試一些靜態文件或測試服務端響應狀況
  • 根據一些場景自定義規則

  • 低網速模擬
    有時出於兼容性考慮或者對某處進行性能優化,在低網速下每每能較快發現問題所在也容易發現性能瓶頸,惋惜其餘調試工具沒能提供低網速環境,而強大的Fiddler考慮到了這一點,可以進行低網速模擬設置Rules > Performance > Stimulate Modem Speeds。

四、Composer(構造器)

請求構造顧名思義就是咱們能夠模擬請求,也就是說咱們能夠藉助Fiddler的Composer 在不改動開發環境實際代碼的狀況下修改請求中的參數值而且方便的從新調用一次該請求,而後相比較2次請求響應有何具體不一樣。任何一個請求參數只要是合法的取值再次調用後都會有相應的響應,那麼你想要的任意一個合法請求組合天然也可以按照你的意願構造出來,而後再次調用以及查看返回數據,十分方便!

下面舉一個交易查詢請求構造的例子。首先進入交易查詢頁面抓包找到目標請求https://pay.tenpay.com/main/app/v1.0/trans_manage.cgi?OutPutType=JSON,雙擊該包在Inspectors標籤下查看返回數據爲JSON格式,而XML格式一欄爲空:

將該請求鼠標左鍵單擊拖入Fiddler右側Request Builder標籤內並修改原請求參數OutPutType=JSON爲OutPu tType=XML,而後點擊Execute按鈕再次觸發調用請求,

雙擊此次請求包在Inspectors標籤下查看返回數據爲XML格式,而JSON格式一欄爲空:

五、Filters(過濾監控)

對一個從新載入的頁面進行抓包,若是包的條目過多而你須要關注的就那麼幾項的話,可使用Fiddler的過濾器Filters進行抓包,那麼抓包時只會抓取你但願抓到的那些包。切換到Filters標籤勾選Use filter,以便激活過濾器,這樣下面的各類過濾方式就能夠進行選擇了。

選項1 解釋
No zone filter 不設置hosts過濾
Show Only Intranet Hosts 只顯示內網HOST
Show Only Internet Hosts 只顯示外網HOST令
 
 
選項2 解釋
No Host Filter 不設置hosts過濾
Show Only The Following Hosts 隱藏過濾到的域名
Show Only The Following Hosts 只顯示過濾到的域名
Flag The Following Hosts 標記過濾到的域名

六、AutoResponder(請求重定向)

所謂請求無非就是須要調用到的一些資源(包括JS、CSS和圖片等),所謂重定向就是將頁面本來須要調用的資源指向其餘資源(你可以控制的資源或者能夠引用到的資源)。

(1)你能夠將前臺服務器的諸多或者某個資源在本地作個副本,若是正常網絡訪問環境下該資源出現了BUG而致使開發環境崩潰時,能夠先將這個資源的請求重定向到本地副本,這樣就能夠繼續進行開發調試你的頁面,從而大量節省資源維護的等待時間。

(2)你也能夠將多人同時維護的某個JS文件複製一份出來在本地,當你的開發調試收到他人調試代碼干擾時,能夠將這個JS的調用重定向到本地無干擾的JS文件,進行無干擾開發,功能開發完成並調試OK以後再將你的代碼當心合入到開發環境中,這樣就能夠避免受到他人干擾專心搞你的模塊開發,也就是說可以將JS文件脫離開發環境卻不影響線上調試。

(3)你還能夠將樣式文件或者圖片指向本地若是須要的話。開發過程當中的不少頁面其實都是慘不忍睹的,究其緣由很大程度上是由於缺乏對應的樣式文件或者沒有圖片資源,因此樣式文件和圖片的重定向會對美感稍有要求的開發人員帶來福音。

七、設置斷點

Fiddler最強大的功能莫過於設置斷點了,設置好斷點後,你能夠修改httpRequest的任何信息包括host, cookie或者表單中的數據。設置斷點有兩種方法:

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

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

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

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

八、網速限制

 Fiddle提供了一個功能,用於模擬網絡亞健康環境

啓用方法以下:Rules → Performances → Simulate Modem Speeds 

打開便可,默認發送請求的網速爲300ms/KB,接收響應的網速爲150ms/KB。

網速能夠自行修改,具體方法是點開Rules → Customize Rules 。此時會彈出CustomRules.js的代碼,Ctrl+F尋找m_SimulateModem關鍵字,你會找到下面這段:

5、瀏覽器抓包方式

一、IE & Firefox & Chrome

fiddler經常使用瀏覽器抓包的方法同樣,只須要將瀏覽器的代理地址設置爲127.0.0.1,端口設置爲8888便可

二、VS

咱們在用visual stuido 開發ASP.NET網站的時候也須要用Fiddler來分析HTTP, 默認的時候Fiddler是不能嗅探到localhost的網站。

在localhost後面加個點號,Fiddler就能嗅探到。

例如:本來ASP.NET的地址是 http://localhost:2391/Default.aspx, 加個點號後,變成 http://localhost.:2391/Default.aspx 就能夠了

6、移動端抓包

Fiddler不但能截獲各類瀏覽器發出的HTTP請求, 也能夠截獲各類智能手機發出的HTTP/HTTPS請求。

Fiddler能捕獲IOS,Andriod,WinPhone,設備發出的請求,同理,也能夠截獲IPad, MacBook的等設備發出的HTTP/HTTPS。

前提條件是:安裝Fiddler的機器,跟Iphone 在同一個網絡裏, 不然IPhone不能把HTTP發送到Fiddler的機器上來。

具體操做步驟以下:

  • Fiddler設置

點Tools -- Options菜單,按照下面截圖設置HTTPS,否則無法解密

打開Fiddler, Tools-> Fiddler Options->Connections。(配置完後記得要重啓Fiddler).

選中"Allow remote computers to connect". 是容許別的機器把HTTP/HTTPS請求發送到Fiddler上來

  • APP設置

一、獲取Fiddler所在機器的IP,安裝Fiddler證書

這一步是爲了讓Fiddler能捕獲HTTPS請求。 若是你只須要截獲HTTP請求, 能夠忽略這一步

首先要知道Fiddler所在的機器的IP地址: 假如我安裝了Fiddler的機器IP地址是:192.168.1.104

打開手機瀏覽器, 訪問 http://192.168.1.104:8888, 點"FiddlerRoot certificate" 而後安裝證書

注意:iPhone安裝證書後,默認不會開啓信任的,須要手動添加一下證書信任,設置 - 通用 - 關於本機,最下面有個信任證書設置按鈕,打開後是下面的頁面,將DO_NOT_TRUST_FiddlerRoot這個證書打開,不信任這個證書是抓不到https包的,一樣的測試完以後你也能夠將他關閉。

二、打開你的網絡鏈接, 打開HTTP代理, 輸入Fiddler所在機器的IP地址(好比:192.168.1.104) 以及Fiddler的端口號8888

7、推薦書籍

  • 《Fiddler調試權威指南》是Fiddler的開發者Eric Lawrence編寫的一本權威的參考指南。全書分爲10章和4個附錄,從認識Fiddler開始,介紹了基本技巧和概念、配置選項、Inspectors、擴展、數據流導入導出、FiddlerScript和FiddlerCore等主題;附錄部分還給出了故障排除和命令行等有用的參考信息。

  • 《Fiddler調試權威指南》適合Web開發人員和Web測試人員閱讀參考,也適合想要學習和掌握Fiddler的讀者閱讀。經過《Fiddler調試權威指南》,你將學會如何利用Fiddler調試Web相關的應用,掌握如何調試HTTPS數據流,學會如何在流行的設備上使用Fiddler,甚至掌握更多高級的擴展功能。

8、其餘抓包工具

同類的工具備 : HttpWatch, Firebug,Chrome自帶調試工具,WireShark

9、總結

經過以上的介紹,你應該已經發現fiddler其它強大的功能。fiddler絕對是開發利器。

  • Fiddler能記錄全部客戶端和服務器的HTTPHTTPS請求,容許你監視、設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基於事件腳本的子系統,而且能使用.NET語言進行擴展;
  • 你對HTTP協議越瞭解,你就能越掌握Fiddler的使用方法,你越使用Fiddler,就越能幫助你瞭解HTTP協議,二者關係緊密、相輔相成;
  • 強大圖形呈現,拖拽操做,豐富的插件。
  • 使用Fiddler不管對Coder仍是Tester來講,都是很是有用的工具。

 

本文引用:

https://blog.csdn.net/guoguo527/article/details/52127412

好用的插件:
https://www.telerik.com/fiddler/add-ons
相關文章
相關標籤/搜索