Charles使用介紹 Charles在移動端測試的主要應用

Charles是常用的網絡封包截取工具,在做移動開發和測試時常常需要截取網絡封包來分析。

Charles是通過將自己設置成系統的網絡訪問代理服務器,使得所有的網絡訪問請求都通過它來完成,從而實現了網絡封包的截取和分析, 更多詳細內容移步官方網站:https://www.charlesproxy.com/

Charles 雖然是收費軟件,但即使不購買也能長期使用,並且功能上不會缺斤短兩。唯一要付出的代價是每次使用時間不能超過 30 分鐘,並且啓動時將會有 10 秒種的延時。

低調低調 破解方法 低調低調

本文旨在介紹下常用的功能,其他更多的功能依據需求自行摸索。

Charles在移動端測試的主要應用

一、Charles抓包HTTP、HTTPS

1、安裝根證書:



Tips: 安裝根證書,默認不信任,需要到鑰匙串裏,點擊信任:



將移動設備和本機置於同一個網絡下,在移動設備上的網絡中添加代理 -> 手動 -> 填寫主機名和端口。一般來說,Charles默認的端口是8888,在Proxy -> Proxy Settings可設置。主機名就是本機的IP的地址,在Charles -> Help -> Local IP Address可查看。

一般初次連接時會提示是否允許進行連接,點擊allow允許就好了。如果不小心點擊拒絕,那麼有兩種方法,第一種重啓Charles;第二種,Proxy -> Access Contro Settings中添加移動設備的IP地址。

2、Charles抓移動設備HTTPS請求
點開 Help -> SSL Prox -> Install Charles Root Certificate on a Mobile Devices or Remote Browser

提示很明顯,先讓設備連上Chalres,然後在設備上用系統瀏覽器訪問chls.pro/ssl,然後會自動下載一個證書,選擇安裝證書。之後便可以抓取https協議的包了。

通過手機內證書管理程序,從設備存儲空間安裝


之後在需要的請求上,點擊Enable SSL Proxy即可, 或者在Proxy -> SSL Proxy Settings中勾選上Enable,並且添加指定host。


例如抓取全部https,host輸入通配符“ * ”,port填443。


3、Android 7.0 HTTPS抓包

Android 7.0以上版本,Google更新了網絡安全性配置,不再信任用戶導入的CA根證書。所以即便是安裝了證書,也得不到系統的信任,需要在應用中添加信任纔行。參考:http://confluence.mobvista.com/pages/viewpage.action?pageId=7969125

二、Charles過濾請求
一般來說,我們只關心特定HOST的請求。當我們僅想監控這些請求時,可以使用Charles的過濾功能。

1、Record Settings設置include/exclude
Proxy -> Recording Setttings include:需要監控的host。如果列表爲空時,默認監控所有請求 exclude:不需要監控的host

2、Filter
Filter一欄中輸入需要要過濾的host或者關鍵字。也可以在勾選上Foucsed,並制定focus哪些host。


3、Repeat
可以使用 Charles 的 Repeat 功能來簡單地測試服務器的併發處理能力,方法如下。

  • 我們在想打壓的網絡請求上(POST 或 GET 請求均可)右擊,然後選擇 「Repeat Advanced」菜單項,如下所示:


在彈出的對話框中,選擇打壓的併發線程數以及打壓次數,確定之後即可執行


4、BlackList&WhiteList
黑名單表示對名單內的所有請求做過濾


白名單表示僅對名單內的請求做響應


三、Charles網速模擬
1、Throttle Setting
Charles內置幾種網絡模型可直接使用,也可自定義來滿足特定需求。 當然更可以只針對特定host模擬網速,只需要勾選上Only for select hosts就ok了。

四、Charles修改請求及返回值
移動端測試中,Charles最常用的應該就是修改請求返回值了,有幾種方式可以實現。

1、breakpoints
像斷點一樣,當執行到指定規則鏈接時,觸發breakpoints。即可以在請求到服務端前中斷,也可以在返回到客戶端前中斷。在這個過程中便可以修改Request或者ResponseR。不過值得注意的是,在移動端的測試中,使用breakpoints會大概率導致客戶端的請求超時。因爲手動修改是需要花時間的,所以一般很少使用斷點的操作來修改請求和返回參數。

2、重定向 -- Map Local、Map Remote
顧名思義,Map Remote 是將指定的網絡請求重定向到另一個網址請求地址,Map Local 是將指定的網絡請求重定向到本地文件。 Map Remote簡單的實例:



Map Local簡單的實例:


3、rewrite
Rewrite 功能功能適合對某一類網絡請求進行一些正則替換。 Rewrite功能很強大,能很方便的在各種測試環境切來切去,就像圖中列表所展示。


具體功能不做詳細解釋,可以在使用中根據實際場景進行相應的修改。


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