Fiddler的詳細介紹
一、Fiddler與其他抓包工具的區別
1、Firebug雖然可以抓包,但是對於分析http請求的詳細信息,不夠強大。模擬http請求的功能也不夠,且firebug常常是需要“無刷新修改”,如果刷新了頁面,所有的修改都不會保存;
2、Wireshark是通用的抓包工具,能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容,但如果是TCP、UDP協議可以用wireshark;
3、Httpwatch也是比較常用的http抓包工具,但是只支持IE和firefox瀏覽器(其他瀏覽器可能會有相應的插件);
而Fiddler 是一個使用本地 127.0.0.1:8888 的 HTTP 代理,任何能夠設置 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應用程序都可以使用 Fiddler。
二、Fiddler的工作原理
Fiddler是位於客戶端和服務器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能夠記錄客戶端和服務器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至可以修改服務器返回的數據。
既然是代理,也就是說:客戶端的所有請求都要先經過Fiddler,然后轉發到相應的服務器,反之,服務器端的所有響應,也都會先經過Fiddler然后發送到客戶端,所以web客戶端和服務器的請求如圖1所示:
圖1(web客戶端和服務器的請求過程)
注:使用Fiddler的話,需要先設置瀏覽器的代理地址,才可以抓取到瀏覽器的數據包。而很方便的是在你啟動該工具后,它就已經自動幫你設置好了瀏覽器的代理了,當關閉后,它又將瀏覽器代理還原了。當然如果發現沒有自動設置瀏覽器代理的話,那就得自己動手去瀏覽器進行設置代理操作了。(可自行百度每個瀏覽器是如何設置代理的),反正一定要設置相應的代理,否則fiddler是無法捕獲到HTTP請求的。
三、Fiddler的使用界面介紹
1、主界面如圖2所示:
圖2(fiddler主界面)
2、左邊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、301、302、303 或 307 重定向 |
|
響應是 HTTP/304(無變更):使用緩存文件 |
|
響應需要客戶端證書驗證 |
|
服務端錯誤 |
|
會話被客戶端、Fiddler 或者服務端終止 |
該表來源於博客:http://blog.csdn.net/qq_21445563/article/details/51017605
3、右邊是詳情和數據統計面板
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選項卡)
四、Fiddler的其他功能介紹
1、Fiddler 設置解密HTTPS的網絡數據
Fiddler可以通過偽造CA證書來欺騙瀏覽器和服務器。大概原理就是在瀏覽器面前Fiddler偽裝成一個HTTPS服務器,而在真正的HTTPS服務器面前Fiddler又裝成瀏覽器,從而實現解密HTTPS數據包的目的。
解密HTTPS需要手動開啟,依次點擊:Tools –> Fiddler Options –> HTTPS ->勾選Decrypt HTTPS traffic -> 點擊Yes,在彈出的對話框中選擇是即可,如圖12所示
圖12
2、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 |
注:1、如bpafter斷點命令使用方法為:bpafter 后邊跟字符串->表示中斷所有包含該字符串的請求; bpafter ->表示解除剛剛的中斷斷點;
2、該表來源於博客:http://blog.csdn.net/qq_21445563/article/details/51017605
3、中斷會話后修改表單內容
不知道什么原因捕獲不了登錄界面的會話(除了博客園網站外,其他很多網站的會話都捕獲不到->解決方法:按上面‘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/)
4、Fiddler中會話比較功能
選中2個會話,右鍵然后點擊Compare,就可以用WinDiff來比較兩個會話的不同了(注:需要安裝WinDiff,自行百度安裝就可以了,這里就不細說安裝步驟),如圖15所示
圖15(compare功能)
5、Fiddler中提供的編碼工具
點擊Fiddler 工具欄上的TextWizard, 這個工具可以Encode和Decode string,如圖16所示
圖16(TextWizard界面)
6、Fiddler中的查詢會話
Edit->Find Sessions(或Ctrl+F)打開Find Sessions的對話框,輸入關鍵字查詢你要的會話。 查詢到的會話會用黃色顯示,如圖17所示
圖17(find session界面)
7、Fiddler中的保存會話
有些時候我們需要把會話保存下來,以便發給別人或者以后去分析。 保存會話的步驟如下:File->Save->Selected Sessions
8、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的會話都會顯示紅色。
9、如何在VS調試網站的時候使用Fiddler
我們在用visual stuido 開發ASP.NET網站的時候也需要用Fiddler來分析HTTP, 默認的時候Fiddler是不能嗅探到localhost的網站。不過只要在localhost后面加個點號,Fiddler就能嗅探到。
例如:原本ASP.NET的地址是 http://localhost:9999/Default.aspx, 加個點號后,變成 http://localhost.:9999/Default.aspx 就可以了
轉載自:https://www.cnblogs.com/Chilam007/p/6985379.html