《吐血整理》進階系列教程-拿捏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網站或者介面://xxxx/xxxxx
命令行輸入:bpu //xxxx/xxxxx 回車
請求web網站或者介面的時候,就會只攔截這個web網站或者介面了,此時可以修改任意請求參數
取消斷點,在命令行輸入: bpu 回車就可以了。如下圖所示:
2.響應後斷點(after requests): bpafter
要打斷點的web網站或者介面://xxxx/xxxxx
在命令行輸入:bpafter //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.小結
宏哥這裡總共介紹了三種設置斷點的方式,一般工作中,我們經常會用到的是前兩種方法,第三種方法宏哥一般不建議使用設置斷點(特殊情況例外)。好了,今天時間也不早了,講解和分享就到這裡!感謝您耐心的閱讀~~