用户使用 Charles 对移动端 App 进行 HTTPS 调试,核心步骤可以概括为:连接同一网络、配置手机代理、下载并信任SSL证书。下面我以 iOS 和 Android 系统为例,为用户梳理具体的操作流程。
mermaid
flowchart TD
A[准备工作<br>手机与电脑连接同一Wi-Fi] --> B[配置手机代理<br>指向电脑IP与Charles端口]
B --> C{下载并安装<br>Charles根证书}
C --> D[iOS设备]
C --> E[Android设备]
subgraph D [iOS 流程]
D1[浏览器访问<br>chls.pro/ssl 下载证书] --> D2[设置 -> 通用<br>-> VPN与设备管理<br>安装描述文件] --> D3[设置 -> 通用<br>-> 关于本机<br>-> 证书信任设置<br>开启证书开关]
end
subgraph E [Android 流程]
direction TB
E1[浏览器访问<br>chls.pro/ssl 下载证书] --> E2{直接安装<br>是否成功?}
E2 -- 是 --> E3[设置 -> 安全<br>-> 加密与凭据<br>-> 从存储设备安装<br>(部分厂商路径不同)]
E2 -- 否/需手动安装 --> E4[在电脑端通过<br>Help -> SSL Proxying<br>-> Save Charles Root Certificate...<br>导出证书并传至手机]
E4 --> E3
end
D3 --> F[在Charles中<br>开启SSL代理并添加目标域名]
E3 --> F
F --> G[开始调试<br>成功解密HTTPS流量]
一、 iOS 设备:安装与信任证书
在 iOS 设备上,安装证书后还需要一个“信任”步骤,否则依然无法抓包。
1. 配置代理:确保手机和电脑在同一个 Wi-Fi 下。点击 Wi-Fi 旁边的详情图标 `(i)`,将“配置代理”改为“手动”,填入电脑的 IP 地址和 Charles 的端口(默认为 `8888`)。
2. 下载证书:打开手机 Safari 浏览器,访问证书下载地址 `chls.pro/ssl`。页面会提示下载一个描述文件 。
3. 安装描述文件:下载完成后,手机会自动跳转或你需要进入 “设置” -> “通用” -> “VPN与设备管理”。点击下载好的“Charles Proxy CA...”描述文件,然后点击右上角的“安装” 。
4. 关键步骤:信任证书:对于 iOS 10.3 及以上的系统,安装完描述文件后,必须再进入 “设置” -> “通用” -> “关于本机” -> “证书信任设置”,找到刚刚安装的 Charles 根证书,打开后面的开关以启用完全信任 。至此,iOS 端的配置才算完成。
二、Android 设备:安装证书的多种方式
Android 系统版本和厂商定制较多,安装路径略有不同,但核心思路一致。
1. 配置代理:与 iOS 类似,长按已连接的 Wi-Fi,选择“修改网络”,将“代理”设置为“手动”,填入电脑 IP 和端口 `8888` 。
2. 下载证书**:在手机浏览器(如 Chrome 或系统浏览器)中访问 `chls.pro/ssl`,系统会自动下载一个 `.pem` 格式的证书文件 。
3. 安装证书:
通用路径:进入手机 “设置” -> “安全” -> “加密与凭据” -> “从存储设备安装”(或“安装CA证书”)。找到并点击刚刚下载的证书文件,按照提示完成安装 。
备选方案:如果浏览器下载后找不到安装入口,可以尝试在电脑端通过 Charles 菜单 `Help` -> `SSL Proxying` -> `Save Charles Root Certificate...` 将证书导出,然后通过蓝牙、文件传输等方式发送到手机,再重复上述“从存储设备安装”的步骤 。部分手机可能需要将证书文件重命名为 `.crt` 后缀才能识别 。
4. 验证安装:安装成功后,可以在“设置” -> “安全” -> “加密与凭据” -> “信任的凭据” -> “用户” 标签页下,找到名为“Charles Proxy CA”的证书 。
三、补充说明与常见问题
完成上述步骤后,还有几个小细节需要注意:
开启SSL代理:手机端配置好证书后,别忘了在电脑端的 Charles 上,点击 `Proxy` -> `SSL Proxying Settings`,勾选“Enable SSL Proxying”,并点击“Add”填入你需要解密的域名(如 `*:*` 或 `*:443` 代表所有)。
允许连接:当手机首次连接 Charles 代理时,电脑端 Charles 会弹出一个提示框,询问是否允许该设备连接,记得点击 “Allow” 。
为什么 Android 7.0 以上还是抓不到某些 App 的包?** 这是由 Android 系统的“证书固定”和网络安全配置导致的。高版本 Android 默认不信任用户安装的证书,只有系统内置的证书才被信任。如果 App 自己做了更强的校验,可能需要将 App 改成可调试版本,或通过 root 手机后将 Charles 证书安装到系统证书目录下 。
如果在某个步骤遇到问题,比如找不到SSL证书安装入口,可以告诉我你的手机型号和系统版本,我会帮你看看具体的操作路径~