Charles高階用法
一、網速模擬
點選選單“Proxy→ Throtte Setting”開啟網速模擬配置視窗。
配置含義:
Bandwidth(頻寬)、Utilistation(利用百分比)、Round-trip(往返延遲)、MTU(位元組)
二、Map功能
Charles 的 Map 功能分 Map Remote 和 Map Local 兩種,顧名思義,Map Remote 是將指定的網路請求重定向到另一個網址請求地址,Map Local 是將指定的網路請求重定向到本地檔案。
在 Charles 的選單中,選擇 “Tools”–>“Map Remote” 或 “Map Local” 即可進入到相應功能的設定頁面。
對於 Map Remote 功能,我們需要分別填寫網路重定向的源地址和目的地址,對於不需要限制的條件,可以留空。下圖是一個示例,我將所有ytk1.yuanku.ws(測試伺服器)的請求重定向到了www.yuantiku.com(線上伺服器)。
對於 Map Local 功能,我們需要填寫的重定向的源地址和本地的目標檔案。對於有一些複雜的網路請求結果,我們可以先使用 Charles 提供的 “Save Response…” 功能,將請求結果儲存到本地(如下圖所示),然後稍加修改,成為我們的目標對映檔案。
下圖是一個示例,我將一個指定的網路請求通過 Map Local 功能對映到了本地的一個經過修改的檔案中。
三、Rewrite功能
Rewrite 功能功能適合對某一類網路請求進行一些正則替換,以達到修改結果的目的。
例如,我們的客戶端有一個 API 請求是獲得使用者暱稱,而我當前的暱稱是 “tangqiaoboy”,如下所示:
我們想試著直接修改網路返回值,將 tangqiaoboy 換成成 iosboy。於是我們啟用 Rewrite 功能,然後設定如下的規則:
完成設定之後,我們就可以從 Charles 中看到,之後的 API 獲得的暱稱被自動 Rewrite 成了 iosboy,如下圖所示:
四、Breakpoints功能
上面提供的 Rewrite 功能最適合做批量和長期的替換,但是很多時候,我們只是想臨時修改一次網路請求結果,這個時候,使用 Rewrite 功能雖然也可以達到目的,但是過於麻煩,對於臨時性的修改,我們最好使用 Breakpoints 功能。
Breakpoints 功能類似我們在 Xcode 中設定的斷點一樣,當指定的網路請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網路請求的返回內容。
下圖是我們臨時修改獲取使用者資訊的 API,將使用者的暱稱進行了更改,修改完成後點選 “Execute” 則可以讓網路請求繼續進行。
需要注意的是,使用 Breakpoints 功能將網路請求截獲並修改過程中,整個網路請求的計時並不會暫停,所以長時間的暫停可能導致客戶端的請求超時。