Charles 开启 SSL Proxy 后为什么还是抓不到 HTTPS 请求?

西门世英 阅读 16

我用 Charles 抓包本地开发的 React 项目,已经按教程装了 Charles 的根证书,也在手机和电脑上都信任了。SSL Proxying Settings 里也加了 *:443,但打开 App 还是显示 “SSL handshake failed”,请求直接失败了。

试过重启 Charles、重装证书、清除浏览器缓存都没用。是不是现在有些网站用了证书绑定(Certificate Pinning)?还是我哪里配置漏了?

我来解答 赞 10 收藏
二维码
手机扫码查看
1 条解答
设计师栾诺
这问题我也遇到过,确实让人头疼。首先你得确认是不是真的碰到了证书绑定的问题,但咱们先从简单的开始排查。

Charles 里加了 *:443 不代表万事大吉,试试把具体的域名也加进去,比如 www.example.com:443。我当时就是只加了通配符,结果抓不到特定域名的包。

还有个容易忽略的地方,记得在 Charles 的 Proxy Settings 里勾选 "Enable SSL Proxying",而且要确保端口是 8888 或者你自己配置的那个。

如果还是不行,很可能是 App 确实用了证书绑定。这种情况下有两个办法:一是找开发要一个调试环境,禁用掉证书绑定;二是如果你有源码权限,可以临时注释掉相关的 pinning 代码。

我之前遇到这种情况,最后发现是个坑爹的混合内容问题。React 项目里有些资源请求是 HTTP 而不是 HTTPS,导致整个链路都被搞乱了。建议你检查一下网络请求的协议。

实在不行就用 Fiddler 试试,有时候换工具能解决问题。反正我现在每次用 Charles 抓 HTTPS 都会先把这些地方仔细检查一遍。
点赞
2026-03-26 15:02