抓包工具-Fiddler詳細介紹


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

允許用戶設置自定義值

圖標

含義

clip_image001[13]

請求已經發往服務器

clip_image002[4]

已從服務器下載響應結果

clip_image003[4]

請求從斷點處暫停

clip_image004[4]

響應從斷點處暫停

clip_image005[4]

請求使用 HTTP 的 HEAD 方法,即響應沒有內容(Body)

clip_image006[4]

請求使用 HTTP 的 POST 方法

clip_image007[4]

請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協議建立連接隧道

clip_image008[4]

響應是 HTML 格式

clip_image009[4]

響應是一張圖片

clip_image010[4]

響應是腳本格式

clip_image011[4]

響應是 CSS 格式

clip_image012[4]

響應是 XML 格式

clip_image013[4]

響應是 JSON 格式

clip_image014[4]

響應是一個音頻文件

clip_image015[4]

響應是一個視頻文件

clip_image016[4]

響應是一個 SilverLight

clip_image017[4]

響應是一個 FLASH

clip_image018[4]

響應是一個字體

clip_image019[4]

普通響應成功

clip_image020[4]

響應是 HTTP/300、301、302、303 或 307 重定向

clip_image021[4]

響應是 HTTP/304(無變更):使用緩存文件

clip_image022[4]

響應需要客戶端證書驗證

clip_image023[4]

服務端錯誤

clip_image0244

會話被客戶端、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

問號后邊跟一個字符串,可以匹配出包含這個字符串的請求

?google

>

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM