ucbug軟件站:安全、綠色、放心的專業(yè)下載站!首頁(yè)|最近更新|專題集合|標(biāo)簽云|站內(nèi)導(dǎo)航|加入收藏

《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

時(shí)間:2017-08-12 09:29:25來(lái)源:ucbug游戲網(wǎng)人氣:0

一.Fiddler內(nèi)置命令?!呱弦还?jié)(使用Fiddler進(jìn)行抓包分析)中,介紹到,在websession(與我們通常所說(shuō)的session不是同一個(gè)概念,這里的每條HTTP請(qǐng)求都成為一個(gè)session)界面中可以看到Fiddler抓取的所...

一. Fiddler內(nèi)置命令。

上一節(jié)(使用Fiddler進(jìn)行抓包分析)中,介紹到,在web session(與我們通常所說(shuō)的session不是同一個(gè)概念,這里的每條HTTP請(qǐng)求都成為一個(gè)session)界面中可以看到Fiddler抓取的所有HTTP請(qǐng)求.而為了更加方便的管理所有的session, Fiddler提供了一系列內(nèi)置的函數(shù)用于篩選和操作這些session(習(xí)慣命令行操作Linux的童鞋應(yīng)該可以感受到這會(huì)有多么方便).輸入命令的位置在web session管理面板的下方(通過(guò)快捷鍵alt+q可以focus到命令行).

Fiddler內(nèi)置的命令有如下幾種:

1. select命令。

選擇所有相應(yīng)類型(指content-type)為指定類型的HTTP請(qǐng)求,如選擇圖片,使用命令select image.而select css則可以選擇所有相應(yīng)類型為css的請(qǐng)求,select html則選擇所有響應(yīng)為HTML的請(qǐng)求(怎么樣,是不是跟SQL語(yǔ)句很像?)。如圖是執(zhí)行select image之后的結(jié)果:

《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

2. allbut命令。

allbut命令用于選擇所有響應(yīng)類型不是給定類型的HTTP請(qǐng)求。如allbut image用于選擇所有相應(yīng)類型不是圖片的session(HTTP請(qǐng)求),該命令還有一個(gè)別名keeponly.需要注意的是,keeponly和allbut命令是將不是該類型的session刪除,留下的都是該類型的響應(yīng)。因此,如果你執(zhí)行allbut xxxx(不存在的類型),實(shí)際上類似與執(zhí)行cls命令(刪除所有的session, ctrl+x快捷鍵也是這個(gè)作用)

3. ?text命令

選擇所有 URL 匹配問(wèn)號(hào)后的字符的全部 session

4. >size 和 <size命令

選擇響應(yīng)大小大于某個(gè)大小(單位是b)或者小于某個(gè)大小的所有HTTP請(qǐng)求

5. =status命令

選擇響應(yīng)狀態(tài)等于給定狀態(tài)的所有HTTP請(qǐng)求。

例如,選擇所有狀態(tài)為200的HTTP請(qǐng)求:=200

6. @host命令

選擇包含指定 HOST 的全部 HTTP請(qǐng)求。例如:@csdn.NET

選擇所有host包含csdn.net的請(qǐng)求

7. Bpafter, Bps, bpv, bpm, bpu

這幾個(gè)命令主要用于批量設(shè)置斷點(diǎn)

Bpafter xxx: 中斷 URL 包含指定字符的全部 session 響應(yīng)

Bps xxx: 中斷 HTTP 響應(yīng)狀態(tài)為指定字符的全部 session 響應(yīng)。

Bpv xxx: 中斷指定請(qǐng)求方式的全部 session 響應(yīng)

Bpm xxx: 中斷指定請(qǐng)求方式的全部 session 響應(yīng)。等同于bpv xxx

Bpu xxx:與bpafter類似。

當(dāng)這些命令沒有加參數(shù)時(shí),會(huì)清空所有設(shè)置了斷點(diǎn)的HTTP請(qǐng)求。

 更多的其他命令可以參考Fiddler官網(wǎng)手冊(cè)。

二. 使用Fiddler進(jìn)行HTTP斷點(diǎn)調(diào)試。

這是Fiddler又一強(qiáng)大和實(shí)用的工具之一。通過(guò)設(shè)置斷點(diǎn),F(xiàn)iddler可以做到:

1. 修改HTTP請(qǐng)求頭信息。例如修改請(qǐng)求頭的UA, Cookie, Referer 信息,通過(guò)“偽造”相應(yīng)信息達(dá)到達(dá)到相應(yīng)的目的(調(diào)試,模擬用戶真實(shí)請(qǐng)求等)。

