《爆肝整理》保姆級系列教學-玩轉Charles抓包神器教學(9)-Charles如何修改請求引數和響應資料-上篇

2023-03-01 12:00:18

1.簡介

宏哥之前一直用postman調介面比較多(web端),也非常容易上手和操作。但有時候想要去修改APP的頁面展示,造資料又會比較麻煩,你自己造相對還好些,要是讓開發造,還得低眉順眼的去求人。通過今天的學習後,再也不擔心這些煩心事。我們可以通過工具Charles就可以實現。可以用以下三種方法修改請求引數或修改響應:map(對映)、Breakpoints(打斷點)、Rewrite(重寫)。

2.修改請求引數或者響應資料的方法

根據具體的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以達到修改伺服器返回內容的目的。這三者在功能上的差異是:

Map 功能適合長期地將某一些請求重定向到另一個網路地址或本地檔案。只能修改返回資料。
Rewrite 功能適合對網路請求進行一些正則替換。可修改請求資料和響應資料。
Breakpoints 功能適合做一些臨時性的修改。在響應時間內,可修改請求資料和響應資料。

2.1MAP(對映)

Charles 的map功能,就是將某個請求進行重定向,然後用重定向後的內容來修改請求內容;map又分Map Remote和Map Local,顧名思義:Map Remote 是將指定的網路請求重定向到另一個網址,Map Local 是將指定的網路請求重定向到本地檔案

2.2Rewrite(重寫)

Rewrite 功能功能適合對某一類網路請求進行一些正則替換,以達到修改結果的目的。

2.3Breakpoint(打斷點)

上面提供的 Rewrite 功能最適合做批次和長期的替換,但是很多時候,我們只是想臨時修改一次網路請求結果,這個時候,使用 Rewrite 功能雖然也可以達到目的,但是過於麻煩,對於臨時性的修改,我們最好使用 Breakpoints 功能。

Breakpoints 功能類似我們在 Xcode 中設定的斷點一樣,當指定的網路請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網路請求的返回內容。

3.修改請求內容

3.1方法一:直接選中修改

有些時候為了偵錯伺服器的介面穩定性和容錯性,我們需要反覆嘗試不同引數的網路請求。Charles 可以方便地提供網路請求的修改和重發功能。具體操作步驟如下:

1.只需要在以往的網路請求上點選右鍵,選擇 「Compose」,即可建立一個可編輯的網路請求。這裡宏哥還是利用上一篇中的介面進行演示。如下圖所示:

2.我們可以修改該請求的任何資訊,包括 URL 地址、埠、引數等,之後點選 「Execute」 即可傳送該修改後的網路請求(如下圖所示)。Charles 支援我們多次修改和傳送該請求,這對於我們和伺服器端偵錯介面非常方便,如下圖所示:

3.將1801修改成1802,傳送預期結果返回李四實際結果一樣,如下圖所示:

3.2Rewrite(重寫)

Rewrite 功能功能適合對某一類網路請求進行一些正則替換,以達到修改結果的目的。

1.例如,還是用之前API 請求是獲得使用者賬戶資訊,而我當前的賬戶是 「張三」,如下圖所示:

 

2.我們想試著直接修改請求引數,將 1801 換成成 1802。於是我們啟用 Rewrite 功能,點選選單欄tools-->Rewrite,如下圖所示:

3.勾選「Enable Rewrite」,點選「Add」,然後設定如下的規則,如下圖所示:

4.瀏覽器存取或者其他介面工具重新傳送請求,預期結果返回李四與實際結果一樣,如下圖所示:

3.3Breakpoint(打斷點)

上面提供的 Rewrite 功能最適合做批次和長期的替換,但是很多時候,我們只是想臨時修改一次網路請求結果,這個時候,使用 Rewrite 功能雖然也可以達到目的,但是過於麻煩,對於臨時性的修改,我們最好使用 Breakpoints 功能。

Breakpoints 功能類似我們在 Xcode 中設定的斷點一樣,當指定的網路請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網路請求的內容。

打斷點修改請求的方法已經在上一篇文章中進行了詳細的介紹,這裡宏哥就不做贅述了。

需要注意的是,使用 Breakpoints 功能將網路請求截獲並修改過程中,整個網路請求的計時並不會暫停,所以長時間的暫停可能導致使用者端的請求超時。嘿嘿!這個就要考驗你的手速了。

4.小結

 宏哥這裡總共介紹了三種設定修改請求引數的方式,一般工作中,我們要根據需要靈活變換方法,而不是一成不變的。好了,今天時間也不早了,講解和分享就到這裡!感謝您耐心的閱讀~~