《吐血整理》進階系列教程-拿捏Fiddler抓包教程(13)-Fiddler請求和響應斷點調試

1.簡介

 Fiddler有個強大的功能,可以修改發送到服務器的數據包,但是修改前需要攔截,即設置斷點。設置斷點後,開始攔截接下來所有網頁,直到取消斷點。這個功能可以在數據包發送之前,修改請求參數;在收到應答包,在js解析和瀏覽器渲染之前,修改返回結果。有了這個功能,開發者就可以修改不同參數測試server,同時也可以修改返回包測試自己的js函數,或測試頁面渲染。使用者功能要用到fiddler的命令行。因爲這個菜單裏面是中斷所有的請求

2.爲什麼要打斷點呢?

2.1開發人員

對於一些大廠的程序猿,他們的分工是非常明確的。前端程序員和服務器程序員是分工合作的。前端程序員想要調試Ajax請求的功能,這樣便不必等待服務器端程序員開發好所有接口之後再開始開發前端的ajax請求功能,因爲通過“模擬”真實的服務器端的響應,便可以保證功能的正確性,而服務器端開發程序員,只要保證最終的響應是符合規定的即可。這大大簡化了程序開發的效率,當然也降低了不同業務線程序員聯調的難度。

2.2測試人員

構造數據,設置斷點可篡改請求和返回的數據包。根據測試的不同場景,有時需要在測試過程中更改請求、或者更改響應內容,從而達到最終的測試目標。這樣就不用到處求人修改限制,給別人增加額外工作量。

比如:一個年齡的輸入框,輸入框前端做了限制1-200,那麼我們測試的時候,需要測試小於1的情況下。很顯然前端只能輸入大於1的。這是我們可以先抓到接口,修改請求參數,繞過前端,傳一個小於1的數,檢查服務端的功能是否OK。類似的還有金額輸入框、分數輸入框等等。

3.什麼是斷點?

斷點,調試器的功能之一,可以讓程序中斷在需要的地方,從而方便其分析。也可以在一次調試中設置斷點,下一次只需讓程序自動運行到設置斷點位置,便可在上次設置斷點的位置中斷下來,極大的方便了操作,同時節省了時間。

而在Fiddler這裏所謂斷點功能就是將你的請求或者響應截獲下來,但是不發送也不返回,都放到Fiddler這裏, 這個時候你可以做很多事情,比如說,把請求報文改了,或 響應報文改了,再發送給服務器 或 客戶端.

4.斷點時間點(位置)

Fiddler爲Web請求提供了類似的,基於斷點的調試功能。會話在執行過程中有兩個可能中斷的時間點:

(1)從客戶端讀到請求後,在請求被髮送到服務器之前。

(2)在服務器發貨響應後,在響應返回給客戶端之前。

以上兩種斷點就是打斷點的兩種方式:分別是請求斷點(request breakpoint)和響應斷點(response breakpoint)。

請求斷點:對請求的數據進行修改,在請求還沒到服務器的時候,我們可以在fiddler中把參數改了,然後再把請求發過去。當程序在請求中斷點停止執行時,你可以任意修改該請求,包括URL、headers或body。你還可以選擇不發送該請求給服務器,自定義響應返回給客戶端。大多數情況下,客戶端應用不知道Fiddler修改了它的請求。

響應斷點:對響應的數據進行修改,是服務器已經處理完請求了,準備給前端返回數據了,但是fiddler把這裏攔下來了,想對響應數據做一些修改。比如前端需要展示今日登錄次數,我想看前端展示登錄1000000000000000000000次的效果,我不可能真的點這麼多次,也不想去數據庫跑腳本差這麼多沒用的數據,那麼我就直接改這個接口的返回值就好了。當程序在響應斷點停止執行時,你可以任意修改響應的內容,包括headers或body。你還可以自己生成新的響應,取代服務端接收到的響應。在響應斷點,你也可以修改任意客戶端發送的請求,但是由於該請求已經發送給服務器了,這些修改只在Fiddler中生效-服務器永遠都看不到你做的這些修改。

5.斷點的位置

斷點的位置有兩種,如下圖所示:

1.Before response:這個是打在request請求的時候,未到達服務器之前。

2.After response:也就是服務器響應之後,在Fiddler將響應傳回給客戶端之前。

6.設置斷點的方式

設置斷點有兩種方式:

(1)全局斷點:一種用工具欄中的按鈕來設置斷點,特點是會攔截所有的請求。

(2)單個斷點:一種用命令行的形式來設置斷點,特點是攔截某個請求。

(3)Filters:通過Filters裏面的斷點設置來設置斷點

6.1Breakpoint Bar(斷點欄)

當會話停止執行時,在Request Inspectors和Response Inspectors之間會出現一個紅色Breakpoint Bar。它由兩個按鈕和一個下拉框組成,如下圖所示:

只有當程序在請求的斷點處停止時,黃色的Break on Response按鈕會處於可點擊狀態。當點擊該按鈕,它會爲當前的會話設置響應斷點,然後使程序恢復執行,向服務器發送(可能修改過的)請求。點擊綠色的Run to Completion按鈕後,程序會繼續執行直至程序結束,不會在接收到響應時中斷。

在 Breakpoint Bar右側的下拉框中,可以選擇特定的響應模板或者文件作爲該請求的響應,如下圖所示:

從下拉框中選中某個文件後,它會馬上被加載到想要的Inspectors(觀察窗口中),以便在返回客戶端之前進一步修改響應的具體內容(但不許要修改磁盤文件)。如果你在請求斷點處使用下拉框中選中的內容作爲響應,該請求就不會繼續發送給服務端,因爲Fiddler會返回響應。

6.1全局斷點

全局斷點就是中斷fiddler捕獲的所有請求,設置有兩種方法。

6.1.1方法一

1.選擇Fiddler菜單中Rules->Automatic Breakpoints->Before Requests(請求前斷點)/After Responses(響應後斷點)/Disabled (禁止斷點),設置斷點,也可以使用快捷鍵F11。如下圖所示:

2.點擊“Before Request”選完後左下方會有一個紅底藍字的大T。如下圖所示:

3.點擊“After Response”選完後左下方會有一個紅底綠字的大T。如下圖所示:

6.1.2方法二

快捷點擊指定位置:就是直接可以在狀態欄的這個位置直接點出來(前邊介紹狀態欄的時候提到過)。點一次,紅底藍字:對請求斷點;點兩次,紅底綠字,對響應斷點;點三次,取消。如下圖所示:

6.2單個斷點

局部斷點設置在底部命令行處進行,與全局斷點不同之處是滿足我們設置的條件進行斷點。通過命令行輸入命令方法,可對部分請求進行攔截。例如:

bpu www.baidu.com --代表只中斷www.baidu.com的請求,其他請求不處理
bpafter www.baidu.com --代表只中斷www.baidu.com的響應,其他返回不處理
bps xxx 中斷響應爲指定字符的所有session響應
bpv/bpm xxx 中斷指定請求方式的session響應

具體操作步驟如下:

在進行斷點調試時,想必之前已經知道了web網站或者接口請求的URL地址,這時候只需要針對這一條請求打斷點調試,在命令行中輸入指令就可以了。

1.請求前斷點(before response): bpu

要打斷點的web網站或者接口:https://xxxx/xxxxx

命令行輸入:bpu https://xxxx/xxxxx 回車

請求web網站或者接口的時候,就會只攔截這個web網站或者接口了,此時可以修改任意請求參數

取消斷點,在命令行輸入: bpu 回車就可以了。如下圖所示:

2.響應後斷點(after requests): bpafter

要打斷點的web網站或者接口:https://xxxx/xxxxx

在命令行輸入:bpafter https://xxxx/xxxxx 回車

調用web網站或者接口,會發現已經攔截到調用接口後服務器返回的數據了,此時可以修改任意返回數據。如下圖所示:

取消斷點,在命令行輸入: bpafter 回車就可以了。如下圖所示:

6.2.1命令行其它相關指令

Bpafter, Bps, bpv, bpm, bpu。這幾個命令主要用於批量設置斷點,例如:

Bpafter xxx: 中斷  URL  包含指定字符的全部  session  響應

Bps xxx: 中斷 HTTP 響應狀態爲指定字符的全部 session 響應

Bpv xxx: 中斷指定請求方式的全部  session  響應

Bpm xxx: 中斷指定請求方式的全部  session  響應 、等同於 bpv xxx

Bpu xxx:與bpafter類似

當這些命令沒有加參數時,會清空所有設置了斷點的HTTP請求。

更多的其他命令可以參考Fiddler官網手冊。那麼一些常見的斷點命令如下表:

命令描述案例解除斷點
bpafter bpafter後邊跟一個字符串,表示中斷所有包含該字符串的請求 bpafter baidu 輸入bpafter解除斷點
bpu bpafter功能差不多, bpu baidu 輸入bpu解除斷點
bpv 只中斷HTTP方法的命令,HTTP方法如POST、GET bpv get 輸入bpv解除斷點
bpm 只中斷HTTP方法的命令,HTTP方法如POST、GET bpm get 輸入bpm解除斷點
go 放行中斷下來的請求,相當於工具欄上的go按鈕 go  

6.3Filters設置斷點

通過Filters裏面的斷點設置來設置斷點,例如:通過Filters設置post請求斷點,然後在瀏覽器提交post請求,會話列表就能看到對應請求被標識爲斷點,然後選擇該會話切換到Inspectors 標籤則可以修改請求參數信息和響應結果信息等。如下圖所示;

 7.小結

 宏哥這裏總共介紹了三種設置斷點的方式,一般工作中,我們經常會用到的是前兩種方法,第三種方法宏哥一般不建議使用設置斷點(特殊情況例外)。好了,今天時間也不早了,講解和分享就到這裏!感謝您耐心的閱讀~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章