2. 構(gòu)造請(qǐng)求數(shù)據(jù),突破表單的限制,隨意提交數(shù)據(jù)。避免頁(yè)面js和表單限制影響相關(guān)調(diào)試。

3. 攔截響應(yīng)數(shù)據(jù),修改響應(yīng)實(shí)體。

為什么以上方法是重要的?假設(shè)js前端程序員和服務(wù)器程序員是分工合作的,js程序員想要調(diào)試Ajax請(qǐng)求的功能,這樣便不必等待服務(wù)器端程序員開發(fā)好所有接口之后再開始開發(fā)js端的ajax請(qǐng)求功能,因?yàn)橥ㄟ^(guò)“模擬”真實(shí)的服務(wù)器端的響應(yīng),便可以保證功能的正確性,而服務(wù)器端開發(fā)程序員,只要保證最終的響應(yīng)是符合規(guī)定的即可。這大大簡(jiǎn)化了程序開發(fā)的效率,當(dāng)然也降低了不同業(yè)務(wù)線程序員聯(lián)調(diào)的難度。

有兩種方法設(shè)置斷點(diǎn):

1.fiddler菜單欄->rules->automatic Breakpoints->選擇斷點(diǎn)方式,這種方式下設(shè)定的斷點(diǎn)會(huì)對(duì)之后的所有HTTP請(qǐng)求有效。

有兩個(gè)斷點(diǎn)位置:

a. before response。也就是發(fā)送請(qǐng)求之后,但是Fiddler代理中轉(zhuǎn)之前,這時(shí)可以修改請(qǐng)求的數(shù)據(jù)。

b.after response。也就是服務(wù)器響應(yīng)之后,但是在Fiddler將響應(yīng)中轉(zhuǎn)給客戶端之前。這時(shí)可以修改響應(yīng)的結(jié)果。

2.命令行下輸入。Bpafter xxx或者bpv,bpu,bpm等設(shè)置斷點(diǎn)。這種斷點(diǎn)只針對(duì)特定類型的請(qǐng)求。

我們以本地的web項(xiàng)目為例,演示如何簡(jiǎn)單的設(shè)置HTTP斷點(diǎn):

1.首先設(shè)置Firefox的代理,使之可以抓取所有的HTTP請(qǐng)求(localhost的請(qǐng)求,也可以在filter中設(shè)置只抓取intranet請(qǐng)求),設(shè)置如下圖所示:

 《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

2. 這時(shí)用web打開本地的項(xiàng)目。頁(yè)面的內(nèi)容為:

 《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

4. 設(shè)置響應(yīng)后斷點(diǎn)(after response breakpoint),可以通過(guò)命令行設(shè)置:bpafter localhost。鍵入回車之后,web再次訪問(wèn)文件,通過(guò)Fiddler的web session界面可以看到,請(qǐng)求已經(jīng)被掛起來(lái)了,而web瀏覽器也一直處于加載的狀態(tài)。觀察右側(cè)的inspector面板下,也出現(xiàn)了新的東西:

 《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

這時(shí)我們就可以修改響應(yīng)的信息了。修改過(guò)程為:

切換到textView子面板,選擇需要修改的部分,然后點(diǎn)擊 “run to complete“,便可回送修改后的響應(yīng)。假設(shè)我們修改后的內(nèi)容如下:

 《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

點(diǎn)擊執(zhí)行后,打開剛剛的web界面??梢钥吹降捻?yè)面的變化。

 《Fiddler》命令行和HTTP斷點(diǎn)調(diào)試教程說(shuō)明

可見,頁(yè)面的響應(yīng)已經(jīng)有了相應(yīng)的變化。這就是響應(yīng)后斷點(diǎn)。當(dāng)然實(shí)際應(yīng)用中,斷點(diǎn)的設(shè)置和響應(yīng)的修改會(huì)比這復(fù)雜的多,這里只是基本的示例。

終止斷點(diǎn)的方式有:

1. 在inspector界面點(diǎn)擊“run complete“即會(huì)終止本次HTTP請(qǐng)求的斷點(diǎn)。

2. 輸入Go命令,也會(huì)使得當(dāng)前的請(qǐng)求跳過(guò)斷點(diǎn)。

3. 在rules->auto breakpoint中disabled斷點(diǎn)即可。

總之,F(xiàn)iddler的斷點(diǎn)功能非常強(qiáng)大,關(guān)于它的進(jìn)一步學(xué)習(xí)和應(yīng)用,需要一個(gè)不斷積累和摸索的過(guò)程。

標(biāo)簽Fiddler