Fiddler抓包工具
一、下載安裝
1.下載
官網(wǎng)鏈接:https://www.telerik.com/

Fiddler Classic(經(jīng)典版),這個版本是免費的,不過只能在Windows上使用。
Fiddler Everywhere可以在所有平臺使用,并且相當于Fiddler Classic+postman,但是是收費的。
如果只作為抓包工具經(jīng)典版就夠用了,可以直接點擊下方鏈接前往下載頁面。
下載鏈接:https://www.telerik.com/download/fiddler

填好信息之后勾選這兩項,點擊下載。
2.安裝
點擊同意后選擇安裝路徑安裝。
二、抓包
1.基礎(chǔ)操作
1.1抓取請求
界面左側(cè)Web Sessions會話列表中的是HTTP數(shù)據(jù)包。
界面右側(cè)Inspectors用于查看會話的內(nèi)容,上邊是Request請求信息,下邊是Response響應信息。
-
左下角空白處點擊變成Capturing會開始抓包
- ALL Processes抓取所有包
- Web Browsers只抓取PC中瀏覽器的包
- Non-Browser抓取非瀏覽器的包
- Hide All隱藏所有代理
- 代理手機時,Capturing無論是否點擊,都會自動抓包,抓取想要的包后,可點此隱藏其他抓包
-
字段說明
-
名稱 含義 # 抓取HTTP Request的順序,從1開始,以此遞增 Result HTTP狀態(tài)碼 Protocol 請求使用的協(xié)議,如HTTP/HTTPS/FTP等 Host 請求地址的主機名 URL 請求資源的位置 Body 該請求的大小 Caching 請求的緩存過期時間或者緩存控制值 Content-Type 請求響應的類型 Process 發(fā)送此請求的進程:進程ID Comments 允許用戶為此回話添加備注 Custom 允許用戶設置自定義值 圖標 含義 請求已經(jīng)發(fā)往服務器 已從服務器下載響應結(jié)果 請求從斷點處暫停 響應從斷點處暫停 請求使用 HTTP 的 HEAD 方法,即響應沒有內(nèi)容(Body) 請求使用 HTTP 的 POST 方法 請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協(xié)議建立連接隧道 響應是 HTML 格式 響應是一張圖片 響應是腳本格式 響應是 CSS 格式 響應是 XML 格式 響應是 JSON 格式 響應是一個音頻文件 響應是一個視頻文件 響應是一個 SilverLight 響應是一個 FLASH 響應是一個字體 普通響應成功 響應是 HTTP/300、301、302、303 或 307 重定向 響應是 HTTP/304(無變更):使用緩存文件 響應需要客戶端證書驗證 服務端錯誤 會話被客戶端、Fiddler 或者服務端終止
-
1.2刪除請求
- 方法1:點擊工具欄中的×,刪除請求。
- 方法2:session列表下的黑框QuickExec中輸入cls或clear刪除請求。
- 快捷鍵Ctrl+x
1.3過濾請求
- 點擊右側(cè)選項卡中的Filters
- 勾選User Filters
- Host Filter選擇Show only the following Hosts
- 在下方框中填入想要過濾查看的主機地址,以“;”分隔。
- 點擊Actions,選擇Run filterset now
1.4抓取HTTPS
默認只抓取HTTP協(xié)議的網(wǎng)頁,想抓取HTTPS則需要:
- 打開Tools--Options--HTTPS選項卡
- 勾選Capture HTTPS CONNECTs
- 勾選Decrypt HTTPS traffic
- 勾選Ignore server certificate errors(unsafe)忽略證書(如果不安裝fiddler證書就如此)
2.HTTP請求與響應

