網路抓包工具Charles
阿新 • • 發佈:2018-12-17
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
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功能,需要填寫的重定向的源地址和本地的目標檔案。對於有一些複雜的網路請求結果。