Fiddler 到底能做什么?

PS:本文轉(zhuǎn)載自黑馬測試高贊知乎文章
鏈接:https://www.zhihu.com/question/55617707/answer/2690009021

Fiddler是檢查 Http 流量的最流行的工具之一。此工具可幫助我們非常輕松地測試 REST API / SOAP Web 請求。
題主的問題:Fiddler 到底能做什么。仔細思考,其實有兩層意思:
第一層:Fiddler工具的應(yīng)用范圍
第二層:Fiddler工具的使用方法
為將這兩層意思全部解決,所以本文分為6個章節(jié)進行介紹:
一、能干什么_Fiddler原理介紹
二、使用_Fiddler下載及通用配置
三、使用_Fiddler面板十一大對應(yīng)功能及用法的介紹
四、使用_Fiddler三大常用應(yīng)用場景及用法
五、使用_Fiddler的第三方擴展
六、總結(jié)+學習視頻推薦
一、能干什么_Fiddler原理介紹:
想要搞明白Fiddler應(yīng)用范圍,首先是要了解Fiddler的原理。
1、Fiddler原理
為了講清原理,我們舉例瀏覽器上網(wǎng)。
簡單來說,瀏覽器上網(wǎng),其實是通過前端瀏覽器,將請求數(shù)據(jù)發(fā)送給后端服務(wù)器,再由服務(wù)器把響應(yīng)內(nèi)容返回給前端瀏覽器。
Fiddler作為代理,其實就是瀏覽器將發(fā)送給服務(wù)器的請求數(shù)據(jù),由Fiddler監(jiān)聽并捕獲,轉(zhuǎn)而從Fiddler繼續(xù)向目標服務(wù)器發(fā)送請求。當服務(wù)器接收到請求數(shù)據(jù)并響應(yīng),再將返回值由Fiddler發(fā)送給瀏覽器并進行渲染,從而Fiddler起到瀏覽器到服務(wù)器“中間代理”的作用。

2、補充:Fiddler如何設(shè)置,實現(xiàn)“中間代理”作用?
之前我們已經(jīng)說過Fiddler的整體原理,那么為什么當我們啟動它,它就成為了我們的代理呢?又為什么FireFox或其它一些瀏覽器無法抓到包?這就需要我們更深入的去了解他的代理功能。
我們說過,當在系統(tǒng)上運行 Fiddler 時,它充當位于客戶端應(yīng)用程序和 Web 服務(wù)器之間的微型 Web 代理。那如何看到它?
在Fiddler菜單欄中:Tools>Options>Connections 默認勾選Act as system proxy on startup。這表明當我們啟用Fiddler時,它將作為我們的系統(tǒng)代理開始捕獲流量。默認情況下,它在本地機器 (127.0.0.1) 端口8888上運行。

通常有些瀏覽器默認使用的是系統(tǒng)代理,所以Fiddler打開該設(shè)置后便充當了瀏覽器到服務(wù)器中間的代理。比如:當我們打開chrome查看瀏覽器代理:

查看瀏覽器代理設(shè)置為系統(tǒng),打開系統(tǒng)代理同F(xiàn)iddler比對:

