什么是Fiddler
Fiddler是http調試代理,他能夠記錄所有的你電腦與互聯網之間的通訊,Fiddler也可以讓你檢查所有的http通訊,設置斷點,以及fiddler所有的"進出數據"。(指: cookie,html,js,css等文件,這些都是你可以隨意修改的)
Fiddler包含一個簡單卻功能強大的基于JScript .NET事件腳本子系統,他非常靈活性非常棒,可以支持眾多的http調試任務。Fiddler是用C#寫出來的。
filder軟件下載: https://www.telerik.com/download/fiddler
filder學習網站: https://www.bbsmax.com/R/gVdnmPON5W/
Fiddler的工作原理
fiddler是將自己設置為一個代理服務器,默認監聽: 127.0.0.1:8888端口,同時將瀏覽器的http、https協議設置為使用代理服務器,也就是使用自己作為瀏覽器的代理服務器。
- 打開fiddler后,fiddler自動為你設置的http代理
- 抓取Andriod與IOS數據包的原理也是一樣,在Andriod上設置Http代理為Fiddler代理服務器;
Fiddler的使用
(1) 從上面的下載地址下載最新的fiddler,安裝軟件。
設置fiddler: Tools菜單下Fiddler Options選項,選擇Connections,勾選Allow remote computers to connect;
該設置是指Fiddler允許遠程電腦連接,設置好后重啟Fiddler;
在命令行下使用ipconfig查看本機地址,如:10.0.0.123;
(2) 手機代理設置
- Andriod設置
設置->WLAN,找到當前正在使用的Wifi,長按該連接,彈出選項后選擇 “修改網絡” ,然后勾選實現高級選項
在代理選擇框中選手動,在代理服務器主機名中填入剛剛在電腦上看到的地址:10.0.0.123,端口填8888,然后點擊保存;
- IOS設置
這里使用的是IOS 9,點擊設置圖標,選擇無線局域網,找到當前連接的wifi點擊后面的!號圖標,在HTTP代理中選擇手動,
服務器地址填,電腦的地址:10.0.0.123,端口填8888,然后即可,IOS中設置好后自動保存;
(3) 安裝證書
由于有些App有使用了HTTPS證書,所以在Andriod、IOS上沒有安裝Fiddler證書就可以回出現App無法使用的情況;
安裝證書,在瀏覽器中輸入:10.0.0.123:8888(你電腦的IP地址),點擊FiddlerRoot certificate,然后安裝證書;
Fiddler界面介紹
Fiddler的主界面分為 :
1. 工具面板
2. 會話面板
3. 監控面板
工具面板
說明注釋、重新請求、刪除會話、繼續執行、流模式/緩沖模式、解碼、保留會話、監控指定進程、尋找、保存會話、切圖、計時、打開瀏覽器、清除IE緩存、編碼/解碼工具、彈出控制監控面板、MSDN、幫助
兩種模式
- 緩沖模式(Buffering Mode)Fiddler直到HTTP響應完成時才將數據返回給應用程序。可以控制響應,修改響應數據。但是時序圖有時候會出現異常
- 流模式(Streaming Mode)Fiddler會即時將HTTP響應的數據返回給應用程序。更接近真實瀏覽器的性能。時序圖更準確,但是不能控制響應。
回話面板
回話面板上對應字段的含義
監控面板
默認情況下,一旦開啟 Fiddler,就會走它的代理。有時候你想暫停這種行為,那請看到左下方有個狀態欄。
單擊一下左邊的 Capturing,就能停止攔截,想再開啟,就再單擊一下。
它的右邊是會話的來源,可以設置僅僅攔截瀏覽器發出的請求。
再右邊有三種選擇:1、在請求發出之前進行斷點;2、在響應回來的時候進行斷點;3、不設斷點。
控制臺Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。
常見得命令有:
例子bpu http://www.qq.com,這種方法只會中斷http://www.qq.com,消除斷點的方法就是在命令行中輸入命令 bpu。
Request 中有三個比較厲害的:
- Inspectors:選中之后,可以詳細查看請求的 Headers、Cookies,并且可以對請求體格式化,以 WebForms、JSON、Raw 等方式查看。具體每種方式的區別可以自己感受一下。一般來說,想要查看請求的參數的話,WebForms 的方式就挺直觀的。
- AutoResponder:這個地方可以模擬服務端返回值。顧名思義,當瀏覽器發出的請求滿足你設置的匹配條件的話,Fiddler 就自動響應了,并不需要走網絡。
模擬返回值
想要模擬返回值,首先要設置響應斷點。
bpafter /foo
當滿足條件的響應回來時,選中該會話,就可以看到如圖所示的面板。選擇 Raw 視圖(其他也可以,Raw 可以修改更多的內容),然后可以清楚地看到,服務端返回的內容是
{name: 'Jarvis', gender: 'M'}
把上面的 M 修改成 F,然后單擊“Run to Completion”,就能把修改后的返回值送還給瀏覽器了。
自動化呢?沒錯,人往往喜歡偷懶,如果每次要修改,豈不是很麻煩。
- 選中想要攔截的請求,比如 /api/foo
- 然后在 Request 面板選擇 AutoResponder
- 再選擇 “Add Rule”
- 在最下面的下拉框選擇 “Create New Response...”
- 然后 “Save”
- 此時會彈出一個對話框,跟 Response 面板的布局一樣,在上面可以編輯返回值。
或者你直接把定義好的返回內容保存成文件,在剛才那個下拉框中選擇該文件就行了。
- Composer:模擬向服務端發送請求,用于測試服務端接口是否正確。
模擬請求
右側的 Composer 窗口可以模擬發送請求。
剛打開這個窗口的時候,應該是一片空白。你可以從左側會話列表拖一個會話過去,這樣就有預填的信息了,修改一下參數,點“Execute”,piu,一條請求就發送出去了。
接著在會話列表就可以查看服務端的返回值。
Response 中常用也列三個吧:
- Headers:響應頭。比如 Content-Type、Access-Control-Allow-Origin 等這些屬性都在這個 tab 展示。
- Cookies:查看由服務端帶回來的 cookie。
- JSON:將返回的內容以 JSON 格式顯示。這個很有用,特別是當服務端返回的內容本身就是 JSON 的時候。
最后附上Fiddler官方文檔