嘿,大家好,我是4U:
做過 APP
測驗的同學都會接觸抓包工具,通過抓包工具可以獲取到客戶端與服務端介面的互動資料,在實際測驗APP的程序中,我們往往會發現服務端回傳
的引數欄位錯誤、資料統計錯誤等問題,通過抓包可發現這些問題,對開發修復 BUG 提供有效的幫助,那么今天我來給大家介紹一下抓包工具 Fidder工具的安裝與使用,
Fidder 簡介:
Fiddler 是一個 http 協議除錯代理工具,它能夠記錄并檢查所有你的電腦和 互聯網之間的 http 通訊,設定斷點,查看所有的“進出“Fiddler 的資料(指 cookie,htmljs,css 等檔案),Fiddler 要比其他的網路除錯器要更加簡單,因為 它不僅僅暴露 http 通訊還提供了一個用戶友好的格式, Fiddler 是強大的抓包工具,可以將網路傳輸發送與接收的資料包進行截獲、 重發、編輯等操作,也可以用來檢測流量,它的原理是以 web 代理服務器的形式進行作業的,使用的代理地址是:127.0.0.1,埠默認為 8888,我們也可以通過設定進行修改,代理就是在客戶端和服務器之間設定一道關卡,客戶端先將請 求資料發送出去后,代理服務器會將資料包進行攔截,代理服務器再冒充客戶端發送資料到服務器;同理,服務器將回應資料回傳,代理服務器也會將資料攔截, 再回傳給客戶端,
Fiddler 可以抓取支持 http 代理的任意程式的資料包,如果要抓取 https 會話,要先安裝證書,
一、Fidder 下載安裝
打開官網,官網下載地址是 https://www.telerik.com/download/fiddler 打開以后選擇你的相關資訊如下圖:
然后點擊 Download 按鈕開始下載,下載完成后雙擊安裝包,點擊 I Agree 按 鈕,然后選擇你想要存放的安裝目錄,如果不需要修改,使用默認的即可, 
二、Fidder 配置
Fiddler 安裝后,設定的埠默認為 8888,當 Fiddler 啟動后,默認將 IE 的代理設為了 127.0.0.1:8888,而其他如火狐瀏覽器需要手動設定代理后才可 以抓包,設定內容如圖:

(1) 電腦端監聽配置:
我們雙擊打開軟體,進入到如下的一個界面,然后點擊某一個請求,你會發 現請求的內容是一堆明顯不對的文字,然后該請求的左邊是一個鎖的樣式,聯想 到 https 加密,你會發現原因可能是沒有配置 Fiddler,
然后解釋一下右邊的默 認回傳內容,第一句是**“這是一個 CONNECT 隧道,加密的 HTTPS 流量通過該隧 道流動,”**,就證實了我們的猜測,果然是因為 https 加密的原因,

配置 fiddler 允許監聽到 https(只能抓取單向認證,也就是只有服務端證 書),如何獲取雙向認證,請參看 Charles 抓包章節,
- 打開 Fiddler 選單項 Tools->Options->HTTPS,
- 勾選 CaptureHTTPSCONNECTs,點擊 Actions,
- 勾選 DecryptHTTPStrafficfnlgnoreservercertificateerrors 兩項,點擊 OK,
(首次點擊會彈出是否信任 fiddler 證書和安全提示,直接點擊 yes 就 行),

我們按照提示來進行設定,先在左上角的工具列里面找到 Tools,然后依次 選擇 Options、HTTPS ,然后勾選 Decrypt HTTPS traffic 選項,勾選后安裝證書,

配置 flddler 允詞遠程連接 Tools->Options->Connections

引數說明:
- Fiddler listens on port:手機連接 fiddler 時的代理埠號,默認 8888 即可,
- Allow remote computers to connec:勾上則允許遠程發送請求 注:設定完成要重啟 Fiddler
安裝證書兩種方法:
- 勾選后點擊右邊的 Actions 按鈕選擇**“Trust Root Certificate”**選項, 然后全部選擇是就行了
- 勾選后點擊右邊的 Actions 按鈕選擇第二個選項將證書匯出到桌面,然后再 在對應的瀏覽器里面添加即可
然后我們再打開一個新的網頁(例如百度),查看請求:

