Ⅰ Fiddler抓包基本使用
Fiddler_官方網站
Fiddler_官方文檔
Fiddler_官方視頻
Fiddler_官方插件
1、Filddler簡介
Fiddler是最強大最好用的Web調試工具之一,它能記錄所有客戶端和伺服器的http和https請求,允許你監視,設置斷點,甚至修改輸入輸出數據,Fiddler包含了一個強大的基於事件腳本的子系統,並且能使用.net語言進行擴展。
2、Filddler工作原理
Fiddler是以代理WEB伺服器的形式工作的,瀏覽器與伺服器之間通過建立TCP連接以HTTP協議進行通信,瀏覽器默認通過自己發送HTTP請求到伺服器,它使用代理地址:127.0.0.1, 埠:8888. 當Fiddler開啟會自動設置代理, 退出的時候它會自動注銷代理,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因為Fiddler沒有自動注銷,會造成網頁無法訪問。解決的辦法是重新啟動下Fiddler.
4、界面介紹
4.1 Fiddler主界面
4.2 工具面板
工具欄說明:說明注釋、重新請求、刪除會話、繼續執行、流模式/緩沖模式、解碼、保留會話、監控指定進程、尋找、保存會話、切圖、計時、打開瀏覽器、清除IE緩存、編碼/解碼工具、彈出控制監控面板、MSDN、幫助。
兩種模式:
1、 緩沖模式(Buffering Mode): Fiddler直到HTTP響應完成時才將數據返回給應用程序。可以控制響應,修改響應數據。但是時序圖有時候會出現異常
2、流模式(Streaming Mode): Fiddler會即時將HTTP響應的數據返回給應用程序。更接近真實瀏覽器的性能。時序圖更准確。但是不能控制響應。
4.3會話面板
4.4 監控面板
統計報表
(1) 請求總數、請求包大小、響應包大小;
(2) 請求起始時間、響應結束時間、握手時間、等待時間、路由時間、TCP/IP傳輸時間;
(3) HTTP狀態碼統計;
(4) 返回的各種類型數據的大小統計以及餅圖展現。
時間軸
每個網路請求都會經歷域名解析、建立連接、發送請求、接受數據等階段。把多個請求以時間作為 X 軸,用圖表的形式展現出來,就形成了瀑布圖。在Fiddler 中,只要在左側選中一些請求,右側選擇Timeline標簽,就可以看到這些請求的瀑布圖
1)綠色的請求表示這是一個「有條件的請求」。HTTP 協議定義了 5 個條件請求頭部,最常見的兩個是「If-Modified-Since」和「If-None-Match」。伺服器根據這兩個頭部來驗證本地緩存是否過期,如果過期則正常返回資源的最新版本;否則僅返回 304 Not Modified,瀏覽器繼續使用本地緩存。包含條件請求頭部的請求用綠色顯示,否則用黑色。
2)有陰影線的請求是緩沖模式下的請求,實心的是流模式下的請求。Fiddler 提供了緩沖(Buffering)和流(Streaming)兩種抓包模式:緩沖模式下,Fiddler 會在響應完成時才將數據返回給應用程序(通常是瀏覽器),這種模式下可以控制響應,方便地修改響應內容;流模式下,Fiddler 會實時返回響應數據給瀏覽器,但沒辦法控制響應。一般使用流模式,瀑布圖會更真實一些。這兩種模式可以通過 Fiddler 的工具欄選擇。特別的,通過 Fiddler 的「AutoResponder」功能返回的響應,只能是緩沖模式。
3)請求條的不同顏色對應著不同類型的響應,根據響應頭的 MIME Type 來歸類。如淺綠色表示圖片類型的響應;深綠色是 JavaScript;紫色是 CSS;其它都是藍色。
4)請求中的黑色豎線,表示的是瀏覽器收到服務端響應的第一個位元組這一時刻。這個時間受 DNS 解析、建立連接、發送請求、等待服務端響應等步驟的影響。
5)請求條後面的圖標表示響應的某些特徵。如軟盤圖標表示這個響應正文從本地獲得,也就是說服務端返回了 304;閃電表示這是 Fiddler 的「AutoResponder」的響應;向下的箭頭表示響應是 302,需要重定向;紅色感嘆號說明這個請求有錯誤發生(狀態碼是 4XX 或 5XX)。特別的,如果請求條後面有一個紅色的X,說明服務端響應完這個請求之後,斷開了連接。出現這種情況一般有兩種可能:HTTP/1.0 的響應中沒有 Connection: Keep-Alive;或者是 HTTP/1.1 的響應中包含了 Connection: close。使用持久連接可以省去建立連接的開銷,也可以減小 TCP 慢啟動和其它擁塞控制機制帶來的影響,總之是好處多多。
6)請求前面的紅色圓圈表示這個連接是新建的,綠色表示是復用的。上面的圓圈表示的是瀏覽器到 Fiddler 的連接,下面的圓圈是 Fiddler 到服務端的連接。
4.5 狀態面板
控制台
Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。
help 打開官方的使用頁面介紹,所有的命令都會列出來
cls 清屏 (Ctrl+x 也可以清屏)
select 選擇會話的命令
?.png 用來選擇png後綴的圖片
bpu 截獲request
bpafter 截獲response
5、HTTP協議簡介
5.1、HTTP消息的結構
5.1.1、Request
先看Request 消息的結構, Request 消息分為3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之間有個空行。第一行中的Method表示請求方法,比如"POST","GET", Path-to-resoure表示請求的資源, Http/version-number 表示HTTP協議的版本號,當使用的是"GET" 方法的時候, body是為空的。
5.1.2、Response
5.2 狀態碼
Response 消息中的第一行叫做狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。
狀態碼用來告訴HTTP客戶端,HTTP伺服器是否產生了預期的Response.
HTTP/1.1中定義了5類狀態碼, 狀態碼由三位數字組成,第一個數字定義了響應的類別
1XX —— 提示信息,表示請求已被成功接收,繼續處理
2XX —— 成功,表示請求已被成功接收,理解,接受
3XX —— 重定向,要完成請求必須進行更進一步的處理
4XX —— 客戶端錯誤,請求有語法錯誤或請求無法實現
5XX —— 伺服器端錯誤,伺服器未能實現合法的請求
常見響應碼說明:
200:響應成功,這表明該請求被成功地完成,所請求的資源發送回客戶端
302:重定向,新的URL會在response 中的Location中返回,瀏覽器將會自動使用新的URL發出新的Request
304:代表上次的文檔已經被緩存了, 還可以繼續使用,例如打開博客園首頁, 發現很多Response 的status code 都是304
[提示:如果你不想使用本地緩存可以用Ctrl+F5 強制刷新頁面]
400 : 客戶端請求與語法錯誤,不能被伺服器所理解
403:伺服器收到請求,但是拒絕提供服務
404 :找不到網頁,請求的資源不存在
500 : 伺服器發生了不可預期的錯誤
503 :伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常
6、 常用功能
6.1 監聽HTTPS
6.3 模擬各類場景
通過GZIP壓縮,測試性能
模擬Agent測試,查看服務端是否對不同客戶端定製響應
模擬慢速網路,測試頁面的容錯性
禁用緩存,方便調試一些靜態文件或測試服務端響應情況
6.4 Compare(對比文本)
Fiddler中設置斷點修改Response跟斷點修改Request用法差不多。
參考文檔: http://www.cnblogs.com/FounderBox/p/4653588.html?utm_source=tuicool&utm_medium=referral
http://kb.cnblogs.com/page/130367/