所以:
當我們打開Fiddler,它將自動充當瀏覽器代理工具不需要額外配置。
如果沒有抓到包則需要對瀏覽器的代理進行設(shè)置。
3、Fiddler到底能做什么?
通過上面的鋪墊,F(xiàn)iddler作用就呼之欲出了。Fiddler主要是位于客戶段和服務(wù)器端的HTTP代理工具,它能夠記錄并檢查電腦和互聯(lián)網(wǎng)之間的所有http通訊,并支持設(shè)置斷點,查看所有的“進出”Fiddler的數(shù)據(jù)(指cookie、html、js、css等文件)。他免費且功能非常強大,是web、移動端調(diào)試的利器。
1)Fiddler可以做到以下幾點:
監(jiān)控瀏覽器所有的HTTP/HTTPS流量
通過Fiddler可以熟悉HTTP協(xié)議
查看、分析請求內(nèi)容
偽造客戶端請求和服務(wù)器響應(yīng)
測試網(wǎng)站性能
解密HTTPS的web會話|
全局、局部斷點功能
擴展第三方插件
2)Fiddler使用場景
通過以上分析:我們可以得出Fiddler使用場景:
接口調(diào)試、接口測試、線上環(huán)境調(diào)試、Web性能分析、判斷前后端Bug、開發(fā)環(huán)境Hosts配置、Mock數(shù)據(jù)、弱網(wǎng)斷網(wǎng)測試。
了解了Fiddler能干什么,接下來我們再來看怎么使用Fiddler。
二、使用_Fiddler下載及通用配置
1、 Fiddler免費下載
免費下載 Fiddler Classic ,可使用下方鏈接:
https://www.telerik.com/download/fiddler
自檢提示:
? 該版本僅支持window系統(tǒng),其它系統(tǒng)不支持
? 確保我們已下載 Fiddler Classic 而不是 Fiddler Everywhere或其他。
? Fiddler 是Telerik 的第三方工具 ,用于記錄、檢查和更改計算機與 Web 服務(wù)器或服務(wù)器之間的 HTTP
2、配置 Fiddler Classic 以解密 HTTPS 流量
默認情況下,F(xiàn)iddler Classic 不會捕獲和解密安全的 HTTPS 流量。若要捕獲HTTPS 發(fā)送的數(shù)據(jù),請啟用 HTTPS 流量解密。
1)啟用 HTTPS 流量解密
點擊Tools選擇Options后進入https tab下,勾選Decrypt HTTPS CONNECTs

打開Fiddler,點擊工具欄中的Tools—>Options,HTTPS點擊Actions,點擊第一項:Trust Root Certificate,這時候桌面上會出現(xiàn)證書FiddlerRoot.cer文件,點擊OK設(shè)置成功,關(guān)閉Fiddler

2)將 Windows 客戶端配置為信任 Fiddler?根證書
a)在信任 Fiddler 根證書旁邊?單擊是。

b)一路yes直到出現(xiàn)該彈窗,證書安裝成功。

c)重啟fiddler就可以抓取HTTPS包了
3、連接手機
打開Fiddler,點擊工具欄中的Tools—>Options,勾選Ignore server certificate errors(unsafe)

右上角鼠標懸浮小地球獲取ip

在Options>Connections中獲取端口號,我這里使用的8889

打開手機長按當前連接的wifi(注意:保持手機和fiddler安裝的電腦保持在同一個wifi下)

點擊代理,選擇手動,輸入地球中的ip及端口號8889,并點擊右上角確認并保存
打開手機自帶的瀏覽器輸入ip:端口號

安裝FiddlerRoot.cer文件即可。安裝方法根據(jù)ios和Android系統(tǒng)自行搜索即可。
安裝成功后即可抓到手機包。
以上都是首次安裝后的通用配置,只有正確配置 Fiddler 后,我們才能夠使用其大量功能
三、使用—Fiddler面板十一大對應(yīng)功能及用法的介紹
下載、配置、連接手機都操作好后,F(xiàn)iddler到底有什么功能,下面通過面板對應(yīng)功能一一來介紹。
面板1、Fiddler工具條:
也就是最上方紅框標注的一條

功能分別有:系統(tǒng)連接,添加備注,回放,清除,運行,流,解碼,保存會話,選擇抓取被監(jiān)聽的應(yīng)用,查找,保存,清除緩存,文本編碼解碼工具。
接下來我們分別介紹些常用的按鈕及他們的功能:
1)添加備注
可以將有問題的請求添加備注

2)重放請求
重放請求可以對應(yīng)該請求重新發(fā)起,通常用來跟斷點配合使用

shift+r打開Repeat Count可以進行多次請求

3)清除按鈕