至此,已經可以監聽 PC 端瀏覽器的請求了,
(2) 手機端監聽配置前提:
確保手機和電腦處于同一網路中,獲取到電腦的 IP 地址:通過 cmd, 輸入 ipconfig 查詢,或網路共享中 ip4 找到

步驟一: 手機和電腦連接同一個網路,打開手機瀏覽器,輸入 http://ip:埠號 注: Tools-> Options-> Connections, port 中值就是埠號,我們設定的 是 8888,這里輸入的地址是:10.10.16.32:8888,

步驟二: 點擊 FiddlerRoot certifcate 下載證書

步驟三: 安裝證書

步驟四: 點擊確定,部分手機需要先設定手機密碼,設定后既可以成功安裝證書,
步驟五: 手機設定代理,手機系統設定-無線網路-選擇同一個網路-代理設定- 代理選擇手動,服務器對應 fiddler 的電腦 ip 地址,埠對應 fiddler 的埠 號,設定后保存,

設定完成后即可抓包,開始抓包之旅吧,如在 fiddler 里進行請求的過濾,只看某個服務器下的請求,配置后要點一下 Actions 來保存過濾,

三、Fidder 的使用
1、 要使用 Fiddler 進行抓包,首先需要確保 Capture Traffic 是開啟的(安裝后是默認開啟的),勾選 File->Capture Traffic,也可以直接點擊 Fiddler 界 面左下角的圖示開啟和關閉抓包,

2、 所以基本上不需要做什么配置,安裝后就可以進行抓包了,那么我們怎么分 析抓到的這些資料包呢?如圖所示的區域為資料包串列,要分析這些資料包,首 先要了解各欄位的含義,

順序號,按照抓包的順序從 1 遞增:
- Result:HTTP 狀態碼
- Protocol:請求使用的協議,如 HTTP/HTTPS/FTP 等
- HOST:請求地址的主機名或域名
- URL:請求資源的位置
- Body:請求大小
- Caching:請求的快取過期時間或者快取控制值
- Content-Type:請求回應的型別
- Process:發送此請求的行程 ID
- Comments:備注
- Custom:自定義值
3、 每個 Fiddler 抓取到的資料包都會在該串列中展示,點擊具體的一條資料包 可以在右側選單點擊 Insepector 查看詳細內容,主要分為請求(即客戶端發出 的資料)和回應(服務器回傳的資料)兩部分,

4、 HTTP Request Header:以百度為例,查看請求百度主頁這條資料包的請求數 據,從上面的 Headers 中可以看到如下內容:

請求方式:GET,協議: HTTP/1.1,
(1) Client 頭域:
- Accept: text/html, application/xhtml+xml, image/jxr, / --瀏覽器 端可以接受的媒體型別
- Accept-Encoding: gzip, deflate --壓縮方法
- Accept-Language: zh-CN --語言型別
- User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 --客戶端使用的作業系統和瀏覽器的名 稱和版本
(2) COOKIE 頭域:
- 將 cookie 值發送給服務器
(3) Transport 頭域:
-
Connection:當網頁打開完成后,客戶端和服務器之間用于傳輸 HTTP 資料 的 TCP 連接是否關閉,keep-alive 表示不會關閉,客戶端再次訪問這個服務 器上的網頁,會繼續使用這一條已經建立的連接;close 表示關閉,客戶端 再次訪問這個服務器上的網頁,需要重新建立連接,
-
HOST:主機名或域名,若沒有指定埠,表示使用默認埠 80,
5、 HTTP Response Header:繼續以百度為例,如圖所示:

