接口測試工具-目錄
Fiddler簡介
Fiddler是一款免費的Windows平台的抓包工具,功能強大,使用簡單。Fiddler抓包基於中間人代理模式,工作原理如圖2.1所示,Fiddler在啟動時會自動設置系統代理,Chrome瀏覽器等程序訪問網頁或發送HTTP請求時,便會自動經過Fiddler發送給服務端,因此Fiddler中便能查看到所有當前PC發送的所有HTTP請求。
Fiddler主要特點如下:
- 可以抓到請求數據,查看Raw格式/表單格式/JSON/XML格式.
- 可以攔截和修改請求.
- 更強大的過濾器。
- 可以抓取Postman/接口腳本發送的請求,方便調試。
- 可以抓包手機請求。
Fiddler主界面
Fiddler的主界面分為菜單欄、工具欄、請求列表、快速命令欄、監控面板及狀態欄等,如圖2.2所示。
Fiddler菜單欄包括File(文件)、Edit(編輯)、Rules(規則)、Tools(工具)、View(顯示)及Help(幫助)。
Fiddler工具欄包括WinConfig(Windows配置)、、Replay(重放)、清理、Go(攔截放行)、Stream(流)、Decode(解碼)、Keep: All sessions(請求會話保持)、Any Process(抓取進程)、Find(查找)、Save(保存)、、Browse(瀏覽器選擇)及Clear Cache(清除緩存)。
主體區左側為請求列表,又稱會話列表(客戶端與服務端的一次交互被稱為一次會話過程)。請求列表中使用不同的圖標區分不同類型的會話類型,常見的會話類型如表2.1所示。
注:以上表格使用新版Fiddler的會話圖標,HTML格式、XML格式、CSS、腳本、圖片等圖標與老版本略有不同。
請求圖標可以幫助我們快速識別各種類型的請求或相應,GET方法的請求根據不同的響應數據類型顯示不同的圖標,POST等方法按請求方法類型顯示對應的圖標。對於數據量比較大的請求,會在請求和響應的過程中或顯示為上傳和下載的圖標,當使用斷點攔截請求或響應時,上傳、下載圖標顯示為暫停的樣式。
請求抓包
抓取請求是Fiddler的主要功能之一,Fiddler在啟動時會自動設置系統代理,因此只要打開Fiddler就可以正常抓取當前PC端的HTTP請求。要抓取HTTPS請求或移動端請求則要進行相應的配置。
抓取PC端HTTPS請求
打開瀏覽器訪問https://www.baidu.com/查看Fiddler中抓取的請求,如圖2.3所示。
未設置和安裝證書時抓取到的HTTPS請求顯示為鎖型圖標的HTTP CONNECT請求,轉發到對應網站的443端口。
抓取HTTPS請求需要現在設置中勾選捕獲HTTPS連接及解密HTTPS數據。操作方法是,點擊菜單欄Tools(工具),選擇Options(選項),切換到HTTPS面板,如圖2.3所示。
如上圖,勾選Capture HTTPS CONNECTs(捕獲HTTPS連接)、Decrypt HTTPS traffic(解密HTTPS數據)和Ignore server certificate errors(unsafe)(忽略服務端證書錯誤)。由於我們需要使用Fiddler提供的免費證書,有可能服務端或報證書錯誤,忽略即可。
安裝Fiddler提供的HTTPS證書。安裝方法非常簡單,啟動Fiddler后,打開瀏覽器,訪問http://localhost:8888/,如圖2.5所示。
點擊頁面下方的鏈接FiddlerRoot certificate,下載完成后雙擊打開,點擊安裝證書,一路下一步使用默認選項安裝即可,安裝結束后會彈出提示導入成功。
重啟Fiddler,重新訪問https://www.baidu.com/,如圖2.6所示。
這時可以抓取到HTTPS類型的請求。點擊該請求,右側點擊Inspectors面板,上半部分為請求信息,下半部分為響應信息。木偶人響應信息已編碼過,點擊Responsebody is encoded.Click to decode.解碼查看,選擇Raw格式,可以查看到返回的百度網頁的源碼。
注:如果抓不到包可以檢測一下是否勾選了Filter過濾器。
強制關閉Fiddler會導致代理不能正常取消,Fiddler卻已關閉,而無法上網的情況。此時重新打開Fiddler,然后正常關閉一次即可自動取消代理。
抓取移動端請求
抓取手機端App發送的HTTP或HTTPS請求,需要手動在手機端設置網絡代理為Fiddler代理服務地址,即使手機通過Fiddler代理上網,才能抓取到。
首先手機要與電腦在同一局域網內,比如同一Wi-Fi網絡上網。電腦端啟動Fiddler(自動啟動代理服務,默認端口號為8888),使用ipconfig或ifconfig查看電腦的IP地址,如192.168.1.3,那么Fiddler代理服務的地址即192.168.1.3:8888。
Fiddler中點擊菜單欄Tools(工具),選擇Options選項,切換到Connections選項卡,勾線Allow remote computers to connect,已允許遠程設備連接Fiddler代理服務,如圖2.7所示。
打開手機設置,找到所連接的Wi-Fi網絡,選高級(iPhone手機點擊Wi-Fi網絡后面的圈i圖標),配置代理,選擇手動,IP地址和端口號分別配置為電腦IP地址和8888,點擊保存(存儲),如圖2.8所示。
使用手機瀏覽器訪問http://電腦IP地址:8888(建議使用手機原生瀏覽器),會顯示Fiddler Echo Service頁面,同樣點擊FiddlerRoot certificate,下載並安裝證書。安裝完證書后,iPhone手機還需要對證書進行信任,手機設置中點擊通用,點擊關於本機,點擊證書信任設置,設置信任DO_NOT_TRUST_FiddlerRoot證書,返回即可。
此時保持Fiddler打開,使用手機瀏覽器瀏覽網站或使用App請求即可,如彈出HTTPS證書不被信任警告,忽略即可。
注:設置完代理有,由於手機需要通過Fiddler代理上網,如果Fiddler關閉手機會連不上網。不抓包時可以在手機設置中把配置代理取消掉。
請求查看
Inspector(檢查員)
在Fiddler請求列表中點擊相應請求,右側選擇Inspector選項卡,可以查看請求及響應的詳細內容,上半部分為請求,下半部分為響應。請求和響應可以使用子選項卡查看不同的內容及格式,對應說明如表格2.2及2.3所示。
一般可以使用Raw查看原始的請求數據,如果是表單類型的請求,可以使用WebForms查看表單類型的數據,如果是JSON或XML格式可以使用對應的子選項卡查看。
HTTP數據一般是經過壓縮傳輸的,Transformer一般使用默認的即可。可以通過Raw來查看原始響應數據或按照相應的數據類型選擇對應的格式查看。
2.2.3 過濾請求
Filters(過濾器)
當請求較多時,使用Filters組件可以幫我們快速過濾出指定的請求。要啟用過濾器,首先要右側Filters選項卡中勾選Use Filters,如圖2.9所示。
Fiddler支持的過濾方式如下:
- Hosts:按服務器過濾。
- Clients Process:按客戶端程序過濾。
- Request Headers:按請求頭過濾。
- Breakpoints:設置斷點。
- Response Status Code:按狀態碼過濾。
- Response Type and Size:按響應類型及大學過濾。
- Response Headers:按響應頭過濾。
例如,可以在Hosts段第二個下拉框選擇Show only the following Hosts,在下面的文本框中設置要顯示域名,以分號分開,如www.baidu.com;www.163.com,就可以只顯示發往這兩個域名的請求。
注:啟用關閉過濾器有時需要重啟后方能生效。
發送請求
Composer(調試器)
Fiddler的Composer選項卡可以用來發送和調試請求,如圖2.10所示。
Composer可以用於發送HTTP請求,功能比較簡單,表單格式數據需要自己進行URL編碼,填寫完成后點擊Execute發送即可。請求會以會話的形式顯示在請求列表中,同事History歷史記錄中會有響應的記錄。
Mock接口
AutoResponder(自動響應)
Fiddler的Anto Reponder選項卡可以根據一定的規則對匹配到的請求進行自動響應或轉向其他的接口或文件。如圖2.11所示。
勾選Enable rules啟用匹配規則,勾選Unmatched requests passthrough對未匹配到的請求正常放行。
斷點調試
當我們需要詳細抓取並調試某個接口的數據時,可以使用Fiddler的斷點調試功能。Fiddler的斷點調試設置方式有兩處,一是Filter過濾器中對指定特征的請求自動進行斷點攔截,另一種是對所有請求設置斷點,設置方式為:菜單Rules -> Automatic Breakpoints -> Before Requests/After Responses。斷點分為兩種方式,一種是Before Requests請求前攔截,即請求未發送到服務器之前攔截。一種是After Responses,服務端響應未送達客戶端時攔截,一般我們使用第一種,如圖2.12,被斷點攔截的請求會顯示為暫停圖標。此時可以在Inspector中修改其數據,然后點擊Go按鈕,使用修改后的數據完成請求。
注:如果線上環境中不希望請求數據(如提交訂單或支付信息)真實發送到服務器,同時又需要對請求進行抓包,也可以使用斷點功能。
弱網模擬
弱網模擬是App測試中一個常用測試項。Fiddler菜單中的弱網模擬功能,只有模擬非常慢的模擬Modem調制解調器上網速度一個選項,設置方式為Rules ->Performance->Simulate Modem Speeds。
更精確的網速控制需要通過Fiddler Script實現。
請求重放
Fiddler支持對抓取到的請求進行重放。操作方法為在請求列表區域,指定請求上,點擊右鍵,選擇Replay,選擇Replay Sequencely,輸入要重放的次數即可。
修改HOSTS
在Fiddler中還可以快速修改HOSTS配置,操作方法為點擊慘淡Tools -> HOSTS,設置保存即可。