Remove all (快捷鍵Ctrl+x)可以快速清除所有的請求
也可以按照自己的需求進行不同類別的刪除。
4)Go按鈕
通常也是跟隨打斷點使用,當我們對請求打斷點后,點擊Go將執(zhí)行下一步。

點擊Go將進行下一步請求發(fā)送,并得到響應(yīng)結(jié)果。

5)流模式
同瀏覽器請求方式一致,從服務(wù)器請求或響應(yīng)后直接將結(jié)果呈現(xiàn)出來

打開該功能,將無法進行 斷點、偽造請求。通常保持默認使用緩存模式。
6)Decode解決亂碼

出現(xiàn)藍框后重新請求即可

7)Keep:All sessions:保存會話(一般不點)
8)Any Process:選擇抓取被監(jiān)聽的應(yīng)用
當我們打開多個窗口會造成各種請求亂入。這個時候通過點擊Any Process并拖拽到我們要抓取的目標窗口,接下來被監(jiān)聽的請求都是從該窗口發(fā)出的。
9)Find (Ctrl+f):查找文件并標注顏色

10)Save:保存?當前會話窗口中的所有被監(jiān)聽的請求
11)Clear Cache:清除緩存
12)TextWizard:文本編碼解碼工具
如果我們需要對get請求進行編碼可以使用該工具

總結(jié):Fiddler工具條為我們提供了一些常用操作。
面板2、Web Session List 查看 Web 會話摘要

Web Session List分別由: ID 編號、響應(yīng)碼、協(xié)議、主機名、內(nèi)容類型、URL、正文大小、緩存值、原始進程、備注和自定義列組成。接下來分別介紹各自意義:
1)# :代表請求ID
表示每個請求對應(yīng)的ID,從1開始,按照頁面請求的順序遞增,請求時間越晚,ID值越大,可以點擊#位置,修改請求展示順序;
2) Result:響應(yīng)狀態(tài)碼;表示服務(wù)器響應(yīng)請求狀態(tài)的3位數(shù)字:
1XX——提示信息,請求被成功接收,該狀態(tài)碼不常見
2XX——成功,請求被成功處理 最常見的200
3XX——重定向相關(guān),304表示跳轉(zhuǎn)到緩存頁面
4XX——客戶端錯誤 常見404
5XX——服務(wù)端錯誤 常見500
3) Protocal:請求協(xié)議:請求使用的協(xié)議,如Http、Https等。
4) Host:請求地址的域名
5) URL:請求的服務(wù)器具體路徑和文件名,GET請求還包括請求參數(shù)
6) Body:響應(yīng)體的長度
7) Cacheng:請求的緩存過期時間或緩存控制 header等值
8) Content-Type:響應(yīng)內(nèi)容的格式
application/json;charset=UTF-8——響應(yīng)內(nèi)容為Json格式,以UTF-8編碼
text/html; charset=UTF-8——響應(yīng)內(nèi)容為html網(wǎng)頁,以UTF-8編碼
application/javascript;charset=UTF-8——響應(yīng)內(nèi)容為js文件,以UTF-8編碼
image/jpeg——響應(yīng)內(nèi)容為圖片
image/x-icon——響應(yīng)內(nèi)容為icon圖標
text/css;charset=UTF-8——響應(yīng)內(nèi)容為css文件,并以UTF-8編碼
9)Process:監(jiān)控的進程
10)Comments:為請求添加的備注
面板3、配置列
要對列重新排序,請向左或向右拖動列標題。

要調(diào)整列的大小,請拖動列標題的邊緣。

面板4、添加自定義列
1)使用自定義列菜單。
右鍵單擊列頂部并選擇自定義列

2)或使用方法2




面板5、QuickExec命令與底部狀態(tài)欄

常用如
1)bpu打斷點
輸入 bpu?http://baidu.com?后回車

凡是包含http://baidu.com請求都會被打上斷點。

