Fiddler的使用介绍及抓包分析(详解)
(我的公眾號(hào)“墨石測(cè)試攻略”,關(guān)注可免費(fèi)獲取全套接口測(cè)試實(shí)戰(zhàn)項(xiàng)目)
文章目錄
- 1 Fiddler簡(jiǎn)介
- 2 Fiddler工作原理
- 3 Fiddler安裝
- 4 Fiddler使用
- 4.1 界面介紹
- 4.1.1工具欄
- 4.1.2 左側(cè)面板
- 4.1.3 右側(cè)面板
- 4.1.4 底部控制面板
- 4.2 Fiddler如何抓HTTPS的包
- 4.3 Fiddler如何抓手機(jī)APP的包
- 4.4 抓包分析
1 Fiddler簡(jiǎn)介
Fiddler是一款網(wǎng)絡(luò)代理調(diào)試工具,可以將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作,是目前最常用的http抓包工具之一。
使用場(chǎng)景:接口調(diào)試、接口測(cè)試、線上環(huán)境調(diào)試、Web性能分析、定位BUG、開發(fā)環(huán)境hosts配置、Mock、弱網(wǎng)斷網(wǎng)測(cè)試
2 Fiddler工作原理
Fiddler通過(guò)改寫HTTP代理,來(lái)監(jiān)控并截取數(shù)據(jù)。當(dāng)瀏覽器訪問(wèn)服務(wù)器時(shí)會(huì)形成一個(gè)請(qǐng)求,瀏覽器發(fā)送請(qǐng)求時(shí),先經(jīng)過(guò)Fiddler,然后再到服務(wù)器。服務(wù)器返回?cái)?shù)據(jù)給瀏覽器時(shí),也會(huì)經(jīng)過(guò)Fiddler再到瀏覽器顯示。由于所有的網(wǎng)絡(luò)數(shù)據(jù)都會(huì)經(jīng)過(guò)Fiddler,因此Fiddler能夠截獲這些數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的抓包。
Fiddler就好比一個(gè)房產(chǎn)中介,你(客戶端)想要租房子,把你的訴求告訴中介(Fiddler),中介根據(jù)你的訴求去(服務(wù)器)找符合條件的房子,房子信息是先傳給中介的,然后中介再把信息轉(zhuǎn)給你。
在你打開Fiddler的一瞬間,它就已經(jīng)設(shè)好瀏覽器的代理了,代理地址:127.0.0.1(表示本機(jī)),端口8888當(dāng)你關(guān)閉的時(shí)候,它又幫你把代理還原了。
3 Fiddler安裝
官網(wǎng)下載安裝:https://www.telerik.com/download/Fiddler
4 Fiddler使用
4.1 界面介紹
4.1.1工具欄
面板
4.1.3 右側(cè)面板
功能說(shuō)明:
1、Statistics:請(qǐng)求的性能數(shù)據(jù)分析
點(diǎn)開一個(gè)請(qǐng)求,就可以看到關(guān)于HTTP請(qǐng)求的性能及數(shù)據(jù)分析了。
ClientConnected: 客戶端創(chuàng)建連接的時(shí)間
ClientBeginRequest: 客戶端開始請(qǐng)求時(shí)間
GotRequestHeaders: 獲取請(qǐng)求頭時(shí)間
ClientDoneRequest: 客戶端完成請(qǐng)求時(shí)間
ServerConnected: 服務(wù)器創(chuàng)建連接時(shí)間
FiddlerBeginRequest: 代理服務(wù)器開始請(qǐng)求時(shí)間
ServerGotRequest: 服務(wù)器獲得請(qǐng)求時(shí)間
ServerBeginResponse: 服務(wù)器開始響應(yīng)時(shí)間
GotResponseHeaders: 獲取響應(yīng)頭時(shí)間
ServerDoneResponse: 服務(wù)器完成響應(yīng)時(shí)間
ClientBeginResponse: 客戶端開始響應(yīng)時(shí)間
ClientDoneResponse: 客戶端完成響應(yīng)時(shí)間
【說(shuō)明】:
這些參數(shù)可以體現(xiàn)一個(gè)請(qǐng)求從發(fā)送到返回響應(yīng)的時(shí)間。
通過(guò)選擇多個(gè)會(huì)話來(lái)獲得這幾個(gè)會(huì)話的總的信息統(tǒng)計(jì),比如多個(gè)請(qǐng)求和傳輸?shù)淖止?jié)數(shù)。選擇第一個(gè)請(qǐng)求和最后一個(gè)請(qǐng)求,可獲得整個(gè)頁(yè)面加載所消耗的總體時(shí)間。從條形圖表中還可以分辨出哪些請(qǐng)求耗時(shí)最多,從而對(duì)頁(yè)面的訪問(wèn)進(jìn)行訪問(wèn)速度優(yōu)化。
2、Inspectors:查看數(shù)據(jù)內(nèi)容
對(duì)抓到的請(qǐng)求進(jìn)行解包,上半部分是請(qǐng)求的內(nèi)容,下部是響應(yīng)的內(nèi)容。在Inspectors面板下,提供Header、TextView、HexView、Raw等多種方式查看單條http(s)請(qǐng)求報(bào)文的信息。
HTML/JS/CSS使用TextView可以看到響應(yīng)的內(nèi)容;Raw標(biāo)簽可以查看原始的、也是最詳細(xì)的符合HTTP標(biāo)準(zhǔn)的請(qǐng)求和響應(yīng);Auth可以查看授權(quán)Proxy-Authorization和Authorization的相關(guān)信息;Cookies標(biāo)簽可以看到請(qǐng)求的cookie和響應(yīng)的set-cookie頭信息。
3、AutoResponder:自動(dòng)響應(yīng)
允許攔截指定規(guī)則的請(qǐng)求,并返回本地資源或Fiddler資源,從而代替服務(wù)器響應(yīng)。
4、Composer:自定義請(qǐng)求發(fā)送服務(wù)器
Composer允許自定義請(qǐng)求發(fā)送到服務(wù)器,用于前后端接口聯(lián)調(diào),可以模擬向響應(yīng)的服務(wù)器發(fā)送數(shù)據(jù)的過(guò)程。
5、Filters:請(qǐng)求過(guò)濾規(guī)則
Fiters是過(guò)濾請(qǐng)求用的,當(dāng)你刷新一下瀏覽器,一大片不知道哪來(lái)請(qǐng)求,看著礙眼,它還一直刷新你的屏幕。這個(gè)時(shí)候你可以通過(guò)過(guò)濾規(guī)則來(lái)過(guò)濾掉那些不想看到的請(qǐng)求。
6、Timeline: 性能分析
對(duì)選擇多個(gè)請(qǐng)求有意義。作用類似HttpWatch。
4.1.4 底部控制面板
1、命令行工具:執(zhí)行一些快捷操作。
2、狀態(tài)欄:
Capturing:開啟/關(guān)閉 Fiddler的監(jiān)聽;
All Process:過(guò)濾會(huì)話選擇
4.2 Fiddler如何抓HTTPS的包
Fiddler默認(rèn)抓HTTP格式的包,那么對(duì)于HTTPS數(shù)據(jù)包如何抓取呢?
不得不說(shuō)Fiddler真是個(gè)功能強(qiáng)大的好東西,它可以通過(guò)偽造CA 證書來(lái)欺騙瀏覽器和服務(wù)器。大概原理就是在瀏覽器面前Fiddler偽裝成一個(gè)HTTPS服務(wù)器,而在真正的HTTPS服務(wù)器面前Fiddler又裝成瀏覽器,從而實(shí)現(xiàn)解密HTTPS數(shù)據(jù)包的目的。
具體設(shè)置步驟如下:
步驟1:
Tools –> Fiddler Options –> HTTPS
步驟2:
選擇HTTPS欄,勾選Decrypt HTTPS traffic和Ignore server certificate errors兩項(xiàng), Fiddler截獲HTTPS請(qǐng)求,點(diǎn)擊OK(首次點(diǎn)擊會(huì)彈出是否信任Fiddler證書和安全提示,直接點(diǎn)擊yes就行)
4.3 Fiddler如何抓手機(jī)APP的包
Fiddler可以抓取瀏覽器的包,那么怎么抓取移動(dòng)端設(shè)備的數(shù)據(jù)包呢?
步驟1:設(shè)置好HTTPS代理(見(jiàn)上一步驟)
步驟2:配置Fiddler允許遠(yuǎn)程鏈接
步驟3:配置移動(dòng)端設(shè)備
(1)移動(dòng)端的數(shù)據(jù)包,都是要走WiFi出去,所以首先需要確保手機(jī)連接的WiFi和Fiddler出于同一個(gè)局域網(wǎng)
(2)要知道電腦的IP地址(當(dāng)然這個(gè)電腦是安裝Fiddler的電腦):
方法一:打開Fiddler,點(diǎn)擊箭頭所指的下三角,鼠標(biāo)懸浮在Online,可以看到IP地址
方法二:打開cmd命令行,輸入IPconfig查看本機(jī)IP
(3)查看Fiddler的端口號(hào),Tools-> Options->Connections,port中值就是端口號(hào),一般默認(rèn)為8888,不用改
(4)下載證書
①打開手機(jī)瀏覽器,輸入http://IP:端口號(hào)(例如我的手機(jī),http://10.72.160.181:8888),點(diǎn)擊前往(每換一個(gè)WiFi都要重新下載安裝證書),訪問(wèn)網(wǎng)址之后會(huì)跳轉(zhuǎn)到證書下載頁(yè),點(diǎn)擊FiddlerRoot certificate下載證書
②下載完證書后安裝證書:在手機(jī)設(shè)置中搜索證書,并進(jìn)入安裝證書界面:
③更改手機(jī)無(wú)線網(wǎng)的代理
打開Android設(shè)備的“設(shè)置” ->“WLAN”,找到你要連接的網(wǎng)絡(luò),在上面長(zhǎng)按,然后選擇“修改網(wǎng)絡(luò)”→勾選“顯示高級(jí)選項(xiàng)”(不同的手機(jī),設(shè)置方法有所不同)→將代理改為手動(dòng)→在“代理服務(wù)器主機(jī)名”輸入電腦的IP地址,在“代理服務(wù)器端口”輸入8888,然后保存
④啟動(dòng)手機(jī)設(shè)備中的瀏覽器,訪問(wèn)百度首頁(yè),打開Fiddler就可以看到抓包數(shù)據(jù)了
備注:
·手機(jī)上設(shè)置代理后,Fiddler上抓到的是手機(jī)和PC上所有的請(qǐng)求,如果只過(guò)濾手機(jī)上的請(qǐng)求,且不影響電腦網(wǎng)絡(luò)設(shè)置:
1.在電腦通過(guò)cmd命令查找IP:IPconfig ,查看計(jì)算機(jī)名:set computername
2.在 Fiddler 的 QuickExec 區(qū)塊,輸入以下指令,并按下 Enter 確認(rèn)。
prefs set Fiddler.network.proxy.registrationhostname +你的電腦名稱(剛才查詢的)
4.4 抓包分析
根據(jù)上面的介紹,大家應(yīng)該知道怎么抓包了。簡(jiǎn)而言之,只要客戶端進(jìn)行相關(guān)的操作,Fiddler左側(cè)的會(huì)話列表都會(huì)顯示一連串的數(shù)據(jù),這個(gè)就是抓包數(shù)據(jù)。那么怎么對(duì)抓包信息進(jìn)行分析呢?
找到對(duì)應(yīng)的請(qǐng)求包→ →看請(qǐng)求信息→看響應(yīng)結(jié)果。
前置知識(shí)說(shuō)明:
一、找到對(duì)應(yīng)的請(qǐng)求包
怎么抓到目的包,也就是問(wèn)題對(duì)應(yīng)的包?
建議先停止抓包,并清除之前的記錄,然后在客戶端進(jìn)行操作,這樣Fiddler上抓到的基本上是當(dāng)前操作的記錄,然后再對(duì)抓包數(shù)據(jù)進(jìn)行分析。
二、看請(qǐng)求信息
從這個(gè)示例中可以看出,請(qǐng)求方式是POST,POST的信息分四部分,請(qǐng)求行、請(qǐng)求頭、空一行、Body,GET請(qǐng)求是沒(méi)有Body的。
Body是本次請(qǐng)求所提交的數(shù)據(jù),如果需要Body進(jìn)行解碼,那么復(fù)制Body內(nèi)容,點(diǎn)擊 TextWizard圖標(biāo),打開解碼器,或者選中需要解碼的內(nèi)容,右鍵選擇發(fā)送到解碼器。
Raw存放的是原始數(shù)據(jù),其他的項(xiàng)是分析請(qǐng)求中的某一種數(shù)據(jù)。
抓包分析:
看對(duì)應(yīng)的接口有沒(méi)有觸發(fā)請(qǐng)求,如果沒(méi)有請(qǐng)求或請(qǐng)求有問(wèn)題,那就是前端的BUG。
三、看響應(yīng)結(jié)果
HTTP響應(yīng)主要由狀態(tài)行、消息報(bào)頭、響應(yīng)正文(和消息報(bào)頭之間空一行)組成。
從上述示例的消息報(bào)頭中可以看出,響應(yīng)的狀態(tài)碼為200 OK,是響應(yīng)成功的,響應(yīng)的類型是application/Json,這是POST請(qǐng)求最常見(jiàn)的Json格式。所以也可以點(diǎn)擊Json查看響應(yīng)正文,樹狀結(jié)構(gòu)展示,更直觀友好。從Json中可以看出,這里傳了5個(gè)參數(shù)。
抓包分析:
如果前端請(qǐng)求沒(méi)問(wèn)題,就看后端返回報(bào)文,根據(jù)接口文檔,返回的數(shù)據(jù)有誤,要具體分析報(bào)錯(cuò)的內(nèi)容。如果是前端傳參不對(duì)導(dǎo)致的,那就是前端問(wèn)題,如果傳參正確,后端處理不正確,那可能就是后端問(wèn)題。
如果后端響應(yīng)了且數(shù)據(jù)和接口文檔一致,那就是前端展示的問(wèn)題。
總結(jié),按前端→后端→前端的順序進(jìn)行分析。
舉例:比如一個(gè)登錄界面,輸入用戶名密碼后點(diǎn)擊【登錄】發(fā)現(xiàn)無(wú)響應(yīng)怎么回事?類似的問(wèn)題還有,一個(gè)支付功能,支付成功后在我的訂單里卻沒(méi)有顯示?;蛘咭粋€(gè)查詢功能,輸入條件查詢后沒(méi)有數(shù)據(jù)展示出來(lái)(先排除是否是因?yàn)閿?shù)據(jù)庫(kù)沒(méi)有數(shù)據(jù)導(dǎo)致的)。一般都可以套用上面的回答。
總結(jié)
以上是生活随笔為你收集整理的Fiddler的使用介绍及抓包分析(详解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql8.0创建属性_MySQL8.
- 下一篇: 空气中超声衰减