★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公眾號:山青詠芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/12200080.html
➤如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
1. 安裝
官網下載地址:https://www.charlesproxy.com/download/
2. 激活
打開Charles,【Help】->【Register Charles】
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
3. 配置
3.1 證書安裝
依次點擊四個安裝,將Charles的根證書安裝到相應位置:【Help】->【SSL Proxying】->
【Install Charles Root Certificate】:在【鑰匙串訪問】中找到Charles證書,雙擊證書,改成【始終信任】
【Install Charles Root Certificate in iOS Simulators】:在iOS模擬器中安裝證書。
【Install Charles Root Certificate in Java VMs】:如果你已經安裝了Java庫,即可安裝。
【Install Charles Root Certificate on a Mobile Device or Remote Browser】:
在手機端或遠程瀏覽器中安裝。【系統偏好設置】->【共享】:打開互聯網共享。
將MAC和iPhone連接在同一個局域網中,按照提示在iPhone端所連接的Wifi中設置代理:
設置iPhone端Wi-Fi代理:【無線局域網】->【連接的Wifi】->【配置代理】IP:192.168.2.97 端口:8888
點擊:【Allow】,第一次會提示,后面不再出現提示。
在iPhone的【Safari瀏覽器】中輸入,必須使用iPhone的Safari瀏覽器!
chls.pro/ssl
依據下圖操作:在設置中點擊安裝【已下載描述文件】
設置信任證書:【通用】->【關於本機】->【證書信任設置】->【啟用完全信任】
3.2 代理設置
可以設置抓包數據類型,包括http與socket數據。可以根據需要在proxies欄下勾選。

如果需要抓Mac上的瀏覽器數據,需要在macOS欄,勾選http.

3.3 手機使用代理
手機連接局域網下wifi,與charles必須為同一外網下。
-
自動代理
在已連接的wifi上點擊更多,進入配置代理頁。勾選自動,在輸入框URL中輸入:
即設置了自動代理。
-
或者設置手動代理
輸入charles的ip與端口即可
3.4 HTTPS抓包
HTTPS抓包,需要經過SSL。
Proxy->SSL Proxying setting
會打開如下界面。點擊Add,Host欄與Port欄都填空(表示抓所有SSL請求),確定即可。


3.5 可接入控制
charles可以通過Access control Settings來控制允許訪問列表。如果未允許本機器IP,訪問不會走Charles,當然也抓不了包。


此手機的ip地址也會出現在Access control Settings的列表中。
我一般配置為允許所有,在Access control Settings中Add,輸入0.0.0.0/0,添加即可。

這個功能相當有用,可以把數據請求的response從本地文件獲得。
比如:我有一個系統升級功能,升級方式upgradeType有三種:強制/普通/靜默,然而,自己想要測試驗證三種場景,就得麻煩后台去修改數據。這時候,Map Local可以上場了。
-
保存遠端response:
保存返回值 -
設置Map Local:
添加選擇json文件 -
打到保存的json文件,修改返回值:
修改
然后重新請求,就會走你修改后的本地文件數據了。再也不用頻繁麻煩后端同學了,自己就能模擬各種數據場景。
如何關閉?
charles工具欄 -> Tools -> Map Local,點擊進入

4. 一些常見問題
4.1 真機驗證應用時卡住?
作為蘋果開發,很多時候需要通過Xcode把自己做的小Demo運行到手機上,用的又是免費的個人證書,需要在手機上信任證書,及驗證應用。如果你設置了抓包,ssl是驗證不過的。
解決辦法:
ssl時,只抓指定的網址,不要設置全抓*
。charles工具欄 -> Proxy -> SSL Proxy Settings,只抓項目后台地址。

把上面步驟過了,就可以愉快的抓https了。總結一下:
- 證書:Mac/模擬器/iphone證書(不要忘記信任證書)。
- Proxy setting勾選HTTP與SOCKS。
- 同一局域網。
- 手機設置代理。
- Access control Settings同意接入
- SSL proxy添加星。
當然,charles功能不僅僅於此,非常強大,還有很多功能等待發現。如:斷點/攔截,返回修改后數據/模擬斷網/模擬網絡差。