Charles是一個HTTP代理/ HTTP 監聽器 /反向代理,它使開發人員能夠檢視他們的機器和Internet之間的所有HTTP和SSL / HTTPS通訊。這包括請求、響應和HTTP頭(其中包含cookie和快取資訊)。
使用Charles,我們可以抓取移動裝置經由其代理的資料包,通過配置客戶端證照,可以得到解密後的https資料包。
Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).
注:Charles是一款跨平臺的收費軟體,安裝後會獲得30天的體驗時間,在體驗期間內,每次使用最長會話不能超過30分鐘,會話結束後重新開啟可繼續使用。
使用Homebrew安裝
brew cask install charles
從官網下載安裝
HTTP
開啟代理服務
在配置的Proxy -> Proxy Settings
設定代理伺服器監聽的埠號,一般我們使用8888埠。
手機網路使用代理
設定手機網路代理為前一步代理伺服器的ip和埠,注意要在同一網段下。
檢視網路請求
配置完成後我們可以看到Charles已經開始捕獲網路請求了。但是這個時候捕獲到的HTTPS資料包是亂碼的,因為被加密過。如果想要得到解密後的內容,還需要對HTTPS做額外的配置。
HTTPS
本機安裝Charles 證照
與網路上的教程直接 Help -> Install Charles Root Certificate不同
這一步我們先要儲存證照到本地,因為Mac的安全策略不允許把證照安裝到System Roots。
選擇 Help -> Sava Charles Root Certificate
儲存本地後,需要安裝證照。
直接執行證照檔案、Help -> Install Charles Root Certificate或者執行Key Chain Access都可以。
開啟證照管理後,拖入到System下
此時證照並沒有被信任,雙擊未被信任的證照。
選擇總是信任
移動裝置安裝證照
確認移動裝置已經使用Charles代理後,瀏覽器訪問下面的地址,下載證照並安裝。
chls.pro/ssl
一般瀏覽器開啟後會預設提示安裝,一些手機需要額外處理。
如小米手機預設瀏覽器無法自動安裝,可以使用edge瀏覽器下載。
iphone安裝後需要在配置中信任證照。
配置需要抓取的域名
開啟 Help -> SSL Proxy Settings
新增需要抓包的域名,埠為443
全部配置完畢後,可以看到介面資料已經被解密。
安卓可以抓取瀏覽器https,但無法抓取應用內https資料
由於安卓的安全設定,應用可以不使用系統提供的證照自行驗證,這類應用如微信。
有人說可以替換系統根證照實現,懂安卓可以嘗試下。
iphone強制app使用系統證照,所以可以抓取ipone app的資料作為替代。
其他問題待補充
本作品採用《CC 協議》,轉載必須註明作者和本文連結