2)取消斷點
輸入 bpu 后回車,再次請求百度后則恢復(fù)正常無斷點。
3)??sometext高亮某個字段
輸入?http://baidu.com?回車后 凡是包含baidu字樣的均被高亮

更多玩法:召喚幫助文檔:輸入help回車可打開幫助文檔:Quick Exec幫助文檔:https://docs.telerik.com/fiddler/knowledge-base/quickexec
面板6、狀態(tài)欄
1)Capturing捕獲
啟動 Fiddler exe,它將開始捕獲 HTTP 流量。
運行 Fiddler 以開始捕獲系統(tǒng)上各種客戶端應(yīng)用程序(例如 Curl、Chrome、Internet Explorer)發(fā)出的 Web 請求/響應(yīng)。要開始/停止捕獲。

默認情況下,當我們運行 Fiddler 時,它的行為類似于我們系統(tǒng)上的默認代理服務(wù)器。但是,除非客戶端應(yīng)用程序使用系統(tǒng)默認代理,否則并非所有 Web 請求都出現(xiàn)在Fiddler中。
2)All Processes
全部進程、瀏覽器進程、非瀏覽器進行、全部隱藏

3)快捷打斷點
首次點擊:請求前的斷點

二次點擊為:響應(yīng)后的端點
第三次點擊關(guān)閉。
面板7、右側(cè)請求及響應(yīng)解析功能(必會)
右側(cè)通常是解析左側(cè)Session List會話列表中的請求及響應(yīng),并對此進行解析,我們分別介紹下他們的功能:
1)Stratistics統(tǒng)計

2)inspectior檢查器

3)請求及響應(yīng)查看方式
根據(jù)不同場景選擇對應(yīng)標簽
TextView

SyntaxView

ImageView

WebView

Auth

Caching

面板8、AutoRespnder自動響應(yīng)器(必會)
AutoResponder 主要作用:可以使我們,通過設(shè)置條件,使得對于特定請求可以讓fiddler直接返回我們預(yù)定的響應(yīng)內(nèi)容,而不是向原服務(wù)器請求后轉(zhuǎn)發(fā)響應(yīng)內(nèi)容。
? 重定向到本地資源
? 使用Fiddler的內(nèi)置響應(yīng)
? 自定義響應(yīng)

下面實用幾個案例感受下AutoRespnder用法:
1)AutoRespnder案例:百度 替換成本地的 Fiddler 圖片
https://www.baidu.com/img/PCtm_d9c8

替換成本地圖片:

添加規(guī)則:


編輯目標地址,替換文件地址,勾選生效規(guī)則

清空瀏覽器緩存,再次訪問?https://www.baidu.com/

2)導(dǎo)入匹配的規(guī)則集
a 單擊導(dǎo)入按鈕。
b 選擇.saz或.farx文件

從Windows 資源管理器:
選擇.saz或.farx文件。
將所選文件從Windows 資源管理器拖放到“AutoResponder”選項卡。
3)AutoRespnder之Mock數(shù)據(jù)
模擬后端服務(wù)器接口數(shù)據(jù)返回


使用筆記本打開后對 href+=內(nèi)容進行替換成我們需要的內(nèi)容:用戶名或密碼有誤,請重新輸入或找回密碼

修改后保存編輯后的響應(yīng)文檔。
重新發(fā)送請求查看響應(yīng)信息,響應(yīng)結(jié)果已經(jīng)是我們需要的了。

