一、使用Fiddler進行HTTP斷點調(diào)試
斷點調(diào)試是Fiddler又一強大和實用的工具之一。通過設(shè)置斷點,F(xiàn)iddler可以做到:
1.?修改HTTP請求頭信息。例如修改請求頭的UA,?Cookie,?Referer?信息,通過“偽造”相應(yīng)信息達到達到相應(yīng)的目的(調(diào)試,模擬用戶真實請求等)。
2.?構(gòu)造請求數(shù)據(jù),突破表單的限制,隨意提交數(shù)據(jù)。避免頁面js和表單限制影響相關(guān)調(diào)試。
3.?攔截響應(yīng)數(shù)據(jù),修改響應(yīng)實體。
為什么以上方法是重要的?假設(shè)js前端程序員和服務(wù)器程序員是分工合作的,js程序員想要調(diào)試Ajax請求的功能,這樣便不必等待服務(wù)器端程序員開發(fā)好所有接口之后再開始開發(fā)js端的ajax請求功能,因為通過“模擬”真實的服務(wù)器端的響應(yīng),便可以保證功能的正確性,而服務(wù)器端開發(fā)程序員,只要保證最終的響應(yīng)是符合規(guī)定的即可。這大大簡化了程序開發(fā)的效率,當然也降低了不同業(yè)務(wù)線程序員聯(lián)調(diào)的難度。
二、設(shè)置斷點的兩種方式
1.fiddler菜單欄->rules->automatic?Breakpoints->選擇斷點方式,這種方式下設(shè)定的斷點會對之后的所有HTTP請求有效。
有兩個斷點位置:
a.?before?response。也就是發(fā)送請求之后,但是Fiddler代理中轉(zhuǎn)之前,這時可以修改請求的數(shù)據(jù)。
b.after?response。也就是服務(wù)器響應(yīng)之后,但是在Fiddler將響應(yīng)中轉(zhuǎn)給客戶端之前。這時可以修改響應(yīng)的結(jié)果。
2.命令行下輸入。Bpafter?xxx或者bpv,bpu,bpm等設(shè)置斷點。這種斷點只針對特定類型的請求。在命令行中輸入命令:? bpu www.baidu.com?? (這種方法只會中斷www.baidu.com),如何消除命令呢?在命令行中輸入命令 bpu。
三、設(shè)置全局斷點before requests
1.全局斷點就是中斷fiddler捕獲的所有請求,先設(shè)置下,點擊rules-> automatic breakpoint? ->before requests(電腦端快捷鍵:F11)
2.選中before requests選項后,打開簡書首頁:http://www.lxweimin.com/,看到網(wǎng)頁是空白的,fiddler左側(cè)菜單顯示如下T的標識,說明斷點成功
3.打完斷點后,會發(fā)現(xiàn)所有的請求都無法發(fā)出去了,這時候,點下Go按鈕,就能走下一步了
4.找到需要修改的請求后,選中該條會話,右側(cè)打開WebFroms,這時候里面的參數(shù)都是可以修改的了
5.修改之后點Run to Completion就能提交了,于是就成功修改了請求參數(shù)了
6.打全局斷點的話,是無法正常上網(wǎng)的,需要清除斷點:rules-> automatic breakpoint? ->disabled
四、設(shè)置全局斷點after requests
1.打開fiddler 點擊rules-> automatic breakpoint? ->after requests(電腦端快捷鍵:Alt+F11)
2.瀏覽器打開www.lxweimin.com 會發(fā)現(xiàn)無法打開,一直在等待中,說明斷點成功
3.在fiddler會話框前面圖標顯示下箭頭,如下圖所示
4.點textview按鈕
5.將“創(chuàng)作你 的創(chuàng)作”修改為“創(chuàng)作我的世界”
6.點Go執(zhí)行按鈕,在瀏覽器中看到如下圖,簡書名稱已經(jīng)變成修改后的了
7.所以此斷點可以修改服務(wù)器返回的數(shù)據(jù),改成你所需要測試的數(shù)據(jù),這樣在前端就能顯示了
五、單個斷點
已經(jīng)知道了某個接口的請求地址,這時候只需要針對這一條請求打斷點調(diào)試,在命令行中輸入指令就可以了
請求前斷點(before?response): bpu
1. 簡書登錄接口:http://www.lxweimin.com/sign_in
2. 命令行輸入:bpu http://www.lxweimin.com/sign_in ?回車
3.請求登錄接口的時候,就會只攔截登錄這個接口了,此時可以修改任意請求參數(shù)
4.取消斷點,在命令行輸入: bpu 回車就可以了
響應(yīng)后斷點(after? requests): bpafter
1. 簡書登錄接口:http://www.lxweimin.com/sign_in
2. 在命令行輸入:bpafter http://www.lxweimin.com/sign_in? 回車
3.登錄簡書,會發(fā)現(xiàn)已經(jīng)攔截到登錄后服務(wù)器返回的數(shù)據(jù)了,此時可以修改任意返回數(shù)據(jù)
4.取消斷點,在命令行輸入: bpafter 回車就可以了
六、攔截來自某個網(wǎng)站所有請求
1.在命令行輸入:bpu www.lxweimin.com
2.打開簡書任意網(wǎng)頁,發(fā)現(xiàn)都被攔截到了
3.打開簡書其他網(wǎng)站,其它網(wǎng)站可以正常請求
4.說明只攔截了來自簡書(www.lxweimin.com)的請求
5.清除輸入bpu回車即可
七、命令行其它相關(guān)指令
Bpafter,?Bps,?bpv,?bpm,?bpu
這幾個命令主要用于批量設(shè)置斷點
Bpafter?xxx:?中斷? URL? 包含指定字符的全部? session? 響應(yīng)
Bps?xxx:?中斷?HTTP?響應(yīng)狀態(tài)為指定字符的全部?session?響應(yīng)
Bpv?xxx:?中斷指定請求方式的全部? session? 響應(yīng)
Bpm?xxx:?中斷指定請求方式的全部? session? 響應(yīng) 、、同于 bpv?xxx
Bpu?xxx:與bpafter類似
當這些命令沒有加參數(shù)時,會清空所有設(shè)置了斷點的HTTP請求。更多的其他命令可以參考Fiddler官網(wǎng)手冊:www.telerik.com/download/fiddler/fiddler4
資料來源測試部落-萌貓君,感謝分享