HttpCanary使用指南——靜態注入器

HttpCanary更多資料,點我!!!git

靜態注入器是HttpCanary最強大的功能之一,能夠實現對Http請求數據和響應數據的攔截修改。靜態注入器須要先選定一個請求,而後對其進行預編輯,編輯完成後即可對後續的相同請求進行自動修改。github

好比App發往服務器的請求爲:https://test.com?city=beijing ,咱們可使用HttpCanary的靜態注入器將參數值beijing修改成nanjing 。對App的開發和測試而言,能夠模擬不少不一樣場景的請求,來提升測試效率。json

本篇文章將詳細講解如何使用靜態注入器。api

測試請求範例

https://www.apiopen.top/weatherApi?city=北京
複製代碼

建立靜態注入器

首先,長按抓包記錄,在彈框中選擇「靜態注入「,而後給注入器命名(方便後面對注入器進行管理)。bash

命名完成後,進入注入器編輯界面。編輯頁面會展現出此請求的全部Http協議數據,包括請求行(Start Line)、請求頭(Headers)、請求體(Body)、狀態行(StatusLine)、響應頭(Headers)、響應體(Body)。服務器

左邊Tab是請求數據,右邊是響應數據。 編輯器

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

在瞭解Http協議報文以後,咱們下面開始講解如何使用注入器修改數據。測試

1. URL參數修改

咱們但願將請求參數city的值由北京修改成南京spa

https://www.apiopen.top/weatherApi?city=南京
複製代碼

只須要點擊」city=北京「這個參數區域。

打開URL參數編輯頁後,將參數值由北京改成南京,並保存。

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

點擊右上角完成注入器的建立。

下面咱們從新用AppTest應用發送一條相同的請求,來測試修改是否能生效。抓到包後,打開抓包內容詳情:

因爲南京是中文,做爲URL一部分會被Encode,不怕,咱們點擊這個URL打開URL預覽頁:

咱們最後再來看看響應數據,確認下是不是真的生效了。

完美!

2. URL參數添加和刪除

若是咱們但願將請求修改成這種:

https://www.apiopen.top/weatherApi?province=江蘇&days=7
複製代碼

刪除city參數,新增province和days參數。

一樣先按照上一步的步驟打開靜態注入器編輯頁面。點擊city參數右側的三個點按鈕,打開功能選擇彈框,一共有三個選項:跟隨,自定義,禁用。

這裏解釋下三個選項的含義。

  • 跟隨,表示使用原始數據,不作任何修改(默認選項),顏色爲灰色。
  • 自定義,表示強行覆蓋或添加設定的參數值,顏色爲綠色。
  • 禁用,表示強行刪除此參數和值,顏色爲紅色。

因此,刪除city參數,咱們選擇禁用選項,注意參數前面的點變成了紅色。

下一步,點擊新增按鈕添加兩個參數,province=江蘇和days=7。

點擊右上角保存,完成注入器建立後,咱們從新再發一條請求,看看效果。

很明顯,city參數沒有了,多了province和days兩個參數。

完美!

3. Headers修改、添加和刪除

同上面URL操做相同,參考1和2,再也不贅述。

4. 響應行(Status Line)修改

Http協議中響應行用來表示請求服務的結果狀態,好比經常使用的200表示成功,404表示資源未找到,500表示服務器異常等等。

有的時候爲了測試一些極端狀況,好比服務器不返回200而是404,App狀態是否會出現bug等。咱們可使用HttpCanary來強行修改響應行中的狀態碼來實現這種效果。

點擊編輯按鈕,打開列表,其中列出來幾乎全部經常使用的響應行(都是標準響應行),咱們從列表中選擇404 Not Found。

選擇後自動返回,若是想撤銷操做,點擊右邊復位按鈕。

咱們點擊右上角保存按鈕完成注入器的建立,從新用AppTest應用發送一條相同請求。從下圖中能看出,後面接收到的請求已是404 Not Found了。

完美!

5. 請求/響應體(Body)修改

在App實際開發和測試中,修改請求數據和返回數據是最常常用到的。好比,測試地理位置相關接口時,須要修改經緯度;再好比,服務器返回了某些時間戳,咱們但願將其延長或者縮短。

一樣以此天氣接口爲例,但願將響應體中的yesterday的high改成100℃,low改成-100℃,type改成冰雹

打開建立靜態注入器的頁面後,拉到最下面。點擊右側向上的箭頭,選擇編輯方式。

靜態注入器提供了兩種方式用來編輯Body:上傳文件和直接編輯。若是Body是二進制格式數據(好比音頻、視頻、ProtoBuffer等),HttpCanary內置的文本編輯器是沒法處理的,只能使用上傳文件的方式。若是Body是json、xml、fromdata等文本格式,可使用直接編輯。

因爲接口返回的天氣數據是JSON格式,咱們可使用直接編輯選項,打開後直接進行數據修改。

保存後完成靜態注入器的建立,用AppTest應用再發送一條相同請求,來看看結果。

修改爲功!完美!

5. 靜態注入器管理

靜態注入器和咱們經常使用的斷點(BreakPoint)方式修改數據不一樣,它是經過預設的方式來攔截和修改數據,能夠極大地提升數據修改的效率。

HttpCanary能夠對一個請求配置多個靜態注入器,按照先配置先生效的原則進行攔截處理。靜態注入器一旦建立了,將會以Mod的形式做爲插件功能存在於HttpCanary中,即便是殺掉HttpCanar APP後再重啓也能生效。

那咱們如何對注入器進行管理呢?打開設置->模組管理頁面,能看到全部建立的靜態注入器。

點擊進入詳情後,能看到注入器是屬於哪一個請求的。

若是須要刪除或者禁用已經建立的靜態注入器,只須要在列表頁長按打開功能選項便可!

結語

若是您對HttpCanary有任何疑問或者建議,能夠訪問HttpCanary Github並建立issue!

靜態注入器的使用指南到此結束,感謝您的閱讀!

相關文章
相關標籤/搜索