面板9、Composer設(shè)計器(必會)
Fiddler的Composer的功能就是用來創(chuàng)建HTTP Request然后發(fā)送請求??梢允謩觿?chuàng)建一個新的請求,也可在會話表中拖拽一個現(xiàn)有的請求。用來檢查和分析請求和響應(yīng),以及快速檢索和接收數(shù)據(jù)。
1)模式
Composer 有兩種模式。在 Parsed 模式下,我們可以使用這些框來構(gòu)建 HTTP(S) 請求。在Raw模式下,我們必須自己輸入格式正確的 HTTP 請求。通常使用 Parsed 是我們想要的。
2)選項
a. Options 選項卡顯示了允許我們自定義 Composer 行為的選項。
b. Inspect Session選擇新會話并在發(fā)出請求時激活 Inspectors 選項卡。
c. Fix Content-Length Header調(diào)整 Content-Length 請求標頭(如果存在)的值以匹配請求正文的大小。
d. 如果可能, Follow Redirects會導(dǎo)致 HTTP/3xx 重定向觸發(fā)新請求。Composer 將跟進 fiddler.composer.followredirects.max 默認重定向。
e. Automatically Authenticate使 Fiddler Classic 使用當前用戶的 Windows 憑據(jù)自動響應(yīng)使用 NTLM 或協(xié)商協(xié)議的 HTTP/401 和 HTTP/407 質(zhì)詢。
3)Fiddler創(chuàng)建Request有兩種方式
? 可以手寫一個Request。
? 或是在Web sessions會話列表中拖拽一個已有的Request。

4)從 Composer 重新發(fā)送會話
step1. 在 Composer 選項卡中,單擊Scratchpad選項卡。
step2. 從會話列表中單擊并拖動一個或多個會話。

step3:雙擊 Scratchpad 中的會話內(nèi)容以選擇整個會話內(nèi)容。

step4. 單擊Execute執(zhí)行以重新發(fā)出請求。

Composer起到的功能和Inspectors中的作用一樣,都是篡改數(shù)據(jù),不過Composer可以篡改Cookie中的數(shù)據(jù)。也就是說,Inspectors篡改的是我們輸入的數(shù)據(jù),例如密碼輸入什么就是什么。而Composer篡改的是經(jīng)過處理后的
面板10、Timline查看一個或多個 Web 會話的傳輸時間線的瀑布圖:
1. 在Web 會話列表中選擇一個或多個 Web會話。按住Ctrl鍵并單擊以選擇多個會話。
2. 單擊時間軸選項卡。

面板11、Filter過濾器(必用)
主要過濾請求

篩選主機,篩選后點擊執(zhí)行

篩選請求中包含的字段

通常在測試環(huán)境掛測試泳道需要在請求頭添加泳道標識我們可以使用Set request header

請求將打到我們需要測試的泳道中,在測試環(huán)境中進行測試。

四、使用_Fiddler三大常用應(yīng)用場景及用法
場景1、斷點應(yīng)用(必會)
1)全局斷點用法:

請求前斷點:發(fā)送請求給服務(wù)器前進行斷點(可以用來模擬超時)
響應(yīng)后斷點:響應(yīng)回來了但是沒有發(fā)送給客戶端
請求前斷點可篡改請求及響應(yīng):
我們可以在WebForm中編輯我們要發(fā)送的請求

同時可以選擇我們需要的響應(yīng)結(jié)果。

將message的值修改為成功。這個時候我們的響應(yīng)結(jié)果如下圖所示:

篡改響應(yīng):當然我們也可以在響應(yīng)后斷電,在raw上修改響應(yīng)結(jié)果


斷點應(yīng)用場景:
可以用來測試一些極端異常的場景。
當我們在前端調(diào)試時,將接口結(jié)果截獲下來,發(fā)送異常值給服務(wù)端,
當響應(yīng)后打斷點不下發(fā),通過響應(yīng)未發(fā)送給客戶端來模擬斷網(wǎng),請求超時的場景。
2)局部斷點的方法
在QuickExec中輸入bpu xxx(任意字符)請求前斷點 如:

回車,查看下方出現(xiàn)RequestURI breakpoint for baidu 則便是該字段攔截生效。只給含有baidu的請求前打上斷點

凡是還有baidu字樣的均會打上斷點:

