1. 程式人生 > >網路抓包工具Charles

網路抓包工具Charles

Charles是Mac 下的擷取網路封包的工具,在做 iOS 開發時,為了除錯與伺服器端的網路通訊協議,常常需要擷取網路封包來分析。Charles 通過將自己設定成系統的網路訪問代理伺服器,使得所有的網路訪問請求都通過它來完成,從而實現網路封包的擷取和分析。

1. 安裝Charles
  http://www.charlesproxy.com

 (破解補丁)http://note.sdo.com/u/1528563206/n/r70o6~jK35opnM10I000fd
2. 安裝SSL證書
  如果需要擷取分析 SSL 協議相關的內容,需要安裝 Charles 的 CA 證書:

http://www.charlesproxy.com/ssl.zip

下載 CA 證書檔案; 解壓該 zip 檔案後,雙擊其中的 .crt 檔案,這時候在彈出的選單中選擇 “總是信任”; 從鑰匙串訪問中即可看到新增成功的證書。

3. 將Charles設定成系統代理
  啟動 Charles 後,第一次 Charles 會請求你給它設定系統代理的許可權。可以輸入登入密碼授予 Charles 該許可權,也可以忽略該請求,然後在需要將 Charles 設定成系統代理時,選擇選單中的 “Proxy” –> “Mac OS X Proxy” 來將 Charles 設定成系統代理。
4. 過濾網路請求(2種方法)

在主介面的中部的 Filter 欄中填入需要過濾出來的關鍵字。例如伺服器的地址是:

http://baidu.com, 那麼只需要在 Filter 欄中填入 baidu 即可。 在 Charles 的選單欄選擇 “Proxy”–>“Recording Settings”,然後選擇 Include 欄,選擇新增一個專案,然後填入需要監控的協議,主機地址,埠號,就可以只擷取目標網站的封包了。 在這裡插入圖片描述

5. Charles上的設定(以iphone為例)
  要擷取iPhone上的網路請求,首先需要將Charles的代理功能開啟,在Charles的選單欄上選擇“Proxy”->"Proxy Settings",填入代理埠8888,並勾上"Enable transparent HTTP proxying" 。
6. iPhone上的設定
 iPhone的 “設定”->“無線區域網“中,可以看到當前連線的wifi名,點選右邊的詳情鍵,可以看到當前連線上的wifi的詳細資訊,在其最底部有“HTTP代理”一項,將其切換成手動,然後填上Charles執行所在的電腦的IP,以及埠號8888。

 設定好之後,我們開啟iPhone上的任意需要網路通訊的程式,就可以看到Charles彈出iPhone請求連線的確認選單,點選“Allow”即可完成設定。
7. Map功能

Charles的Map功能分 Map Remote和Map Local兩種:

Map Remote是將指定的網路請求重定向到另一個網址請求地址 Map Local是將指定的網路請求重定向到本地檔案。 在Charles的選單中,選擇 “Tools”->”Map Remote”或”Map Local“。

  Map Remote功能,需要分別填寫網路重定向的源地址和目的地址。

  Map Local功能,需要填寫的重定向的源地址和本地的目標檔案。對於有一些複雜的網路請求結果。