Fiddler抓包工具详细介绍
本文轉自:http://www.cnblogs.com/Chilam007/p/6985379.html
一、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 就可以了
?
關于Fiddler的詳細介紹就到這里了,其他數據抓包分析和手機抓包分析下次再操作。
轉載于:https://www.cnblogs.com/wxinyu/p/9002499.html
總結
以上是生活随笔為你收集整理的Fiddler抓包工具详细介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: uint64_t是什么数据类型解析
- 下一篇: 360路由器插件_主打游戏加速 360安