3.移動端抓包
- 手機和電腦必須在同一個局域網(wǎng):
1.手機和電腦連同一個WiFi
2.手機連WiFi,電腦用網(wǎng)線連接開啟這個WiFi的無線路由
3.電腦開熱點,手機連熱點 - 開啟fiddler代理,Tools-Options-Connections , 勾選 Allow remote computers to connect(盡量能勾選的都勾上), 點擊OK
- 查看自己網(wǎng)卡IP
- 在移動端連接wifi,并且設置代理IP(電腦端網(wǎng)卡IP)與端口(8888)
- 移動端訪問網(wǎng)頁輸入代理IP和端口,點擊FiddlerRoot certificate下載Fiddler的證書
- 安裝證書(安裝方式不同設備會有區(qū)別,可以自己試探或者上網(wǎng)找教程,如果不能安裝顯示不能讀取證書可以試試去設置里搜索CA證書,驗證密碼后安裝)
- 安裝證書成功后,可以用手機訪問應用,就可以看到截取到的數(shù)據(jù)包
4.Fiddler內(nèi)置命令與斷點
FIddler斷點功能就是將請求截獲下來,但是不發(fā)送,此時可以做一些更改操作。
- QuickExec命令
| 命令 | 對應請求項 | 介紹 | 示例 |
|---|---|---|---|
| ? | All | 問號后邊跟一個字符串,可以匹配出包含這個字符串的請求 | |
| > | Body | 大于號后面跟一個數(shù)字,可以匹配出請求大小,大于這個數(shù)字請求 | >1000 |
| < | Body | 小于號跟大于號相反,匹配出請求大小,小于這個數(shù)字的請求 | <100 |
| = | Result | 等于號后面跟數(shù)字,可以匹配HTTP返回碼 | =200 |
| @ | Host | @后面跟Host,可以匹配域名 | @www.baidu.com |
| select | Content-Type | select后面跟響應類型,可以匹配到相關(guān)的類型 | select image |
| cls | All | 清空當前所有請求 | cls |
| dump | All | 將所有請求打包成saz壓縮包,保存到“我的文檔\Fiddler2\Captures”目錄下 | dump |
| start | All | 開始監(jiān)聽請求 | start |
| stop | All | 停止監(jiān)聽請求 | stop |
- 斷點命令
| 斷點命令 | |||
|---|---|---|---|
| bpafter | All | bpafter后邊跟一個字符串,表示中斷所有包含該字符串的請求 | bpafter baidu(輸入bpafter解除斷點) |
| bpu | All | 跟bpafter差不多,只不過這個是收到請求了,中斷響應 | bpu baidu(輸入bpu解除斷點) |
| bps | Result | 后面跟狀態(tài)嗎,表示中斷所有是這個狀態(tài)碼的請求 | bps 200(輸入bps解除斷點) |
| bpv / bpm | HTTP方法 | 只中斷HTTP方法的命令,HTTP方法如POST、GET | bpv get(輸入bpv解除斷點) |
| g / go | All | 放行所有中斷下來的請求 | g |
5.典型應用
web網(wǎng)頁、手機APP抓包
修改服務請求與響應
前端性能分析及優(yōu)化
模擬弱網(wǎng)測試
三、應用場景
- 通過抓包工具截取觀察網(wǎng)站的請求信息,更深入了解網(wǎng)站
- 通過用抓包工具截取、觀察網(wǎng)站的請求與返回信息,幫助我們進行BUG的定位于描述
- 通過抓包工具攔截修改請求信息,繞過界面的限制,測試服務端的功能
1.輔助定位bug
- 抓到HTTP數(shù)據(jù)包
- 檢查請求方式與接口地址是否有誤
- 檢查返回的響應狀態(tài)是否正常
- 點擊請求的WebForms,檢查接口傳遞參數(shù)
- 點擊響應的JOSN檢查接口返回的響應數(shù)據(jù)
2.構(gòu)建模擬測試場景
- 模擬發(fā)送請求,進行接口測試
- 應用場景1:需求文檔中說明,某個接口限制同一個賬號只能請求一次,同一個設備只能請求一次
- 應用場景2:存在頁面輸入限制,需要模擬特殊情況請求(例如特殊字符,空格等參數(shù)),測試程序處理機制
- Mock接口返回數(shù)據(jù),測試程序
- 應用場景1:需要驗證接口數(shù)據(jù)能否正常處理,但程序處于開發(fā)過程中,后臺無法對發(fā)送請求給出響應
- 應用場景2:需要驗證程序針對404,500,502等不同狀態(tài)的處理機制
2.1模擬發(fā)送請求
- Composer允許自定義請求發(fā)送到服務器,可以手動創(chuàng)建一個新的請求,也可以在會話表中,拖拽一個現(xiàn)有的請求
- 點擊Composer
- 設置請求方法,請求地址、協(xié)議
- 設置請求header
- 設置請求body
- 發(fā)送請求
- 查看響應
2.2模擬返回相應數(shù)據(jù)
- AutoResponder允許攔截指定規(guī)則的請求,并返回本地資源或Fiddler資源,從而代替服務器響應。
- 點擊AutoResponder
- 選擇請求,點擊Add Rule添加規(guī)則
- Rule Editor中選擇響應方式
- Save
- 勾選三個選項
- Enable rules
- Unmatched requests passthrough
- Enable Latency
3.模擬弱網(wǎng)環(huán)境操作
進地鐵、上公交、進電梯等,如果app沒有對各種網(wǎng)絡異常進行兼容處理,那么用戶可能在日常生活中遇到APP閃退、ANR、數(shù)據(jù)丟失等問題。
-
啟動模擬調(diào)制解調(diào)器速度來模擬弱網(wǎng)
- Rules--Performance--Simulate Modem Speeds
-
Customize Rules(Ctrl+R)自定義規(guī)則
if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "150"; }在上述函數(shù)中用Math.random()方法可以模擬波動的網(wǎng)絡
if (m_SimulateModem) { var t = int(Math.random()*500) // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = ""+ ( 2 * t ); // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "" + t; }
-
延遲參數(shù)
-
網(wǎng)絡環(huán)境 上/下行帶寬(kbps) 上/下行丟包率(%) 上/下行延遲(ms) DNS延遲(ms) 備注 2G 20/50 0/0 500/400 0 3G 330/2000 0/0 100/100 0 4G 40000/80000 0/0 15/10 0 wifi 33000/40000 0/0 1/1 0 帶寬有限環(huán)境 32/32 0/0 200/100 0 低丟包率、低時延的環(huán)境(上行) 33000/40000 10/0 100/100 200 WiFi環(huán)境下即可設置測試 低丟包率、高時延的環(huán)境(上行) 33000/40000 10/0 350/350 350 、、、 低丟包率、低時延的環(huán)境(下行) 33000/40000 0/10 100/100 200 、、、 低丟包率、高時延的環(huán)境(下行) 33000/40000 0/10 350/350 350 、、、 低丟包率、低時延的環(huán)境 33000/40000 10/10 100/100 200 、、、 低丟包率、高時延的環(huán)境 33000/40000 10/10 350/350 350 、、、 高丟包率的環(huán)境(上行) 33000/40000 90/0 100/100 200 、、、 高丟包率的環(huán)境(下行) 33000/40000 0/90 100/100 200 、、、 高丟包率的環(huán)境 33000/40000 90/90 100/100 200 、、、 網(wǎng)絡超時(響應) 33000/40000 0/100 100/100 200 、、、 網(wǎng)絡超時(請求) 33000/40000 100/0 100/100 200 、、、 網(wǎng)絡超時(完全丟包) 33000/40000 100/100 100/100 200 、、、 無網(wǎng)(飛行模式或關(guān)閉網(wǎng)絡)
-
4.前端性能分析及優(yōu)化
- 選中想查看的session列表
- 點擊Statistics進行請求的性能數(shù)據(jù)分析
- 點擊Collapse Chart即可查看所用語言的所占比
- 點擊Timeline即可查看頁面各個元素的加載時間和順序
問題解決
Q1.Fiddler啟動后Chrome瀏覽器無法瀏覽網(wǎng)頁?
- 打開Tools--Options--HTTPS選項卡;
- 點擊Actions下拉選擇Trust Root Certificate,彈框選yes,彈框選是(到這一步可能就解決了);
- 點擊Actions下拉選擇Export Root Certificate to Desktop,將fiddler證書導出到桌面;
- 打開谷歌瀏覽器,設置--高級--安全--管理證書;
- 導入證書
- 重啟瀏覽器與fiddler。
Q2.如何屏蔽抓取特定端口?
在Fiddler中使用它,用Ctrl+R打開自定義規(guī)則,然后添加到OnBeforeRequest。
if (oSession.host=="localhost:9090"){
oSession["ui-hide"] = "true";
}