協議:HTTP/1.1,狀態碼:200,
(1) Cache 頭域:
- Cache-Control: private --此回應訊息不能被共享快取處理,對于其他用 戶的請求無效
- Date: Sat, 05 Aug 2017 04:37:43 GMT --生成訊息的具體時間和日期
- Expires: Sat, 05 Aug 2017 04:37:42 GMT --瀏覽器會在指定過期時間內使用本地快取
(2) Cookie/Login 頭域:
- Set-Cookie: BDSVRTM=264; path=/ --把 cookie 發送到客戶端
- Set-Cookie: BD_HOME=1; path=/
- Set-Cookie: H_PS_PSSID=1425_21097_22157; path=/; domain=.baidu.com
(3) Entity 頭域:
- Content-Length: 202740 --正文長度
- Content-Type: text/html;charset=utf-8 --告知客戶端服務器本身回應的物件的型別和字符集
(4) Miscellaneous 頭域:
- Bdpagetype: 2
- Bdqid: 0x99791efd00036253
- Bduserid: 2577220064
- Server: BWS/1.1 --指明 HTTP 服務器的軟體資訊
- X-Ua-Compatible: IE=Edge,chrome=1
(5) Security 頭域:
- Strict-Transport-Security: max-age=172800 --基于安 全考慮而需要發送的引數,
(6) Transport 頭域:
- Connection: Keep-Alive,
(7) TextView:
- 顯示請求或回應的資料,
(8) WebForms:
- 請求部分以表單形式顯示所有的請求引數和引數值;回應部分與 TextView 內容是一樣的,
(9) Auth:
- 顯示認證資訊,如 Authorization,
(10) Cookies:
- 顯示所有 cookies,
(11) Raw:
- 顯示 Headers 和 Body 資料,
(12) JSON:
- 若請求或回應資料是 json 格式,以 json 形式顯示請求或回應內容,
(13) XML:
- 若請求或回應資料是 xml 格式,以 xml 形式顯示請求或回應內容,
上面是以百度主頁為例,百度主頁采用的是GET請求,在TextView中沒有 請求
body,我們再以無憂行網站登錄介面為例,它是一個POST請求,除了請求
頭外,在TextView中多了請求資料,這也是GET請求和POST請求的一個區別,GET請求是將請求引數放在url中,而POST請求一般是將請求引數放在請求body中,
總結每天都有新姿勢
通過Fiddler可以抓取請求和回應引數,通過對引數進行分析,可以定位是前端還是后臺問題, 例如我們在測驗登錄介面時,輸入了正確的手機號和
密碼,但前端提示“請輸入正確的用戶名和密碼”;僅僅通過界面提示我們只能描述 bug 表象,但不能分析出問題原因,
假設通過抓包我們發現是由于前端引數 名錯誤或引數值為空,從而導致后臺報錯,這個時候我們將 bug
指向前端開發人員,并將引數資料和介面檔案中對應的報文資料作為附件上傳,是不是可以提高 bug 的解決效率呢? Fiddler
在實際的功能測驗中有很大的作用,一方面幫助我們更好的了解某個業務中客戶端和服務器端是通過哪些介面進行請求的,從而更好的了解代碼邏輯;另一方面,我們還可以通過回應資料判斷哪里出現了問題,
例如可能服務器程式掛了,導致前端報“服務器故障”,這時我們通過抓包發現回應資料回傳
502,這時我們可以手動去重啟服務或是聯系運維重啟服務,從而 提高問題的解決效率,
CONTACT US / 聯系我們
VX/官方公眾號:樂搏軟體測驗
BILIBILI/嗶哩嗶哩:樂搏軟體測驗
喜馬拉雅/官方賬號:樂搏軟體測驗
免費分享學習資料 lebo5207
學習資料+教學視頻+安裝包+工具包
點擊底部 “ 點贊 + 評論 + 收藏 ” 來一次說點就點的一鍵三連哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/352188.html
標籤:其他
上一篇:基于Springboot的個人博客網站系統——可用于畢業設計(課程設計)
下一篇:windows螢屏錄制實作方法


