<轉載於 miantest>html
Fiddler基礎知識前端
HTTP協議web
Fiddler的使用chrome
1)要使用Fiddler進行抓包,首先須要確保Capture Traffic是開啓的(安裝後是默認開啓的),勾選File->Capture Traffic,也能夠直接點擊Fiddler界面左下角的圖標開啓和關閉抓包。json
2)因此基本上不須要作什麼配置,安裝後就能夠進行抓包了。那麼咱們怎麼分析抓到的這些數據包呢?如圖所示的區域爲數據包列表,要分析這些數據包,首先要了解各字段的含義。瀏覽器
#:順序號,按照抓包的順序從1遞增緩存
Result:HTTP狀態碼 安全
Protocol:請求使用的協議,如HTTP/HTTPS/FTP等服務器
HOST:請求地址的主機名或域名cookie
URL:請求資源的位置
Body:請求大小
Caching:請求的緩存過時時間或者緩存控制值
Content-Type:請求響應的類型
Process:發送此請求的進程ID
Comments:備註
Custom:自定義值
3)每一個Fiddler抓取到的數據包都會在該列表中展現,點擊具體的一條數據包能夠在右側菜單點擊Insepector查看詳細內容。主要分爲請求(即客戶端發出的數據)和響應(服務器返回的數據)兩部分。
4)HTTP Request Header:以百度爲例,查看請求百度主頁這條數據包的請求數據,從上面的Headers中能夠看到以下內容:
請求方式:GET
協議: HTTP/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 ---------客戶端使用的操做系統和瀏覽器的名稱和版本
COOKIE頭域:將cookie值發送給服務器
Transport 頭域:
Connection:當網頁打開完成後,客戶端和服務器之間用於傳輸HTTP數據的TCP鏈接是否關閉。keep-alive表示不會關閉,客戶端再次訪問這個服務器上的網頁,會繼續使用這一條已經創建的鏈接;close表示關閉,客戶端再次訪問這個服務器上的網頁,須要從新創建鏈接。
HOST:主機名或域名,若沒有指定端口,表示使用默認端口80.
5)HTTP Response Header:繼續以百度爲例,如圖所示:
協議:HTTP/1.1
狀態碼:200
Cache頭域:
Cache-Control: private ---------此響應消息不能被共享緩存處理,對於其餘用戶的請求無效
Date: Sat, 05 Aug 2017 04:37:43 GMT ---------生成消息的具體時間和日期
Expires: Sat, 05 Aug 2017 04:37:42 GMT ---------瀏覽器會在指定過時時間內使用本地緩存
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
Entity頭域
Content-Length: 202740 ---------正文長度
Content-Type: text/html;charset=utf-8 ---------告知客戶端服務器自己響應的對象的類型和字符集
Miscellaneous 頭域:
Bdpagetype: 2
Bdqid: 0x99791efd00036253
Bduserid: 2577220064
Server: BWS/1.1 ---------指明HTTP服務器的軟件信息
X-Ua-Compatible: IE=Edge,chrome=1
Security頭域:
Strict-Transport-Security: max-age=172800 ---------基於安全考慮而須要發送的參數,關於這個參數的解釋,請參考:http://www.freebuf.com/articles/web/66827.html
Transport頭域:
Connection: Keep-Alive
6)TextView:顯示請求或響應的數據。
7)WebForms:請求部分以表單形式顯示全部的請求參數和參數值;響應部分與TextView內容是同樣的。
8)Auth:顯示認證信息,如Authorization
9)Cookies:顯示全部cookies
10)Raw:顯示Headers和Body數據
11)JSON:若請求或響應數據是json格式,以json形式顯示請求或響應內容
12)XML:若請求或響應數據是xml格式,以xml形式顯示請求或響應內容
13)上面是以百度主頁爲例,百度主頁採用的是GET請求,在TextView中沒有請求body,咱們再以無憂行網站登陸接口爲例,它是一個POST請求,除了請求頭外,在TextView中多了請求數據。這也是GET請求和POST請求的一個區別。GET請求是將請求參數放在url中,而POST請求通常是將請求參數放在請求body中。
總結:經過Fiddler能夠抓取請求和響應參數,經過對參數進行分析,能夠定位是前端仍是後臺問題。例如咱們在測試登陸接口時,輸入了正確的手機號和密碼,但前端提示「請輸入正確的用戶名和密碼」;僅僅經過界面提示咱們只能描述bug表象,但不能分析出問題緣由。假設經過抓包咱們發現是因爲前端參數名錯誤或參數值爲空,從而致使後臺報錯。這個時候咱們將bug指向前端開發人員,並將參數數據和接口文檔中對應的報文數據做爲附件上傳,是否是能夠提升bug的解決效率呢?Fiddler在實際的功能測試中有很大的做用,一方面幫助咱們更好的瞭解某個業務中客戶端和服務器端是經過哪些接口進行請求的,從而更好的瞭解代碼邏輯;另外一方面,咱們還能夠經過響應數據判斷哪裏出現了問題,例如可能服務器程序掛了,致使前端報「服務器故障」,這時咱們經過抓包發現響應數據返回502,這時咱們能夠手動去重啓服務或是聯繫運維重啓服務,從而提升問題的解決效率。