Charles 是一款被广泛应用于网络请求调试的代理工具,尤其在移动开发中,它承担了分析、拦截、重发 HTTP/HTTPS 请求的重要角色。然而,很多开发者在实际使用过程中会遇到一个令人头疼的问题 ------ 明明配置了代理,Charles 却抓不到任何请求包,尤其是在连接 iOS 设备时问题尤为突出。
本文将从抓不到包的常见成因 入手,梳理诊断思路 、提供排查路径,并拓展替代工具与组合方案,确保开发者能顺利完成调试流程。
一、Charles 抓不到包的核心问题类型
抓不到包的情况,大致可以归为以下五类:
- 代理设置不生效
- HTTPS 请求未被成功解密
- 设备未正确信任根证书
- App 启用了 SSL Pinning
- Charles 自身设置异常或系统权限问题
下面我们将逐一拆解。
二、逐步排查:Charles 无法抓包的详细解决方案
1. 确认代理是否配置成功
Charles 必须作为 HTTP/HTTPS 代理服务器运行,才能抓取请求流量。
解决方法:
- 打开 Charles,确认右下角显示"Recording"状态。
- 确认本机防火墙未阻止 Charles 的监听端口(默认 8888)。
- 在 iOS 设备的 Wi-Fi 设置中,进入"HTTP 代理",选择"手动",填写:
- 服务器地址:你的电脑局域网 IP 地址
- 端口号:8888
- 保证手机与电脑处于同一局域网环境。
2. 确认 HTTPS 抓包功能是否启用
如果抓取的是 HTTPS 请求,但 Charles 没有开启解密功能,则只能看到 CONNECT 请求,看不到实际请求内容。
操作步骤:
- 进入 Charles > Preferences > HTTPS > 勾选:
- Enable SSL Proxying
- 添加需要解密的域名(可使用
*.*
来全局设置)
- 若在 macOS,建议启用"macOS proxy"插件,提高证书稳定性。
3. 安装并信任根证书
没有正确安装 Charles 根证书,是导致 HTTPS 无法解密的根本原因。
iOS 证书安装方法:
- 在 iPhone Safari 中访问:
http://charlesproxy.com/getssl
- 安装描述文件(根证书)
- 进入 iOS 设置 > 通用 > 关于本机 > 证书信任设置,手动信任 Charles 的根证书
4. 遇到 SSL Pinning 的 App 抓不到包?
部分 App(尤其是金融、电商类)会启用 SSL Pinning,校验证书指纹,阻止中间人代理。
解决方案:
- Charles 无法绕过 SSL Pinning,可配合使用:
- Frida 动态 Hook 解密过程
- 或使用支持 Pin 绕过的工具如 Sniffmaster
Sniffmaster 支持 iOS 真机直连抓包,无需代理、无需证书安装,能自动解密 HTTPS,包括启用了 SSL Pin 的场景。
5. Charles 本身配置或权限问题
某些 Charles 抓包失败可能是由于系统或软件本身的异常状态。
检查以下几点:
- 更新 Charles 到最新版本(旧版本存在 macOS 兼容问题)
- macOS 检查系统"网络代理"设置是否启用 Charles
- Windows 用户确认 Charles 安装了根证书,并在系统中被信任
- 重启 Charles 与 iOS 设备的 Wi-Fi,再尝试连接
三、实用替代工具与组合方案
Sniffmaster(抓包大师)
- 真机物理连接,无需设置代理
- 支持 HTTPS 解密、双向认证绕过、Pin 破解
- 可指定 App 抓包,避免干扰请求
- 支持请求修改、数据导出、脚本注入等高级调试功能
mitmproxy
- CLI 工具,支持脚本式控制请求与响应
- 可模拟请求失败、参数变异、延迟等边界情况
- 同样受限于证书信任与 Pin 限制,适合深度测试场景
Wireshark
- 网络层分析工具
- 可查看 TCP 建连、握手失败、丢包重传等异常
- 不支持解密 HTTPS,需结合其他工具使用
四、常见场景与推荐工具组合
场景 | 推荐工具组合 |
---|---|
快速验证接口是否正常 | Charles / Proxyman |
HTTPS 请求无法解密 | Charles + 根证书配置检查 |
抓不到启用 SSL Pinning 的 App 请求 | Sniffmaster + Wireshark |
分析 TLS 握手失败或无响应情况 | Wireshark + Sniffmaster |
模拟 Token 失效或参数篡改 | mitmproxy + Charles |
五、总结
当 Charles 抓不到包时,建议你不要只关注工具是否"坏了",而是沿着以下三点逻辑去排查:
- 网络是否通畅? → 代理配置是否生效?设备是否连入同一局域网?
- 证书是否生效? → HTTPS 抓包必须信任证书。
- App 是否防抓包? → SSL Pinning 是当前抓包中最大的限制因素。