Fiddler的詳細介紹
1、Fiddler與其餘抓包工具的區別
一、Firebug雖然能夠抓包,可是對於分析http請求的詳細信息,不夠強大。模擬http請求的功能也不夠,且firebug經常是須要「無刷新修改」,若是刷新了頁面,全部的修改都不會保存;web
二、Wireshark是通用的抓包工具,能獲取HTTP,也能獲取HTTPS,可是不能解密HTTPS,因此wireshark看不懂HTTPS中的內容,但若是是TCP、UDP協議能夠用wireshark;瀏覽器
三、Httpwatch也是比較經常使用的http抓包工具,可是隻支持IE和firefox瀏覽器(其餘瀏覽器可能會有相應的插件);緩存
而Fiddler 是一個使用本地 127.0.0.1:8888 的 HTTP 代理,任何可以設置 HTTP 代理爲 127.0.0.1:8888 的瀏覽器和應用程序均可以使用 Fiddler。服務器
2、Fiddler的工做原理
Fiddler是位於客戶端和服務器端的HTTP代理,也是目前最經常使用的http抓包工具之一 。 它可以記錄客戶端和服務器之間的全部 HTTP請求,能夠針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至能夠修改服務器返回的數據。網絡
既然是代理,也就是說:客戶端的全部請求都要先通過Fiddler,而後轉發到相應的服務器,反之,服務器端的全部響應,也都會先通過Fiddler而後發送到客戶端,因此web客戶端和服務器的請求如圖1所示:session
圖1(web客戶端和服務器的請求過程)工具
注:使用Fiddler的話,須要先設置瀏覽器的代理地址,才能夠抓取到瀏覽器的數據包。而很方便的是在你啓動該工具後,它就已經自動幫你設置好了瀏覽器的代理了,當關閉後,它又將瀏覽器代理還原了。固然若是發現沒有自動設置瀏覽器代理的話,那就得本身動手去瀏覽器進行設置代理操做了。(可自行百度每一個瀏覽器是如何設置代理的),反正必定要設置相應的代理,不然fiddler是沒法捕獲到HTTP請求的。post
3、Fiddler的使用界面介紹
一、主界面如圖2所示:性能
圖2(fiddler主界面)
二、左邊web session面板的字段及圖標含義以下:
名稱 |
含義 |
# |
抓取HTTP Request的順序,從1開始,以此遞增 |
Result |
HTTP狀態碼 |
Protocol |
請求使用的協議,如HTTP/HTTPS/FTP等 |
Host |
請求地址的主機名 |
URL |
請求資源的位置 |
Body |
該請求的大小 |
Caching |
請求的緩存過時時間或者緩存控制值 |
Content-Type |
請求響應的類型 |
Process |
發送此請求的進程:進程ID |
Comments |
容許用戶爲此回話添加備註 |
Custom |
容許用戶設置自定義值 |
圖標 |
含義 |
請求已經發往服務器 |
|
已從服務器下載響應結果 |
|
請求從斷點處暫停 |
|
響應從斷點處暫停 |
|
請求使用 HTTP 的 HEAD 方法,即響應沒有內容(Body) |
|
請求使用 HTTP 的 POST 方法 |
|
請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協議創建鏈接隧道 |
|
響應是 HTML 格式 |
|
響應是一張圖片 |
|
響應是腳本格式 |
|
響應是 CSS 格式 |
|
響應是 XML 格式 |
|
響應是 JSON 格式 |
|
響應是一個音頻文件 |
|
響應是一個視頻文件 |
|
響應是一個 SilverLight |
|
響應是一個 FLASH |
|
響應是一個字體 |
|
普通響應成功 |
|
響應是 HTTP/300、30一、30二、303 或 307 重定向 |
|
響應是 HTTP/304(無變動):使用緩存文件 |
|
響應須要客戶端證書驗證 |
|
服務端錯誤 |
|
會話被客戶端、Fiddler 或者服務端終止 |
該表來源於博客:http://blog.csdn.net/qq_21445563/article/details/51017605
三、右邊是詳情和數據統計面板
1)Statistics關於HTTP請求的性能(例如發送/接受字節數,發送/接收時間,還有粗略統計世界各地訪問該服務器所花費的時間)以及數據分析。如圖3所示:
圖3(Statistics選項卡)
2)Inspectors是用於查看會話的內容,上半部分是請求的內容,下半部分是響應的內容,提供headers、textview、hexview,Raw等多種方式查看單條http請求的請求報文的信息,如圖4所示:
圖4(Inspectors選項卡)
3)AutoResponder 可用於攔截某一請求,即按本身添加的指定規則重定向到本地的資源或Fiddler資源,從而代替服務器響應。
舉例:將「baidu」這個關鍵字跟本地電腦的一張圖片綁定了,再訪問帶有「baidu」關鍵字的地址,就會被劫持,具體步驟如圖5所示:
圖5(AutoResponder 選項卡)
啓用規則後(勾選enable rules),在瀏覽器輸入pan.baidu.com,會發現被劫持了,顯示的是綁定的本地圖片,而不是pan.baidu.com的頁面
圖6(被劫持)
4)Composer 自定義請求發送服務器,Parsed模式下你只須要提供簡單的URLS地址便可,如圖7所示
圖7(Composer選項卡)
5)Filters 即過濾規則,經過設置過濾規則來過濾所需的http請求,如圖8所示,勾選左上角的Use Filters開啓過濾器:
圖8(Filters選項卡)
而這裏有兩個最經常使用的過濾條件:Zone和Host
a.Zone 指定只顯示內網(Intranet)或互聯網(Internet)的內容,如圖9所示:
圖9
b.Host 指定顯示某個域名下的會話,如圖10所示,若是框框爲黃色,表示修改未生效,點擊紅圈裏的文字便可:
圖10
6)timeline 請求響應時間,在左側會話窗口點擊一個或多個請求,Timeline 便會顯示指定內容從服務端傳輸到客戶端的時間,如圖11所示:
圖11(timeline選項卡)
4、Fiddler的其餘功能介紹
一、Fiddler 設置解密HTTPS的網絡數據
Fiddler能夠經過僞造CA證書來欺騙瀏覽器和服務器。大概原理就是在瀏覽器面前Fiddler假裝成一個HTTPS服務器,而在真正的HTTPS服務器面前Fiddler又裝成瀏覽器,從而實現解密HTTPS數據包的目的。
解密HTTPS須要手動開啓,依次點擊:Tools –> Fiddler Options –> HTTPS ->勾選Decrypt HTTPS traffic -> 點擊Yes,在彈出的對話框中選擇是便可,如圖12所示
圖12
二、Fiddler 內置命令與斷點
FIddler斷點功能就是將請求截獲下來,直接點擊Fiddler下圖的圖標位置,就能夠設置所有請求的斷點,也能夠在命令欄輸入斷點命令進行截獲,如圖13所示
圖13(斷點)
而斷點的命令則能夠精確設置須要截獲那些請求,以下表所示:
命令 |
對應請求項 |
介紹 |
示例 |
? |
All |
問號後邊跟一個字符串,能夠匹配出包含這個字符串的請求 | |
> |
Body |
大於號後面跟一個數字,能夠匹配出請求大小,大於這個數字請求 | >1000 |
< |
Body |
小於號跟大於號相反,匹配出請求大小,小於這個數字的請求 | <100 |
= |
Result |
等於號後面跟數字,能夠匹配HTTP返回碼 | =200 |
@ |
Host |
@後面跟Host,能夠匹配域名 | @www.baidu.com |
select |
Content-Type |
select後面跟響應類型,能夠匹配到相關的類型 | select image |
cls |
All |
清空當前全部請求 | cls |
dump |
All |
將全部請求打包成saz壓縮包,保存到「個人文檔\Fiddler2\Captures」目錄下 | dump |
start |
All |
開始監聽請求 | start |
stop |
All |
中止監聽請求 | stop |
斷點命令 | |||
bpafter |
All |
bpafter後邊跟一個字符串,表示中斷全部包含該字符串的請求 | bpafter baidu(輸入bpafter解除斷點) |
bpu |
All |
跟bpafter差很少,只不過這個是收到請求了,中斷響應 | bpu baidu(輸入bpu解除斷點) |
bps |
Result |
後面跟狀態嗎,表示中斷全部是這個狀態碼的請求 | bps 200(輸入bps解除斷點) |
bpv / bpm |
HTTP方法 |
只中斷HTTP方法的命令,HTTP方法如POST、GET | bpv get(輸入bpv解除斷點) |
g / GO |
All |
放行全部中斷下來的請求 | g |
注:一、如bpafter斷點命令使用方法爲:bpafter 後邊跟字符串->表示中斷全部包含該字符串的請求; bpafter ->表示解除剛剛的中斷斷點;
二、該表來源於博客:http://blog.csdn.net/qq_21445563/article/details/51017605
三、中斷會話後修改表單內容
不知道什麼緣由捕獲不了登陸界面的會話(除了博客園網站外,其餘不少網站的會話都捕獲不到->解決方法:按上面‘Fiddler 設置解密HTTPS的網絡數據’所寫的步驟設置一下),因此下面的實例是來自小坦克的,詳細博客地址在圖片正文貼着。
看個實例,模擬博客園的登陸, 在IE中打開博客園的登陸頁面,輸入錯誤的用戶名和密碼,用Fiddler中斷會話,修改爲正確的用戶名密碼。這樣就能成功登陸:
1. 用IE 打開博客園的登陸界面 http://passport.cnblogs.com/login.aspx
2. 打開Fiddler, 在命令行中輸入bpu http://passport.cnblogs.com/login.aspx
3. 輸入錯誤的用戶名和密碼,點擊登陸
4. Fiddler 能中斷此次會話,選擇被中斷的會話,點擊Inspectors tab下的WebForms tab 修改用戶名密碼,而後點擊Run to Completion 如圖14所示。
5. 結果是正確地登陸了博客園(固然Fiddler中也能修改Response)
圖14(該實例來源於博客:http://kb.cnblogs.com/page/130367/)
四、Fiddler中會話比較功能
選中2個會話,右鍵而後點擊Compare,就能夠用WinDiff來比較兩個會話的不一樣了(注:須要安裝WinDiff,自行百度安裝就能夠了,這裏就不細說安裝步驟),如圖15所示
圖15(compare功能)
五、Fiddler中提供的編碼工具
點擊Fiddler 工具欄上的TextWizard, 這個工具能夠Encode和Decode string,如圖16所示
圖16(TextWizard界面)
六、Fiddler中的查詢會話
Edit->Find Sessions(或Ctrl+F)打開Find Sessions的對話框,輸入關鍵字查詢你要的會話。 查詢到的會話會用黃色顯示,如圖17所示
圖17(find session界面)
七、Fiddler中的保存會話
有些時候咱們須要把會話保存下來,以便發給別人或者之後去分析。 保存會話的步驟以下:File->Save->Selected Sessions
八、Fiddler中的script系統
首先先安裝SyntaxView插件,Inspectors tab->Get SyntaxView tab->Download and Install SyntaxView Now... 如圖18所示
圖18(安裝SyntaxView插件)
安裝成功後Fiddler 就會多了一個Fiddler Script tab,如圖19所示:
圖19
在裏面咱們就能夠編寫腳本了, 看個實例讓全部cnblogs的會話都顯示紅色。
把這段腳本放在OnBeforeRequest(oSession: Session) 方法下,而且點擊"Save script"
(該段腳原本源於博客:http://kb.cnblogs.com/page/130367/)
if (oSession.HostnameIs("www.cnblogs.com")) {oSession["ui-color"] = "red";
}
這樣全部的cnblogs的會話都會顯示紅色。
九、如何在VS調試網站的時候使用Fiddler
咱們在用visual stuido 開發ASP.NET網站的時候也須要用Fiddler來分析HTTP, 默認的時候Fiddler是不能嗅探到localhost的網站。不過只要在localhost後面加個點號,Fiddler就能嗅探到。
例如:本來ASP.NET的地址是 http://localhost:9999/Default.aspx, 加個點號後,變成 http://localhost.:9999/Default.aspx 就能夠了