HttpCanary使用指南——靜態注入器
靜態注入器是HttpCanary最強大的功能之一,可以實現對Http請求資料和響應資料的攔截修改。靜態注入器需要先選定一個請求,然後對其進行預編輯,編輯完成後便可對後續的相同請求進行自動修改。
比如App發往伺服器的請求為:https://test.com?city=beijing ,我們可以使用HttpCanary的靜態注入器將引數值beijing修改為nanjing 。對App的開發和測試而言,可以模擬很多不同場景的請求,來提高測試效率。
本篇文章將詳細講解如何使用靜態注入器。
測試請求範例
http://wthrcdn.etouch.cn/weather_mini?city=北京 複製程式碼
建立靜態注入器
首先,長按抓包記錄,在彈框中選擇“靜態注入“,然後給注入器命名(方便後面對注入器進行管理)。

命名完成後,進入注入器編輯介面。編輯頁面會展示出此請求的所有Http協議資料,包括請求行(Start Line)、請求頭(Headers)、請求體(Body)、狀態行(StatusLine)、響應頭(Headers)、響應體(Body)。
左邊Tab是請求資料,右邊是響應資料。

關於Http協議的報文結構,下面這張圖做了詳細描述(圖中非範例請求資料),更多內容請見:https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages

在瞭解Http協議報文之後,我們下面開始講解如何使用注入器修改資料。
1. URL引數修改
我們希望將請求引數city的值由 北京 修改為 南京 ,只需要點選”city=北京“這個引數區域。

開啟URL引數編輯頁後,將引數值由北京改為南京,並儲存。

修改完成後,返回注入器頁面。city前面的點顏色由灰色變為綠色,表示引數是修改狀態。即如果後續相同請求引數中包含city引數,其值會被強制替換成 南京 。

點選右上角完成注入器的建立。
下面我們重新用AppTest應用傳送一條相同的請求,來測試修改是否能生效。抓到包後,開啟抓包內容詳情:

由於南京是中文,作為URL一部分會被Encode,不怕,我們點選這個URL開啟URL預覽頁:

我們最後再來看看響應資料,確認下是否是真的生效了。

完美!