Charles 抓 HTTPS 包配置记录:8888 代理与 chls.pro/ssl 证书
1 Charles 是什么
Charles 是 HTTP/HTTPS 代理服务器和抓包工具,能拦截并展示电脑或手机上经过的网络请求和响应。移动端开发调试中常用它排查接口异常、分析 App 网络行为、做安全测试。官方地址:https://www.charlesproxy.com/,免费版可试用 30 天。
2 抓包原理
Charles 在电脑上开启代理服务,默认监听 8888 端口。手机把网络代理指向该电脑后,请求先到 Charles,再由 Charles 转发到真实服务器;服务端响应也先经过 Charles 再回到手机。
- HTTP:明文传输,Charles 直接读内容。
- HTTPS:需要开启 SSL Proxying。Charles 用自己根证书签发的动态证书与手机通信,手机信任后,Charles 可解密并记录密文内容。所以必须安装并信任 Charles 根证书,否则手机会因证书无效而报错。
3 准备工作
3.1 下载安装 Charles
从官网下载对应系统版本,安装完成后首次启动会请求系统代理权限,选择允许。
3.2 确认同一局域网
最关键前提:电脑和手机连同一个 Wi-Fi。否则手机无法访问电脑上的代理地址。
3.3 查看电脑 IP 和代理端口
- IP:菜单
Help → Local IP Address - 端口:
Proxy → Proxy Settings,默认8888
4 手机配置代理
4.1 iOS
设置 → 无线局域网- 点击当前 Wi-Fi 右侧的
i图标 - 找到
HTTP 代理,选择手动 - 填:
服务器:电脑 IP端口:8888
4.2 Android
设置 → WLAN- 长按当前 Wi-Fi,选择
修改网络 - 展开
高级选项,将代理设为手动 - 填服务器主机名(电脑 IP)和端口
8888
4.3 允许连接
手机设置代理后,Charles 会弹窗询问是否允许该设备连接,点击 Allow。
5 安装 SSL 证书(HTTPS 抓包)
不装证书时,HTTPS 请求在 Charles 中会显示为 unknown 或乱码。
5.1 电脑端安装证书
Help → SSL Proxying → Install Charles Root Certificate,按向导安装到 受信任的根证书颁发机构。
5.2 手机端下载并安装证书
推荐做法:Charles 菜单 Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device or Remote Browser,按提示操作。手机浏览器打开 chls.pro/ssl 下载证书;打不开时试用备用地址 charlesproxy.com/getssl。
iOS:
- 下载后进
设置 → 通用 → VPN与设备管理,安装描述文件。 - 进
设置 → 通用 → 关于本机 → 证书信任设置,打开 Charles 证书信任开关。
Android:
- 下载后进
设置 → 安全 → 安装证书(或更多安全设置 → 加密和凭据 → 从存储设备安装)。 - 选择
CA 证书或用户证书,导入证书文件。 - 安装后可在
设置 → 安全 → 受信任的凭据 → 用户中查看。
5.3 开启 SSL 代理
Proxy → SSL Proxying Settings- 勾选
Enable SSL Proxying - 点
Add,Host 和 Port 分别填*和*,表示解密所有 HTTPS 流量;也可以只添加需要抓包的域名。 - 或在 Charles 主界面左侧域名上右键 →
Enable SSL Proxying。
如果 *:* 使某个网站/App 请求异常,可在 Exclude 列表中添加排除项。
6 验证抓包结果
手机打开任意 App 或网页,Charles 应能看到对应请求。若带锁图标的请求仍显示 unknown,说明证书还没装好或没被信任,回到第 5 节逐项检查。
7 进阶功能
7.1 请求过滤
主界面下方 Filter 输入关键词过滤请求;或在 Proxy → Recording Settings 通过 Add/Exclude 精确控制抓取范围。
7.2 Breakpoints
右键请求 → Breakpoints。下次触发会暂停,可修改请求参数或响应数据后再放行,适合测试 App 的异常处理。
7.3 Repeat
右键请求 → Repeat 重发请求,测试接口幂等性或高频请求表现。
7.4 Throttle
Proxy → Throttle Settings 勾选 Enable Throttling,可模拟 2G/3G/4G 等弱网环境。
7.5 Map Remote
Tools → Map Remote,把线上环境请求映射到本地开发服务器,无需发布就可在真实环境验证代码改动。
8 常见问题与排查
Q1:手机配置代理后无法上网
- 确认电脑和手机连同一 Wi-Fi
- 确认 Charles 正常运行,端口
8888未被占用 - 检查 Windows/macOS 防火墙是否拦截 Charles
- 确认
Proxy → Proxy Settings已勾选Enable transparent HTTP proxying
Q2:HTTPS 请求显示 unknown 或乱码
原因:证书未正确安装,或 SSL 代理未开启。
处理:
- 确认手机已下载并信任 Charles 证书
- iOS 必须在
证书信任设置中手动打开信任 - 检查
SSL Proxying Settings已勾选并添加对应域名
Q3:Android 7.0+ 抓不到 App 的 HTTPS 包
Android 7.0 起不再默认信任用户安装的 CA 证书,应用默认只信任系统预置证书。可选方案:
- Root 后将 Charles 证书导入系统信任区
- 修改 App 的网络安全配置文件
network_security_config.xml - 使用 Android 6.0 及以下版本的模拟器或测试设备
Q4:部分 App 仍然抓不到包
这些 App 可能启用了证书固定(SSL Pinning),会校验服务端证书是否与预置证书一致,拒绝 Charles 的中间人证书。需要配合测试版本,或通过逆向方式绕过。
Q5:手机浏览器打不开 chls.pro/ssl
- 使用
http://chls.pro/ssl(注意是 http 而不是 https) - 访问备用地址
charlesproxy.com/getssl - 在 Charles 中
Help → SSL Proxying → Save Charles Root Certificate导出证书文件,传到手机安装。建议将 pem 和 cer 两种格式都导出,不同手机的识别支持可能不同。
最后
测试涉及用户敏感数据的请求前,先取得授权。调试结束后记得关闭手机代理,避免影响正常上网。