Charles 工具使用指南
安装 root 根证书

打开钥匙串
设置为受信状态

Android 支持抓包
安装证书

导出证书, 可以使用微信等工具保存到本地,
找到证书管理, 找到证书并进行安装, 以小米手机为例, 可以在

找到证书并进行安装, 安装之后可以在, 用户凭据部分看到此证书
Android N 以及以下可以进行抓包

Android N 以及以上需要额外处理
As of Android N, you need to add configuration to your app in order to have it trust the SSL certificates generated by Charles SSL Proxying. This means that you can only use SSL Proxying with apps that you control.
在 Android N 或者更高版本开始, 需要设置新的配置以供 Charlse 来进行正常工作
- 验证是否安装并信任 Charlese 代理证书。你可以在 `设置 -> 安全 -> 加密和凭据 -> 受信任的凭据 -> 用户选项卡 -> 确保已加载 Charlse Proxy 证书。
- 你只能 从自己的应用程序拦截 SSL 代理,而不能拦截其他应用程序。
- 在源代码中,添加
res/xml/network_security_config.xml
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<domain-config>
<!-- Make sure your URL Server here -->
<domain includeSubdomains="true">your_production_domain</domain>
<trust-anchors>
<certificates src="user"/>
<certificates src="system"/>
</trust-anchors>
</domain-config>
</network-security-config>在这里替换自己的访问域名
- 添加到 AndroidManifest.xml
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>IOS 设置支持
查看电脑 IP 地址
Help → Local IP Address 查看本机地址

得到电脑 IP 的地址,如图是 192.168.1.111 。

设置手机 HTTP 代理
手机连上电脑,点击 设置->无线局域网->连接的 WiFi ,设置 HTTP 代理:
- 服务器为电脑 IP 地址:192.168.1.111
- 端口:9428

设置代理后,需要在电脑上打开 Charles 才能上网。
电脑上打开 Charles 进行 HTTP 抓包
手机上打开某个 App 或者浏览器什么的,如果不能上网,检查前面步骤是否正确。
首次连接,会弹出提示是否允许连接,点击 Allow 允许,出现手机的 HTTP 请求列表


HTTPS 的抓包需要在 HTTP 抓包基础上再进行设置
安装 SSL 证书到手机设备
点击 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device

出现弹窗得到地址 chls.pro/ssl

在手机 Safari 浏览器输入地址 chls.pro/ssl ,出现证书安装页面,点击安装。
手机有设置密码的输入手机解锁密码进行安装

如果 Safari 浏览器输入这个网址 chls.pro/ssl 安装不了证书,需要确认:
- 设置好手机 HTTP 代理。
- 电脑上
Charles要开着。
证书信任设置
iOS 10.3 系统及以上,需要在 设置 → 通用 → 关于本机 → 证书信任设置 里面启用完全信任 Charles 证书,打开信任证书开关

进行 HTTPS 抓包
让手机重新发送 https 请求,可看到抓包

注意 :不抓包请关闭手机 HTTP 代理,否则断开与电脑连接后会连不上网。
参考
🔗 https://stackoverflow.com/questions/71788048/android-11-ssl-handshake-fails-when-using-charles-proxy
🔗 https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
