本篇文章,博主想使用通俗易懂的話語,讓大家明白以下內容:
- 什麼是抓包
- 哪些場景需要用到抓包
- Fiddler抓包的原理
- 怎樣使用Fiddler進行移動端抓包
抓包
包 (Packet) 是TCP/IP協議通訊傳輸中的資料單位,一般也稱“資料包”。
我們平常測試過程中所說的資料包其實就是介面請求的資料,在HTTP請求中,包括請求頭資訊、請求內容、響應頭資訊、響應內容。
什麼是抓包
用特定的工具獲取客戶端與服務端之間傳送和返回的資料包。目的是分析資料包的協議、內容等,從而判斷介面的設計是否符合要求,比如抓包某次請求的請求引數與響應引數,檢視引數是否正確。
哪些場景下需要抓包
對於初學者或者沒有接觸過介面測試的同學而言,可能不太明白做介面測試或者介面自動化測試為什麼一定要學會對介面資料進行抓包。
那麼在哪些場景下需要抓包獲取請求資料呢?
-
重現bug,需要擷取資料定位問題時;
-
判斷問題是前端bug還是後端bug時;
-
做介面測試,但開發沒有提供介面文件時,需要抓包才能獲取介面資訊;
-
某個功能場景或者某些功能場景我們不知道呼叫了哪些介面,或者不知道介面呼叫的先後順序時;
-
需要修改返回引數時(用於mock或者別的場景)
在實際測試過程中,用的最多的場景是1、2、3、4。
Fiddler
抓包工具有很多種,如Wireshark、Fiddler、Charlse、Tcpdump、瀏覽器工具(F12)等,但在軟體測試工作中抓包物件一般是HTTP協議的介面,所以最多的是瀏覽器工具、Fiddler/Charlse。
Fiddler特點簡單歸納如下:
-
Fiddler能抓取客戶端和伺服器之間的HTTP/HTTPS請求,可以對介面請求設定斷點,甚至修改輸入輸出資料
-
Fiddler只能抓取HTTP/HTTPS協議
-
Fiddler除能對PC端瀏覽器抓包外,還支援對移動端進行抓包
Fiddler抓包原理
通常,我們使用瀏覽器瀏覽網頁,或者使用手機上的APP,互動可以使用以下簡化的流程圖表示:
客戶端(PC端或移動端) 向服務端通過傳送HTTP請求進行資料互動,而我們的需求是,抓取這個互動過程中的資料。
我們只需要在客戶端與服務端之間加上一個中介,讓它們之間互動的資料都通過這個中介,中介記錄這些通過自身的資料,就能獲取到客戶端與服務端之間具體的互動資料了。
Fiddler
便可以充當這個中介角色,互動流程如下:
啟動Fiddler
其實就是啟動了一臺代理web伺服器(Proxy),代理地址為127.0.0.1
,埠為8888
。只要HTTP請求通過127.0.0.1:8888
(即Fiddler) 進行代理髮送與接收,Fiddler就會記錄經過自身的HTTP請求資料,便抓取到了HTTP請求的相關資料。
而怎樣才能使得HTTP請求都通過127.0.0.1:8888
進行代理?Fiddler啟動時IE瀏覽器的代理會自動設定127.0.0.1:8888
為代理地址,Chrome、Firefox需要在瀏覽器中手動修改,移動端則需要在手機裡設定。
安裝
進入官網下載,地址為:https://www.telerik.com/download/fiddler
需填寫內容可填寫如下,Windows系統點選【Download for Windows】,點選後會跳轉頁面並開始下載 (沒有的話可以多嘗試兩次) ,如果沒有下載可根據跳轉頁面提示進行點選。
下載後得到安裝檔案FiddlerSetup.exe
,一路傻瓜式安裝即可。目前下載的版本為Progress Telerik Fiddler Classic
。
安裝完成後,開啟Fiddler,主介面如下:
-
如圖所示,切換至Inspectors可檢視對應請求的請求引數和返回引數
-
請求引數、返回引數不同內容及格式的展示,可以切換圖中對應展示視窗頂部的Tab按鈕,如Headers、WebForms、Raw、Json等。
-
會話視窗圖示說明見文章末說明。
接下來介紹怎樣使用Fiddler進行手機移動端抓包。
Fiddler移動端抓包
我們先來屢一下移動端抓包的大概思路:
-
Fiddler需要設定允許遠端計算機連線,即允許手機移動端抓包;
-
設定手機代理網路代理,使手機通過Fiddler代理髮送HTTP請求 (即Fiddler充當資料傳送接收的中介);
-
https請求抓包設定(如果只抓取http請求,以上兩步設定就可以了,但實際工作中經常需要抓取https請求資料)。
按照如上思路我們開始進行具體設定。
第一步:允許遠端計算機連線
設定步驟:Tools-->Options-->Connections-->勾選Allow remote computers to connect-->再點選OK,其他預設即可,如下圖所示:
勾選後如果有彈窗確認頁面,點選【確定】即可。順便說一下,上圖勾選頁面中的8888
為預設的埠號,在第二步設定時需要使用。
第二步,設定手機網路代理
首先,需要先獲取到安裝Fiddler的電腦的IPv4
地址,在cmd中輸入ipconfig
,如下圖所示:
然後,在手機上找到對應的WLAN
網路,進行該網路代理的設定,以榮耀V20手機為例,操作步驟如下圖所示:
手機系統設定-->WLAN-->修改網路-->高階選項-->代理-->選擇手動-->主機名填入上一步IPv4-->埠填入預設的8888-->儲存
注意:
-
手機必須與電腦連線的是同一個網路,即連同一個WIFI或手機直接連電腦的熱點,再對這個網路進行代理設定,否則無法抓取資料。
-
第2步選擇修改網路時,手機型號不同可能需要不一樣的操作才能進入到修改網路頁面。
到這一步,重啟Fiddler後,便可以對手機上的http請求進行抓包了。如果不能抓取的話,可以在手機裡重新儲存上圖中的代理設定,再進行請求。到這一步後,手機上開啟APP操作,抓包的http請求,如下圖所示:
可以看到,這裡面只抓取了http請求,如果要對https請求進行抓包,則還需要進行下面的操作。
第三步,允許捕獲HTTPS連線
設定步驟:Tools-->Options-->HTTPS-->勾選Decrypt HTTPS traffic-->再勾選Ignore server certificate errors-->點選OK
注意,儲存設定後需要重啟Fiddler才會生效。
第四步,手機安裝證書
步驟如下:
- 在手機上選擇任意瀏覽器,輸入第二步中的設定的代理地址,host為即Fiddler安裝電腦的IPv4地址,埠號即為預設的8888
- 在
1
開啟的網頁中點選FiddlerRoot certificate
下載證書
Android手機到這一步就可以了,蘋果手機還需要在手機設定裡去信任下載的證書,信任證書的操作步驟這裡不做過多說明。
完成這兩步後,我們即可以抓取手機發出的http請求,又可以抓取手機發出的https請求。在手機上開啟今日頭條APP,驗證如下:
至此,Fiddler移動端抓包設定便完成。
附上會話視窗圖示說明,如下: