由於圖片和格式解析問題,為了更好閲讀體驗可前往 閲讀原文
Fiddler是位於客户端和服務器端的HTTP代理,是一個強大的抓包工具;可以作為系統的代理也可以代理具體的進程(如:chrome、firefox),針對代理對象fiddler會記錄其所有的會話記錄,分析請求數據、調試請求、刷新請求、設置斷點、模擬或覆蓋服務器返回的數據,還可以調試https請求,總之功能強大,是web調試的利器
:::tip
fiddler有fiddler everywhere、fiddler classic等其他版本,其中fiddler everywhere功能最為強大同時支持多個系統,但是需要收費,當然你可以上網搜索破解版,這裏就不贅述了:
本人在工作中使用fiddler classic版本,其功能也不遜色夠開發和測試用了,推薦使用(不支持mac)。
:::
注: 本文以fiddler classic版本進行介紹,以下fiddler文案全部代表的是fiddler classic
面板介紹
當你下載安裝完fiddler雙擊打開後,大概如上圖這樣;fiddler由不同的面板模塊組成,主要包括:
- 菜單欄
- 工具欄
- 代理監控面板
- execquick、狀態欄
- 詳情面板
接下來會對不同的面板進行介紹,再做一些詳情案列説明
菜單欄
菜單欄對fiddler一般做一些全局的配置或功能,如:導入導出記錄、保存、配置https、視圖修改等等
- <u>File</u>:選項主要是加載最近、導入或保存存檔,導入導出捕獲記錄,開關fiddler捕獲抓包等功能;對於需要將測試抓包的一些數據分享給別人排查場景,導入導出功能便會發揮友好作用
- <u>Edit</u>:主要用來編輯抓包監控記錄,如複製、粘貼、選擇、查找等等,比較簡單
- <u>Rules</u>`:相對於前兩者作用比較實用,可以自定義規則過濾對應的抓包記錄,也可以限制不同的網速模擬網絡環境,請求響應打斷點,壓縮等等
- <u>Tools</u>:裏面的
options功能最重要,可以管理代理、配置https、遠程代理等等,除了options,還可以進行解碼編碼,清理緩存等功能 - <u>View</u>:用來控制面板顯示
- <u>help</u>:幫助信息,不用太關心
工具欄
工具欄基本是對抓包做一些具體配置和操作,如斷點、目標、查找、重放等功能,下面對常用的做簡單介紹(簡單的就不贅述了)
- WinConfig:針對windows做的一些配置
- replay:重放功能,重新發起請求
- :根據不同的選項刪除抓包記錄,Ctrl+x全部刪除(最常用)
- go:當斷點卡主時,點擊執行下一步
- Decode:會對所有的請求進行解碼操作
- Keep: All Session:用來顯示抓包記錄條數的
- Any Process:抓取指定進程的數據,點擊不放手拖動到指定的應用程序,fiddler會自動識別到應用程序進程
- TextWizard:用來解碼和編碼
- Online:可以查看當前主機的ip、mac地址等等
代理監控面板
該面板主要來記錄抓包的數據記錄,可以大概看出每個記錄的簡單信息如:協議、狀態碼、請求來源、Host、URL等等,聚焦到此面板Ctrl+x會清除全部的記錄,雙擊某條記錄可以在右側面板查看詳細信息
execquick和狀態欄
這兩塊位於fiddler面板底部和左下角
execquick
execquick是個快速執行命令的工具,如:查詢、斷點等等,可以查看官方文檔,你也可以輸入help回車就會打開文檔,下面列舉一些常用的:
# 搜索
?xxx #?baidu,則會查出url中包含baidu的記錄
# bpu 創建請求斷點
bpu xxx #當請求url地址中包含xxx時命中斷點
bpu #不帶參數時會取消斷點
# bpafter 創建響應斷點
bpafter xxx #請求地址中包含xxx時,響應會命中斷點
bpafter #不帶參數取消斷點
# cls 清除記錄
cls
# =status 搜索目標狀態碼
=status #=301
# =method 搜索請求方式
=method #=POST
狀態欄
狀態欄可以看一些簡單信息如:是否正在抓包,斷點信息,抓包範圍等等
- 左下角第一個點擊切換可以快速開關抓包,當抓包是會顯示
Capturing - 第二個會顯示抓包範圍,可以點擊選擇指定範圍
- 第三個小塊點擊可以快速打斷點,單擊請求斷點,點兩次響應斷點,點三次取消斷點
- 後面會顯示一些quickexec操作的信息
詳情面板
- FiddlerScript:用來修改腳本,fiddler是由C#寫的所以要懂一些C#知識,其實和JS差不多
-
Filters(重要):用來配置相應規則來抓包,相對來説更加自由一些,使用時需要把
use filters打開
如上圖,可以從多個維度去配置規則去抓包-
host: 主機
- 可以選擇本地或互聯網抓包
- 可以選擇對應的host
- client progress: 選擇不同的進程來抓包
-
requset header:
- 顯示請求地址包含xxx的請求
- 隱藏相關地址
- 設置請求頭
- 刪除請求頭等等
-
斷點:
- 不同請求方式斷點
- 指定header頭斷點等等
- 響應狀態碼:根據不同狀態碼顯示記錄
- 響應類型、傳輸大小等等
當選擇好對應的配置後,要勾選
Use Filters選項,點擊面板右上角Actions的Run filterset now -
-
Inspectors:當點擊具體的抓包信息後,點擊
Inspectors可以查看請求的具體信息
主要分為請求報文和響應報文,可以按照不同的格式去查看內容,當打了斷點時,還可以修改請求內容
-
AutoResponder:自動響應請求內容,可以添加多個規則針對不同的請求做不同的響應
如上圖,在請求http://localhost:10000時,返回本地圖片,達到篡改目的除了返回本地資源文件外,還可以模擬其他操作,如:返回不同狀態碼、重定向、請求代理等等
>注:需要勾選`Enble Rules`才會工作,如果不影響其他的請求,需勾選`Unmatched request passthrough`選項,不然其他的也會被阻塞;當不用的時候記得關掉面板規則,防止影響其他操作
- Composer:用fiddler發送請求,可以自定義請求,修改請求內容,點擊
Execute發送請求;也可以將左側的抓包記錄鼠標按住拖到當前面板
如上圖,在請求頭部添加自定義的字段name:小明,點擊右上角執行,請求便會發送出去,執行結果如下圖:會看到請求頭中會攜帶剛剛添加的字段
面板小結
以上便是fiddler各個模塊的介紹,相信你已經對fiddler已經有了基本認識,當然還有一些功能需要自己去查看;工具畢竟是工具比較簡單,如果你想要很短時間內熟悉它的使用,可以自己動手嘗試,很快就會玩轉它
接下來來介紹遠程抓包,常見的就是app抓包,手機端抓包等等
客户端抓包
:::tip
遠程調試需要將遠程應用和fiddler保持在局域網下
:::
這裏以IPhone為例,其他大同小異
- 首先在菜單欄中一次點擊
Tools > Options彈出options面板,選擇ConnectionsTab,可以看到fiddler監聽的端口為8088(不同版本可能不同),你也可以修改它;下面有一個選項為Allow remote computers to connect勾選上☑️,允許遠程連接;右側有一個Act as system proxy讓fiddler作為系統代理(默認),點擊保存後最好重啓下fiddler,如果後續配置後正常話不重啓也行,如下圖:
-
為了不讓其他本地請求影響到我們分析抓包,這裏把抓包改為只抓遠程的包。打開
rules > custom rules,搜索static function OnBeforeRequest,將以下代碼粘貼進去,保存配置後最好重啓一下static function OnBeforeRequest(oSession: Session) { // 抓取遠程的 if (!String.IsNullOrEmpty(oSession["x-ProcessInfo"])) { oSession["ui-hide"] = "localprocess"; } } -
遠程連接fiddler所在的計算機,這裏以IPhone為例;首先查詢計算機ip,可以通過fiddler右上角計算機圖標提示,也可以在終端輸入
ipconfig查詢或其他方法,如下圖:
手機在同一局域網下,配置wifi代理,找到和電腦連接相同的wifi,點擊wifi,配置代理選擇手動,輸入剛剛查詢的ip和fiddler監聽的端口,點擊保存
打開Safari輸入網址
http://192.168.11.224:10000回車後,查看fiddler抓包記錄重新輸入輸入
https://blog.usword.cn
再看看抓包記錄,會發現啥記錄都沒有
https://blog.usword.cn是https協議地址,fiddler默認不會抓取https的,需要手動打開配置選項,而且需要安裝fiddler證書為根證書,接下來一起配置https
配置HTTPS
首先打開Tools > Options > HTTPS,將下圖中的選項全部勾選,為方便測試Descript HTTPS traffic選擇from remote clients only,如下圖:
在Safari中訪問遠程fiddler地址192.168.11.224:8088,點擊允許下載證書
打開手機設置,找到描述文件,點擊信任安裝證書iphone要輸入手機密碼(不同手機型號操作有差異),最後會看到已驗證
現在打開Safari重新訪問https://blog.usword.cn查看抓包記錄,會發現已經抓到了
當打開抖音App發現抓取不到信息,這是因為現在有的app已經有了反抓包手段
至此,關於fiddler的常用的抓包功能已經介紹的差不多了,到這裏你應該對fiddler有一定的認識了,自己一定要動手實踐一遍玩一玩才不會忘記
總結
fiddler是個很強大的抓包工具,主要原理是作為中間代理,代理客户端和服務器之間的通信,這樣請求對於fiddler就是透明的;至於https,fiddler不但扮演了客户端和服務器進行TLS加密通信,還扮演了服務器和客户端進行TLS加密通信,之所以服務器信任fiddler,是因為fiddler證書已經被系統根證書信任了,所以可以進行通信,接下來來介紹charles的使用
由於圖片和格式解析問題,為了更好閲讀體驗可前往 閲讀原文
📷