輸入:bpafter baidu 可進行響應(yīng)后攔截,則是只給含有baidu的響應(yīng)后打上斷點。輸入bpafter然后回車則取消
場景2、模擬弱網(wǎng)測試
模擬網(wǎng)絡(luò)限速:Rules>Performance>Simulate Modem Speeds勾選后默認網(wǎng)絡(luò)限速

該弱網(wǎng)通過腳本來實現(xiàn) 我們可以 打開Rule>選擇Customize Rules...
進入腳本后,Ctrl+f 輸入:m_simulateModem

請求1kb延遲300毫秒,響應(yīng)1kb延遲150毫秒。修改這里可以調(diào)整弱網(wǎng)時間。
? oSession["request-trickle-delay"] = "300"; 注釋的很明白,Delay sends by 300ms per KB uploaded.上傳1KB需要300ms,轉(zhuǎn)化一下上傳速度:1Kb/0.3s = 10/3(KB/s)
? 算法為1000/下載速度 = 需要delay的時間(毫秒),若50kB/s 需要delay20毫秒來接收數(shù)據(jù),所以根據(jù)你需要的網(wǎng)絡(luò)速度來修改上述值。
場景3、Visual Studio WebTest
捕獲 Web 流量(包括 AJAX 請求)以供以后使用 Visual Studio Web 測試回放的能力。
保存 WebTest
1. 從我們的 Web 應(yīng)用程序捕獲流量。
2. 單擊文件 > 導(dǎo)出會話 > 所有會話。
3. 單擊Visual Studio WebTest。
重放 WebTest
? 注意:我們必須安裝 Visual Studio 2005 或更高版本的 Team System 產(chǎn)品才能加載 .WebTest 文件。
要重放 WebTest:
1. 單擊文件 > 新建項目。
2. 展開Visual C#或Visual Basic。
3. 單擊測試節(jié)點。
五、使用_Fiddler第三方擴展
Fiddler還為我們提供了不同的第三方插件,供大家下載學習使用
鏈接:https://www.telerik.com/Fiddler/add


六、總結(jié):
下面這些是Fiddler能夠為我們提供的能力:

? 適用于 Windows的原始可信且安全(免費)的調(diào)試代理服務(wù)器工具。
? 成功記錄、檢查和更改 HTTP(s) 網(wǎng)絡(luò)請求和服務(wù)器響應(yīng)。
? 在短時間內(nèi)查找并修復(fù)錯誤。
? 輕松導(dǎo)入/導(dǎo)出各種格式的請求并消除猜測。
? 編寫自定義腳本以加快故障排除工作。
? 快速調(diào)試并更快地開發(fā) Web 通信代碼,讓我們有更多時間處理其他任務(wù)。
當然綜上所述,我們還可以通過視頻來學習到如何使用Fiddler功能:

推薦閱讀:軟件測試常見問題系列119-Fiddler、Postman、Jmeter都可以做接口測試,但他們區(qū)別是什么?
http://bbs.itheima.com/thread-514665-1-1.html

若你是對測試不太了解的測試小萌新,有太多太多對測試的疑惑(前途、薪資、技術(shù)含量、男生是否可以干.....),強烈推薦你觀看《測試小白必看:學習軟件測試必問的100個問題,從此貼開始》,相信能掃除掉你心目中90%以上的常見問題。
《100個常見問題鏈接》:http://bbs.itheima.com/thread-507947-1-1.html

最后,為方便大家自學軟件測試,特意給大家準備了一份13G的超實用干貨學習資源,涉及的內(nèi)容非常全面。
包括軟件學習路線圖,黑馬50多天的上課視頻、16個突擊實戰(zhàn)項目,80余個軟件測試用軟件,37份測試文檔,70個軟件測試相關(guān)問題,40篇測試經(jīng)驗級文章,上千份測試真題分享,還有2020軟件測試面試寶典,還有軟件測試求職的各類精選簡歷,希望對大家有所幫助…..?
《2022黑馬測試學習路線圖鏈接》:http://bbs.itheima.com/thread-405757-1-1.html
