目錄
- 一、Fiddler原理與下載
- 二、Fiddler設置代理
- 三、Fiddler界面及功能
- 3.1 菜單欄
- 3.2 工具條
- 3.2.1 Comments—備註
- 3.2.2 Replay—重放
- 3.2.3 Remove—移除
- 3.2.4 Go—轉到下一步(結束斷點)
- 3.2.5 Stream—流模式
- 3.2.6 Decode—解碼
- 3.2.7 Keep Sessions—保持回話
- 3.2.8 Pick target—選擇捕獲對象
- 3.2.9 Find查找—Save保存
- 3.2.10 瀏覽器快捷方式
- 3.2.11 TextWizard—文本編碼解碼器
- 3.3 監控面板(回話列表)
- 3.4 輔助標籤(工具)
- 3.4.1 Statistics—統計數據
- 3.4.2 Inspector—檢查器
- 3.4.3 AutoResponder—自動響應器(重要)
- 3.4.3 Composer—設計器(重要)
- 3.4.4 Filter—過濾器
- 3.5 命令行+狀態欄
- 3.6 其他內容
- 四、寫在最後
一、Fiddler原理與下載
Fiddler可以理解爲處於客戶端和服務器之間的
代理服務器
。通過在各瀏覽器、Andoird、IOS設備上設置Fiddler的代理,從而可以監聽客戶端上發生的HTTP(S)請求
。
這篇博客是在B站上看完一個詳細教程後編寫的,想看視頻的可以直接點擊鏈接去看:鏈接_Fiddler教程
- 下載鏈接:可以直接官網上下載,也可以點擊下面鏈接下載 百度雲鏈接,提取碼:g7nz
二、Fiddler設置代理
2.1 谷歌、IE瀏覽器
由於
谷歌
瀏覽器和IE
瀏覽器啓動的時候,就會默認讀取系統代理
,所以只需要將Fiddler設置爲啓動後作爲系統代理
即可。
- 設置啓動即作爲系統代理——點擊
Tools
->Options
->Connections
這樣設置後,我們在谷歌瀏覽器和IE瀏覽器訪問HTTP請求,就會在Fiddler工具左側中顯示出請求,但是HTTPS的請求卻沒有顯示出來,這是爲什麼呢?
原因如下:Fiddler作爲一個代理服務器,是可以代理到HTTPS請求的
。但是HTTPS可以理解爲HTTPS=HTTP+SSL/TLS
,也就是HTTPS是加密
的,是有證書
存在的。所以我們需要配置解密HTTPS並安裝證書
。
-
配置解密HTTPS並安裝證書——點擊
Tools
->Options
->HTTPS
。
-
查看證書是否安裝成功。
-
最後效果——瀏覽器中訪問HTTPS的頁面,也能在Fiddler中顯示。
2.2 火狐瀏覽器
谷歌和IE瀏覽器是直接使用系統代理,且使用系統的證書。但是火狐瀏覽器默認不是使用系統代理,且使用的不是系統的證書,是自己管理自己的證書。
所以對於火狐瀏覽器,需要先設置爲使用系統代理
,再在火狐瀏覽器中導入Fiddler的證書
。
- 火狐瀏覽器設置使用系統代理
- Fiddler導出證書
- 火狐瀏覽器導入證書
- 最後效果——瀏覽器中訪問HTTPS的頁面,也能在Fiddler中顯示。
2.3 Android客戶端
首先,使用Fiddler對Android客戶端抓包的時候,需要
手機連接的WIFI
和Fiddler電腦本機
使用的同一個網絡
,這樣才能做數據通信。
- Fiddler設置——允許遠程主機連接
- 手機WLAN設置代理
- 下載證書
- 安裝證書
- 提示:按照上面的配置後,按照正常情況下,就能抓到HTTPS的包了。但是由於
Android7
之後,系統只信任系統預置的CA證書
,不會信任用戶安裝的CA證書
。具體參考:這是一個鏈接
2.4 IOS客戶端
由於窮,沒有演示IOS客戶端的辦法,請直接查看視頻:IOS抓包
三、Fiddler界面及功能
可以將Fiddler從界面上劃分,分爲五個部分:
菜單欄
、工具條
、監控面板(回話列表)
、輔助標籤(工具)
、命令行+狀態欄
。
3.1 菜單欄
3.1.1 Rules-規則
3.1.2 Tools—工具
3.2 工具條
3.2.1 Comments—備註
3.2.2 Replay—重放
3.2.3 Remove—移除
移除所有 Remove ALL的快捷鍵爲
Ctrl+X
3.2.4 Go—轉到下一步(結束斷點)
3.2.5 Stream—流模式
3.2.6 Decode—解碼
3.2.7 Keep Sessions—保持回話
3.2.8 Pick target—選擇捕獲對象
3.2.9 Find查找—Save保存
3.2.10 瀏覽器快捷方式
3.2.11 TextWizard—文本編碼解碼器
3.3 監控面板(回話列表)
3.3.1 字段含義
3.3.2 添加IP列
參考鏈接:Fiddler顯示服務器ip地址列
- 點擊菜單欄
rules
——customize rules...
- ctrl+f 搜索
static function main
- 在main函數里加入下面一行代碼,調用
fiddlerUI函數
,顯示ip地址列FiddlerObject.UI.lvSessions.AddBoundColumn("IP地址",120,"X-HostIP");
- 保存後關閉,重啓Fiddler即可
3.3.3 添加響應時間列
-
點擊菜單欄
rules
——customize rules...
-
找到class Handlers,並在其中添加下面代碼
function BeginRequestTime(oS: Session) { if (oS.Timers != null) { return oS.Timers.ClientBeginRequest.ToString(); } return String.Empty; } public static BindUIColumn("響應時間") function CalcTimingCol(oS: Session){ var sResult = String.Empty; if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest)) { sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).ToString(); } return sResult; }
-
保存後退出,重啓後即可。
3.4 輔助標籤(工具)
3.4.1 Statistics—統計數據
- 代表詳細的數據,具體參考:這是一個鏈接
3.4.2 Inspector—檢查器
- 可以理解爲
請求
、響應
的詳細信息
。
3.4.3 AutoResponder—自動響應器(重要)
含義:可以用於攔截某一個請求,進行如下操作:(1)
重定向到本地資源
(2)使用Fiddler內置響應
(3)自定義響應
- 實例一:將網站中的圖片請求設置內置響應403。原本的圖片如下:
在自動響應器中添加規則,請求匹配中填寫圖片鏈接,響應這裏選擇內置的403即可。
再次請求頁面,圖片加載失敗。
- 除了使用內置響應,也可以使用本地文件。
- 還可以通過點擊
Edit Response
來自定義響應。
在實際工作中,我們可以使用自動響應器來做以下工作:
(1)Web調試
:在相關接口未開發完事,使用作爲調試
(2)Mock測試
:自定義響應,從而不影響實際的數據,例如有時在生產環境中不能產生髒數據。
(3)極端測試
:例如自定義某個請求的響應爲空
,去查看前端界面的展示
。
3.4.3 Composer—設計器(重要)
功能爲設計請求,即爲
模擬請求
發送。可以認爲一個簡單的接口測試工具,例如Postman功能。
- 自定義請求併發送
- 修改請求併發送—類似於接口測試。在Fiddler捕獲到請求後,將要進行測試的接口拖動到Composer中,修改參數,點擊發送就達到接口測試的效果了。
3.4.4 Filter—過濾器
- 用於
對請求過濾
,具體自己實際試一下即可。
3.5 命令行+狀態欄
3.5.1 QuickExec—命令行
- 官方給出的命令教程:這個是一個教程
3.5.2 請求前斷點 & 響應後斷點
- 請求前斷點:請求從客戶端發出,但是未發送到服務器
- 響應後斷點:響應從服務器發出,但是未到達客戶端
3.5.3 捕獲
3.6 其他內容
3.6.1 斷點應用
斷點可以分爲
全局斷點
和局部斷點
。全局斷點又可以分爲請求前斷點
和響應後斷點
。之前點擊命令行下的位置就是全局斷點。
-
全局斷點—
請求前斷點
:可以在請求到達服務器之前,進行數據篡改
。
-
全局斷點—
響應後斷點
。與請求前斷點道理一樣,可以修改響應結果,然後返回響應。這裏還可以使用響應後斷點模擬網絡中斷
,打了斷點之後,客戶端遲遲收不到服務器的響應,就類似網絡中斷了,然後由於客戶端的超時機制
,查看顯示是否友好。 -
局部斷點
—通過命令完成局部斷點請求前斷點:bpu 匹配內容 響應後斷點:bpafter 匹配內容
3.6.2 弱網測試
弱網測試:就是模擬網絡限速的情況下,請求及響應的情況。參考鏈接:弱網測試
- 啓動
網絡限速
,打開Fiddler,Rules->Performance->勾選Simulate Modem Speeds
- 具體設置:Rules—>
Cutomize Rules
打開CustomRules.js 文檔
- 搜索
m_SimulateModem
。
四、寫在最後
Fiddler:從抓包到入獄,。抓包抓的好,牢飯喫的飽。請謹慎使用。