1. 程式人生 > >Charles的使用二 設定代理抓取Http請求包

Charles的使用二 設定代理抓取Http請求包

Charles 主要提供兩種檢視封包的檢視,分別名為 “Structure” 和 “Sequence”。

1.Structure 檢視將網路請求按訪問的域名分類。
Structure

2.Sequence 檢視將網路請求按訪問的時間排序。
Sequence

下面將一一介紹這些如何配置和使用

一. 將Charles設定成系統代理

Charles 是通過將自己設定成代理伺服器來完成抓包的,勾選系統代理後,系統本地發出去的請求都能被擷取下來。如果只抓取APP的包的話,可關閉此配置,這樣不會出現太多的資料看著比較亂,再次點選下圖選單中的macOS Proxy選項,去掉打勾。

代理設定01

需要注意的是,Chrome 和 Firefox 瀏覽器預設並不使用系統的代理伺服器設定,而 Charles 是通過將自己設定成代理伺服器來完成封包擷取的,所以在預設情況下無法擷取 Chrome 和 Firefox 瀏覽器的網路通訊內容。如果你需要擷取的話,在 Chrome 中設定成使用系統的代理伺服器設定即可,或者直接將代理伺服器設定成 127.0.0.1:8888 也可達到相同效果。

二. 擷取移動裝置上的網路請求包

我們在除錯移動APP時,需要抓取APP傳送的資料包,首先進行Charles的設定,Proxy -> Proxy Settings預設埠是8888,根據實際情況可修改。

設定代理

檢視本機IP地址,開啟cmd視窗,Mac輸入ifconfig,Windows輸入ipconfig
會出現電腦的IP地址,我這裡使用的是Mac,地址如下
ip地址
或者通過charles的Help -> Local IP Addresses檢視ip地址:
ip地址

然後配置手機代理,IOS和Android配置差不多

Android手機代理設定

IOS手機代理設定

儲存手機端的代理設定,開啟要除錯的APP,請求就會先發送給Charles,然後驗證是否允許訪問:

代理請求

當點選允許後,可以在Proxy -> Access Control Settings裡看到可以訪問此代理伺服器列表

代理列表

注意

如果不小心點選了拒絕,可以手動新增手機IP/Mac地址到允許訪問列表,或者重啟Charles,手機再次訪問,會再次提示選擇。

如果不想每換一個手機都要進行驗證,可以配置允許所有手機訪問,加入

0.0.0.0/0(IPv4)或::/0(IPv6)

現在就可以抓包了,拿一款我們公司開發的樂視車聯APP來做測試:


三. 過濾網路請求

通常情況下,網路請求是非常大量的,從幾十個請求裡找到我們需要的觀察的某個請求比較費時,那麼我們就需要對網路請求進行過濾,只監控向指定目錄伺服器上傳送的請求。有兩種方法:

  1. 在Sequence介面的中部的Filter欄中填入需要過濾出來的關鍵字。例如我們的伺服器的地址是:*.leautolink.com,那麼只需要在Filter欄中填入leautolink即可。(一般用於臨時過濾)
    這裡寫圖片描述

  2. 在Charles的選單欄選擇”Proxy”->”Recording Settings”,然後選擇Include欄,選擇新增一個專案,然後填入需要監控的協議,主機地址,埠號。這樣就可以只擷取目標網站的封包了。如下圖所示:(固定過濾地址)

四. 代理轉發

實際開發時,有這樣的場景,服務端線上版本有bug,你在本地修改程式後,需要模擬實際的線上環境,來驗證程式的正確性,最笨的方法就是讓客戶端修改一下APP的呼叫地址到你本機,然後重新打一個版本供你模擬測試,這樣雖然可以,但每次遇到bug都要這麼做的話,那效率極其低下,然而Charles為我們解決了這個問題。

請求轉發,把呼叫方呼叫的地址轉發到你本機地址的程式進行執行。

右鍵 -> Map Remote …

並且配置Tools -> Map Romote

代理設定列表

執行APP