一、Fiddler與其他抓包工具的區(qū)別
1旅择、Firebug雖然可以抓包,但是對于分析http請求的詳細(xì)信息侣姆,不夠強(qiáng)大生真。模擬http請求的功能也不夠,且firebug常常是需要“無刷新修改”捺宗,如果刷新了頁面柱蟀,所有的修改都不會保存;
2蚜厉、Wireshark是通用的抓包工具长已,能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS术瓮,所以wireshark看不懂HTTPS中的內(nèi)容康聂,但如果是TCP、UDP協(xié)議可以用wireshark胞四;
3恬汁、Httpwatch也是比較常用的http抓包工具,但是只支持IE和firefox瀏覽器(其他瀏覽器可能會有相應(yīng)的插件)辜伟;
而Fiddler 是一個使用本地 127.0.0.1:8888 的 HTTP 代理氓侧,任何能夠設(shè)置 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應(yīng)用程序都可以使用 Fiddler。
二导狡、Fiddler的工作原理
Fiddler是位于客戶端和服務(wù)器端的HTTP代理甘苍,也是目前最常用的http抓包工具之一 。 它能夠記錄客戶端和服務(wù)器之間的所有 HTTP請求烘豌,可以針對特定的HTTP請求,分析請求數(shù)據(jù)看彼、設(shè)置斷點(diǎn)廊佩、調(diào)試web應(yīng)用、修改請求的數(shù)據(jù)靖榕,甚至可以修改服務(wù)器返回的數(shù)據(jù)标锄。
既然是代理,也就是說:客戶端的所有請求都要先經(jīng)過Fiddler茁计,然后轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)器料皇,反之,服務(wù)器端的所有響應(yīng)星压,也都會先經(jīng)過Fiddler然后發(fā)送到客戶端践剂,所以web客戶端和服務(wù)器的請求如圖1所示:
圖1(web客戶端和服務(wù)器的請求過程)
注:使用Fiddler的話,需要先設(shè)置瀏覽器的代理地址娜膘,才可以抓取到瀏覽器的數(shù)據(jù)包逊脯。而很方便的是在你啟動該工具后,它就已經(jīng)自動幫你設(shè)置好了瀏覽器的代理了竣贪,當(dāng)關(guān)閉后军洼,它又將瀏覽器代理還原了。當(dāng)然如果發(fā)現(xiàn)沒有自動設(shè)置瀏覽器代理的話演怎,那就得自己動手去瀏覽器進(jìn)行設(shè)置代理操作了匕争。(可自行百度每個瀏覽器是如何設(shè)置代理的),反正一定要設(shè)置相應(yīng)的代理爷耀,否則fiddler是無法捕獲到HTTP請求的甘桑。
三、Fiddler的使用界面介紹
1、主界面如圖2所示:
圖2(fiddler主界面)
2扇住、左邊web session面板的字段及圖標(biāo)含義如下:
名稱
含義
抓取HTTP Request的順序春缕,從1開始,以此遞增
Result
HTTP狀態(tài)碼
Protocol
請求使用的協(xié)議艘蹋,如HTTP/HTTPS/FTP等
Host
請求地址的主機(jī)名
URL
請求資源的位置
Body
該請求的大小
Caching
請求的緩存過期時間或者緩存控制值
Content-Type
請求響應(yīng)的類型
Process
發(fā)送此請求的進(jìn)程:進(jìn)程ID
Comments
允許用戶為此回話添加備注
Custom
允許用戶設(shè)置自定義值
圖標(biāo)
含義
clip_image001[13]
請求已經(jīng)發(fā)往服務(wù)器
clip_image002[4]
已從服務(wù)器下載響應(yīng)結(jié)果
clip_image003[4]
請求從斷點(diǎn)處暫停
clip_image004[4]
響應(yīng)從斷點(diǎn)處暫停
clip_image005[4]
請求使用 HTTP 的 HEAD 方法锄贼,即響應(yīng)沒有內(nèi)容(Body)
clip_image006[4]
請求使用 HTTP 的 POST 方法
clip_image007[4]
請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協(xié)議建立連接隧道
clip_image008[4]
響應(yīng)是 HTML 格式
clip_image009[4]
響應(yīng)是一張圖片
clip_image010[4]
響應(yīng)是腳本格式
clip_image011[4]
響應(yīng)是 CSS 格式
clip_image012[4]
響應(yīng)是 XML 格式
clip_image013[4]
響應(yīng)是 JSON 格式
clip_image014[4]
響應(yīng)是一個音頻文件
clip_image015[4]
響應(yīng)是一個視頻文件
clip_image016[4]
響應(yīng)是一個 SilverLight
clip_image017[4]
響應(yīng)是一個 FLASH
clip_image018[4]
響應(yīng)是一個字體
clip_image019[4]
普通響應(yīng)成功
clip_image020[4]
響應(yīng)是 HTTP/300女阀、301宅荤、302、303 或 307 重定向
clip_image021[4]
響應(yīng)是 HTTP/304(無變更):使用緩存文件
clip_image022[4]
響應(yīng)需要客戶端證書驗(yàn)證
clip_image023[4]
服務(wù)端錯誤
clip_image0244
會話被客戶端浸策、Fiddler 或者服務(wù)端終止
該表來源于博客:http://blog.csdn.net/qq_21445563/article/details/51017605
3冯键、右邊是詳情和數(shù)據(jù)統(tǒng)計面板
1)Statistics關(guān)于HTTP請求的性能(例如發(fā)送/接受字節(jié)數(shù),發(fā)送/接收時間庸汗,還有粗略統(tǒng)計世界各地訪問該服務(wù)器所花費(fèi)的時間)以及數(shù)據(jù)分析惫确。如圖3所示:
圖3(Statistics選項(xiàng)卡)
2)Inspectors是用于查看會話的內(nèi)容,上半部分是請求的內(nèi)容蚯舱,下半部分是響應(yīng)的內(nèi)容改化,提供headers、textview枉昏、hexview,Raw等多種方式查看單條http請求的請求報文的信息陈肛,如圖4所示:
圖4(Inspectors選項(xiàng)卡)
3)AutoResponder 可用于攔截某一請求,即按自己添加的指定規(guī)則重定向到本地的資源或Fiddler資源兄裂,從而代替服務(wù)器響應(yīng)句旱。
舉例:將“baidu”這個關(guān)鍵字跟本地電腦的一張圖片綁定了,再訪問帶有“baidu”關(guān)鍵字的地址晰奖,就會被劫持谈撒,具體步驟如圖5所示:
圖5(AutoResponder 選項(xiàng)卡)
啟用規(guī)則后(勾選enable rules),在瀏覽器輸入pan.baidu.com匾南,會發(fā)現(xiàn)被劫持了港华,顯示的是綁定的本地圖片,而不是pan.baidu.com的頁面
圖6(被劫持)
4)Composer 自定義請求發(fā)送服務(wù)器午衰,Parsed模式下你只需要提供簡單的URLS地址即可立宜,如圖7所示
圖7(Composer選項(xiàng)卡)
5)Filters 即過濾規(guī)則,通過設(shè)置過濾規(guī)則來過濾所需的http請求臊岸,如圖8所示橙数,勾選左上角的Use Filters開啟過濾器:
圖8(Filters選項(xiàng)卡)
而這里有兩個最常用的過濾條件:Zone和Host
a.Zone 指定只顯示內(nèi)網(wǎng)(Intranet)或互聯(lián)網(wǎng)(Internet)的內(nèi)容,如圖9所示:
圖9
b.Host 指定顯示某個域名下的會話帅戒,如圖10所示灯帮,如果框框?yàn)辄S色崖技,表示修改未生效,點(diǎn)擊紅圈里的文字即可:
圖10
6)timeline 請求響應(yīng)時間钟哥,在左側(cè)會話窗口點(diǎn)擊一個或多個請求迎献,Timeline 便會顯示指定內(nèi)容從服務(wù)端傳輸?shù)娇蛻舳说臅r間,如圖11所示:
圖11(timeline選項(xiàng)卡)
四腻贰、Fiddler的其他功能介紹
1吁恍、Fiddler 設(shè)置解密HTTPS的網(wǎng)絡(luò)數(shù)據(jù)
Fiddler可以通過偽造CA證書來欺騙瀏覽器和服務(wù)器。大概原理就是在瀏覽器面前Fiddler偽裝成一個HTTPS服務(wù)器播演,而在真正的HTTPS服務(wù)器面前Fiddler又裝成瀏覽器冀瓦,從而實(shí)現(xiàn)解密HTTPS數(shù)據(jù)包的目的。
解密HTTPS需要手動開啟写烤,依次點(diǎn)擊:Tools –> Fiddler Options –> HTTPS ->勾選Decrypt HTTPS traffic -> 點(diǎn)擊Yes翼闽,在彈出的對話框中選擇是即可,如圖12所示
圖12
2洲炊、Fiddler 內(nèi)置命令與斷點(diǎn)
FIddler斷點(diǎn)功能就是將請求截獲下來感局,直接點(diǎn)擊Fiddler下圖的圖標(biāo)位置,就可以設(shè)置全部請求的斷點(diǎn)暂衡,也可以在命令欄輸入斷點(diǎn)命令進(jìn)行截獲蓝厌,如圖13所示
圖13(斷點(diǎn))
而斷點(diǎn)的命令則可以精確設(shè)置需要截獲那些請求,如下表所示:
命令
對應(yīng)請求項(xiàng)
介紹
示例
?
All
問號后邊跟一個字符串古徒,可以匹配出包含這個字符串的請求
Body
大于號后面跟一個數(shù)字,可以匹配出請求大小读恃,大于這個數(shù)字請求
1000
<
Body
小于號跟大于號相反隧膘,匹配出請求大小,小于這個數(shù)字的請求
<100
=
Result
等于號后面跟數(shù)字寺惫,可以匹配HTTP返回碼
=200
@
Host
@后面跟Host疹吃,可以匹配域名
@www.baidu.com
select
Content-Type
select后面跟響應(yīng)類型,可以匹配到相關(guān)的類型
select image
cls
All
清空當(dāng)前所有請求
cls
dump
All
將所有請求打包成saz壓縮包西雀,保存到“我的文檔\Fiddler2\Captures”目錄下
dump
start
All
開始監(jiān)聽請求
start
stop
All
停止監(jiān)聽請求
stop
斷點(diǎn)命令
bpafter
All
bpafter后邊跟一個字符串萨驶,表示中斷所有包含該字符串的請求
bpafter baidu(輸入bpafter解除斷點(diǎn))
bpu
All
跟bpafter差不多,只不過這個是收到請求了艇肴,中斷響應(yīng)
bpu baidu(輸入bpu解除斷點(diǎn))
bps
Result
后面跟狀態(tài)嗎腔呜,表示中斷所有是這個狀態(tài)碼的請求
bps 200(輸入bps解除斷點(diǎn))
bpv / bpm
HTTP方法
只中斷HTTP方法的命令,HTTP方法如POST再悼、GET
bpv get(輸入bpv解除斷點(diǎn))
g / GO
All
放行所有中斷下來的請求
g
注:1核畴、如bpafter斷點(diǎn)命令使用方法為:bpafter 后邊跟字符串->表示中斷所有包含該字符串的請求; bpafter ->表示解除剛剛的中斷斷點(diǎn)冲九;
2谤草、該表來源于博客:http://blog.csdn.net/qq_21445563/article/details/51017605
3、中斷會話后修改表單內(nèi)容
不知道什么原因捕獲不了登錄界面的會話(除了博客園網(wǎng)站外,其他很多網(wǎng)站的會話都捕獲不到)丑孩,所以下面的實(shí)例是來自小坦克的冀宴,詳細(xì)博客地址在圖片正文貼著。
看個實(shí)例温学,模擬博客園的登錄略贮, 在IE中打開博客園的登錄頁面,輸入錯誤的用戶名和密碼枫浙,用Fiddler中斷會話刨肃,修改成正確的用戶名密碼。這樣就能成功登錄:
1. 用IE 打開博客園的登錄界面 http://passport.cnblogs.com/login.aspx
2. 打開Fiddler, 在命令行中輸入bpu http://passport.cnblogs.com/login.aspx
3. 輸入錯誤的用戶名和密碼箩帚,點(diǎn)擊登錄
4. Fiddler 能中斷這次會話真友,選擇被中斷的會話,點(diǎn)擊Inspectors tab下的WebForms tab 修改用戶名密碼紧帕,然后點(diǎn)擊Run to Completion 如圖14所示盔然。
5. 結(jié)果是正確地登錄了博客園(當(dāng)然Fiddler中也能修改Response)
圖14(該實(shí)例來源于博客:http://kb.cnblogs.com/page/130367/)
4、Fiddler中會話比較功能
選中2個會話是嗜,右鍵然后點(diǎn)擊Compare愈案,就可以用WinDiff來比較兩個會話的不同了(注:需要安裝WinDiff,自行百度安裝就可以了鹅搪,這里就不細(xì)說安裝步驟)站绪,如圖15所示
圖15(compare功能)
5、Fiddler中提供的編碼工具
點(diǎn)擊Fiddler 工具欄上的TextWizard, 這個工具可以Encode和Decode string丽柿,如圖16所示
圖16(TextWizard界面)
6恢准、Fiddler中的查詢會話
Edit->Find Sessions(或Ctrl+F)打開Find Sessions的對話框,輸入關(guān)鍵字查詢你要的會話甫题。 查詢到的會話會用黃色顯示馁筐,如圖17所示
圖17(find session界面)
7、Fiddler中的保存會話
有些時候我們需要把會話保存下來坠非,以便發(fā)給別人或者以后去分析敏沉。 保存會話的步驟如下:File->Save->Selected Sessions
8、Fiddler中的script系統(tǒng)
首先先安裝SyntaxView插件炎码,Inspectors tab->Get SyntaxView tab->Download and Install SyntaxView Now… 如圖18所示
圖18(安裝SyntaxView插件)
安裝成功后Fiddler 就會多了一個Fiddler Script tab盟迟,如圖19所示:
(該實(shí)例來源于博客:http://kb.cnblogs.com/page/130367/)
圖19
在里面我們就可以編寫腳本了, 看個實(shí)例讓所有cnblogs的會話都顯示紅色潦闲。
把這段腳本放在OnBeforeRequest(oSession: Session) 方法下队萤,并且點(diǎn)擊"Save script"
if (oSession.HostnameIs(“www.cnblogs.com”)) {
oSession[“ui-color”] = “red”;
}
這樣所有的cnblogs的會話都會顯示紅色。
9矫钓、如何在VS調(diào)試網(wǎng)站的時候使用Fiddler
我們在用visual stuido 開發(fā)ASP.NET網(wǎng)站的時候也需要用Fiddler來分析HTTP要尔, 默認(rèn)的時候Fiddler是不能嗅探到localhost的網(wǎng)站舍杜。不過只要在localhost后面加個點(diǎn)號,F(xiàn)iddler就能嗅探到赵辕。
————————————————
版權(quán)聲明:本文為CSDN博主「小維不怕吃苦」的原創(chuàng)文章既绩,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明还惠。
原文鏈接:https://blog.csdn.net/haowei6666/article/details/118580738