使用抓包工具 Fiddler 或 Charles 修改後臺接口返回數據

1 前言

抓包工具的核心原理是代理轉發機制,抓包工具在客戶端和服務端之間充當代理人的角色。當客戶端向服務端請求數據時,客戶端先將請求發給抓包工具,然後抓包工具將請求轉發給服務器進行網絡請求,這個時候抓包工具相當於客戶端;當服務端數據響應數據後,先將數據返回給抓包工具,然後抓包工具將響應數據轉發給客戶端,這個時候抓包工具相當於服務端。因此,抓包工具需要做的事情就是對客戶端時將自己僞裝爲服務端,對服務端時將自己僞裝爲客戶端

在客戶端開發過程中,經常需要與後臺打交道,既然如此,就需要有後臺接口數據。但是我們常常會遇到下面這些尷尬的場景:由於客戶端和後臺是並行開發的,開發初期後臺只是定義了接口,但是要到聯調的時候才能給出數據;有時候我們想修改後臺返回的數據來驗證客戶端某些功能是不是完好的(比如列表數據返回空,來驗證空佔位頁的情況);抑或有時候後臺返回的數據並不是我們所想要的,我們就需要使用抓包工具來修改後臺返回的數據,爲所欲爲~~~hhhh

2 本地文件映射方式

下面的操作主要以 Fiddler 抓包工具爲例。Charles 工具裏面的 Map Local 操作也是類似的,都是基於本地文件映射

首先確定要修改哪個接口,比如這裏我需要修改接口:XXX/psyapi/recommend/recForYou.do
未修改時該接口的返回結果如下圖所示:

![這裏寫圖片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMTA1MjEyODAwNjYx?x-oss-process=image/format,png)

list裏面有三個條數據,如果我要刪除最後一條數據,操作步驟如下:

先將服務端返回的 json 數據複製到本地 txt 文本中,隨便命名,如local_json.txt,文件如下:

![這裏寫圖片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMTA1MjEzMjUwMjEy?x-oss-process=image/format,png)

在 Fiddler 左側面板左鍵單擊選中要修改的接口XXX/psyapi/recommend/recForYou.do,將右側面板中切換到AutoResponder選項視圖,選中前面2個複選框,並將本地 json 文件的絕對路徑鍵入到最下方的輸入框中,最後點擊Save按鈕即可。如圖所示:

![這裏寫圖片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTgwMTA1MjE0NzE4NzQy?x-oss-process=image/format,png)

現在再請求該接口,你會發現後臺返回結果就是跟本地文件內容一樣的了。驚不驚喜~


3 斷點攔截方式

上面通過本地文本替換的方法,的確可以很方便得修改後臺接口返回數據,但是有時候如果僅僅是想修改接口返回數據中一兩個數據,使用這種方法未免有點小題大做。這種情況下,有沒有更好的方法呢,答案是肯定的,那就是 Fiddler 的斷點工具,如 請求前斷點(before response, bpu)。在 Fiddler 最下方的黑色輸入框中輸入 bpu xxx(要斷點的url),按 enter 就行,當走到該接口的時候, 會發現該接口最前面有個紅色的爬蟲標識:

這裏寫圖片描述

單擊左邊面板中的接口,在右邊面板中出現如下:
點擊黃色的 Break on Response按鈕,在 TextView中就可以看到接口返回的數據,這些數據是可以修改的,比如 可以將userUnreadMessageCount":7 修改爲userUnreadMessageCount":6等等,修改好後,點擊綠色的 Run to Completion即可。

這裏寫圖片描述

修改後的結果如下:

這裏寫圖片描述

可以看到,這種方式有時候會比本地文件映射的方式更方便。

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