我們知道Fiddler是位於客戶端和服務器之間的代理,它能夠記錄客戶端和服務器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至可以修改服務器返回的數據,功能非常強大,是web調試的利器。前面我們介紹了如何使用Fiddler進行抓包和分析,以及如何抓取APP上的數據包。這里我們介紹下如何修改請求和響應數據,也就是設置斷點。
對request設置斷點
1)通過菜單選項或快捷鍵F11進行設置,如圖
當我們設置斷點后,進行HTTP請求,數據包順序列會有中斷的標記,單擊該數據包可以看到在右側會增加一行操作欄。這個時候我們在前端是沒有正常加載網頁的,點擊【Run to Completion】后可以返回響應數據。
接下來為了看我們的斷點設置是否生效,我們以登錄為例子進行測試。登錄無憂行網站,輸入正確的用戶名和密碼,點擊登錄。我們斷點規則設置為before request,然后將密碼清空,看看服務器給我們返回了什么響應數據。
繼續以登錄為例子,這次我們將手機號改成非移動賬號進行登錄。
由此可見,我們的斷點已經設置成功,並且成功修改了HTTP的請求數據。
2)通過菜單選項或快捷鍵進行設置時,會將所有的HTTP請求都設置斷點,但有時我們只想針對某個服務器發出的請求設置斷點,應該怎么操作呢?Fiddler是支持命令操作的,我們可以通過“bpu 服務器地址”命令來對特定的請求設置斷點。
在下圖所示的位置輸入命令,然后回車運行。
這個時候從該服務器發出的所有請求都會被中斷,而從其他服務器發出的請求可以正常響應。
如果要清除原來的斷點,可以在命令行輸入“bpu”,就會清除所有的斷點。
對response設置斷點
1)同樣的也可以通過菜單選項或快捷鍵alt+F11進行設置
2)通過命令“bpafter 服務器地址”
我們也用一個實例來驗證通過設置斷點修改響應數據。以百度主頁為例,我們攔截到響應數據中的title值為”百度一下,你就知道“,我們將響應數據中的title改成”test百度一下,你就知道“,然后在前端看看最終展示的是什么數據。
通過幾個實例,更好的幫助我們理解斷點的含義,也鞏固了Fiddler作為代理服務器的概念。接下來我們再來說說,Fiddler另一個很實用的功能:Fiddler的編碼和解碼。
Fiddler的編碼和解碼
1)響應body解碼
有時候我們在Fiddler上看到響應數據是幾個亂碼字符,首先我們可以點擊,上方黃色提示區域直接進行解碼。如下面的兩個圖所示。
2)請求和響應數據解碼
有的時候,基於安全性考慮,開發人員會將請求和響應的body根據一定規則進行解碼。如果是普通的編碼規則,我們可以直接通過Fiddler操作進行解碼。例如在登錄百度網站的時候,有個參數的值是一個url地址,這個url經過urlEncode進行轉碼了。我們就可以將該參數通過urlDecode進行解碼。
首先,找到這個參數,選中后右鍵選擇【send to TextWizard】
然后,在【transform】中找到【URLDecode】,字段值就被成功解碼,我們就可以很清楚的看到里面有哪些參數以及參數的值是什么了。
上面都是解碼的例子,編碼在實際運用中很少,就不介紹了。另外里面還有很多其他的編碼/解碼方法,就不一一舉例啦~~