Q: Charles是什麼
A: Charles是一個抓包工具,類似工具還有Fiddler。Charles相當於一個插在伺服器和客戶端之間的“過濾器”;當客戶端向伺服器發起請求的時候,先到Charles進行過濾,然後Charles在把最終的資料傳送給伺服器;
Q: Charles能幹什麼
A: 常做以下這些事:
- 抓取 Http 和 Https 的請求和響應,抓包是最常用的了。
- 重發網路請求,方便後端除錯,複雜和特殊情況下的一件重發還是非常爽的(捕獲的記錄,直接repeat就可以了,如果想修改還可以修改)。
- 修改網路請求引數(客戶端向伺服器傳送的時候,可以修改後再轉發出去)。
- 網路請求的截獲和動態修改。
- 支援模擬慢速網路,主要是模仿手機上的2G/3G/4G的訪問流程。
- 支援本地對映和遠端對映,比如你可以把線上資源對映到本地某個資料夾下,這樣可以方面的處理一些特殊情況下的bug和線上除錯(網路的css,js等資源用的是原生代碼,這些你可以本地隨便修改,資料之類的都是線上的環境,方面線上除錯);
- 可以抓手機端訪問的資源(如果是配置HOST的環境,手機可以借用host配置進入測試環境)
Q: 安裝Charles
A:從官網 (opens new window)直接下載,並用以下賬號註冊
Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4
Copied!
Q: 如何抓包http請求
A:開啟mac的代理功能即可,這樣會把chrome所有的請求都代理到charles中。操作:
- Proxy --> 勾選macOS Proxy
- 同時確認Proxy-> Proxy settings ->proxies :勾選enable transparent http proxying
Q: 如何抓包https請求
A:沒有設定任何東西,一般請求到的https是unknown,這是因為https需要信任的本地證書。所以需要在本地安裝證書,操作:
安裝並信任證書
:Help --> SSL Proxying --> Install Charles Root Certificate會自動安裝證書 --> Mac需要輸入密碼信任證書,找到Charles開頭的證書,雙擊選擇信任即可。新增https代理
:Proxy-> SSL Proxying Settings->SSL Proxying:勾選Enable SSL Proxying + 新增Location(host設定為“*”,Port設定為“443”)
Q: 關閉Charles後,無法訪問網路
A: 這是因為在使用Charles後,把Mac作為了代理。退出Charles應用程式並不會自動關閉掉Mac的代理,所以需要我們手動關閉Mac代理。操作:
Go to Applications > System Preferences > Network > Advanced > Proxies and deselect any proxies that have been selected.