《Fiddler調試權威指南》——1.2 快速入門
本節書摘來自異步社區《Fiddler調試權威指南》一書中的第1章,第1.2節,作者:【美】Eric Lawrence著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
1.2 快速入門
1.2.1 基本概念
Fiddler是一款基於Windows係統的專用代理服務器軟件。本地運行的程序,如Web瀏覽器、Office應用程序以及其他客戶端應用,可以把HTTP和HTTPS請求發送給Fiddler,Fiddler通常把這些請求轉發給Web服務器。然後,服務器把這些請求的響應返回給Fiddler,Fiddler再把這些響應轉發給客戶端。
幾乎所有使用網絡協議的程序都支持代理服務器,因此Fiddler幾乎適用於所有應用。當啟動Fiddler來捕獲請求和響應時,Fiddler會自動注冊為Windows Internet (WinINET)網絡服務代理,並請求所有應用把請求發送給它,如圖1-5所示。
圖1-5
有些應用不會自動識別Windows網絡配置,要想讓Fiddler捕獲其數據流,需要手工配置這些應用。也可以對Fiddler進行配置,使它能夠支持更罕見的場景,包括服務器到服務器(如Web Services)和設備到服務器(如iPad或Windows手機)的數據流。默認情況下,Fiddler被設計成能夠自動掛接到(chain to)先前已經部署的各種上遊代理(upstream proxy),通過這種方式,Fiddler能夠在已經使用了代理服務器的網絡環境中正常工作。
Fiddler可以捕獲所有的本地數據流,而且支持很多過濾器(filter)。這一特性使得用戶既可以隱藏不感興趣的數據流,也可以高亮顯示(使用顏色或字體選項)感興趣的數據流。過濾器的過濾條件可以是數據流的來源(如特定的客戶端進程),也可以是數據流本身的某些特征(如該數據流所綁定的主機名或服務器返回內容的類型)。
Fiddler的擴展模型功能豐富,既有簡單的FiddlerScript,也包含強大的功能插件(Extensions),這些擴展可以使用任意一種.NET語言來開發。Fiddler還支持幾種特殊的擴展類型,其中最流行的是Inspector(稽查員)。顧名思義,Inspector的特點在於支持查看單個請求或響應。Inspector可以做成支持所有響應類型(如HexView Inspector),也可以定製為隻支持特定類型(如JSON Inspector)。如果你是開發人員,可以通過類庫FiddlerCore把Fiddler的核心代理引擎植入到自己的應用中。
Fiddler可以解密HTTPS數據流,使用“中間人(man-in-the-middle)”1解密技術來顯示和修改這些在網絡上不可讀的請求。要做到沒有安全告警的無縫調試,可以把Fiddler的根證書(root certificate)安裝到係統或Web瀏覽器的受信任的證書庫中。
一個Web會話(Web Session)代表客戶端和服務器之間的一個事務。Fiddler界麵中左側邊欄的Web會話列表中的一個條目就是一個會話。一個會話對象包含一個請求和一個響應,分別表示客戶端發送給服務器的數據以及服務器返回給客戶端的數據。會話對象還會維護一組標誌位(Flag),用於保存會話的元數據以及在處理該會話過程中記錄的時間戳對象(Timer)。
代理服務器並非局限於查看網絡流量——顧名思義,Fiddler這個名字的含義在於它可以“隨意玩弄(fiddle)”發送出去的請求和接收進來的響應。可以設置請求或響應斷點以手工修改數據流。到達設置的斷點後,Fiddler會暫停會話,以便用戶手工修改請求和響應。Fiddler還支持在其內部運行腳本或擴展來改寫數據流。默認情況下,Fiddler是在緩衝模式(buffering mode)下工作的,即Fiddler是接收到服務器的完整響應之後才將響應的內容返回給客戶端。如果啟用流模式(streaming mode),Fiddler會將從服務器端接收到的響應立即返回給客戶端。因此,流模式下不支持對服務器的響應進行修改。
Fiddler捕獲的會話信息可以保存到會話歸檔(Session Archive Zip,SAZ)文件中,以方便後續查看。這種格式的壓縮文件中包含了完整的請求和響應、標誌位、時間戳對象以及其他元數據。非技術人員可以使用一個輕量級的捕獲工具FiddlerCap來生成SAZ文件,再把這些文件提供給專業人員進行分析。Fiddler支持擴展組件Exporter,它支持把捕獲到的會話以其他工具支持的格式來保存,從而保證了Fiddler和這些工具的互通性。同樣,Fiddler也支持擴展組件Importer,它支持Fiddler加載以其他格式存儲的數據流,包括很多瀏覽器開發工具所使用的HTTP Archive(HAR)格式。
1.2.2 使用場景
我最經常遇到的一些問題類似於:“我可以使用Fiddler來完成嗎”?Fiddler適用於很多場景中。但是,對於一些場景,Fiddler是不合適的。絕大多數情況下,人們所使用的是Fiddler的少數幾個功能。以下將簡單說明Fiddler所適用以及不適用的場景。
Fiddler支持功能的不完整列表
- 查看幾乎所有的瀏覽器、客戶端應用或服務之間的Web數據流。
- 手動或自動修改任意的請求或響應。
- 解密HTTPS數據流以便查看和修改。
- 歸檔捕獲到的數據流,支持在不同的計算機上加載這些數據。
- 給客戶端應用“回放(play back)”先前捕獲到的響應,即使當前服務器處於脫機狀態。
- 絕大多數PC和各種設備之間的Web數據流的調試,包括Mac/Linux係統、智能手機和平板電腦。
- 掛接到(chain to)上遊代理服務器,包括TOR網絡2。
- 作為反向代理運行,在不需要重新配置客戶端計算機或設備的情況下,在服務端捕獲數據流。
- 隨著基於FiddlerScript或.NET可擴展模型實現的新功能的不斷增加,Fiddler將變得更加強大。 Fiddler不支持功能的不完整列表 Fiddler是一個非常靈活的工具,但某些功能目前還不支持。
調試非網絡協議數據流。
- Fiddler支持HTTP、HTTPS和FTP數據流以及相關的協議,如HTML5 WebSockets和ICY流。
Fiddler無法監測或修改基於其他協議的數據,如SMTP、POP3、Telnet、IRC等。
-
處理超大請求和響應。
- 超過2GB的請求,Fiddler無法處理。
- 超過2GB的響應,Fiddler的處理能力有限。
- Fiddler使用係統內存和頁麵文件(pagefile)來保存會話數據。保存大量的會話或超大的請求和響應會導致性能急劇下降。
-
“神奇”地修複網站的錯誤(bug)。
- Fiddler可以用來協助識別網絡問題,但通常不能獨立修複這些bug。我已經收到過無數個電子郵件:“怎麼回事?我已經安裝了Fiddler,但我的網站怎麼還有很多bug?!”
好了,完成了Fiddler的入門,接下來讓我們一起深入探索它吧!
最後更新:2017-06-06 07:33:37