为了账号安全,请及时绑定邮箱和手机立即绑定

Charles 抓不到包怎么办?常见原因排查与替代方案

标签:
iOS

开发朋友应该都遇到过这种情况,打开了 Charles之后,手机上代理也配了,但列表里就是一条请求都没有——或者能看到请求,点开全是乱码。Charles 抓不到 HTTPS 包的原因就那么几类,挨个排查一遍一般能定位到具体原因。

证书问题是最常见的

Charles 抓 HTTPS 需要安装并信任 CA 证书。如果在 iOS 上装了证书但打开 HTTPS 请求还是乱码或显示红色感叹号,检查两个地方:
一是"设置 → 通用 → 关于本机 → 证书信任设置"里有没有把 Charles 的证书开关打开。iOS 10.3 之后安装的描述文件默认不信任,需要手动开启。
二是在 Charles 里重新生成 CA 证书——Help → SSL Proxying → Reset SSL Certificate,证书过期后重新生成并安装到设备上就能恢复。

Mac 端如果遇到"SSLHandshake: certificate_unknown",通常是 Charles 的 CA 证书没被系统信任。打开钥匙串访问,在登录标签页找到 Charles 的证书(默认以 Charles Proxy CA 命名),展开信任列表,把"使用此证书时"改成"始终信任"。改完后记得重启 Charles。

代理配置与网络环境

手机配了代理但抓不到包,先确认手机和电脑连接的是同一个 Wi-Fi 网络。Charles 的代理默认端口是 8888,在 Proxy → Proxy Settings 里可以查看当前端口号,检查电脑防火墙有没有拦截这个端口。如果手机上开了 VPN 或者网络代理类软件,会和 Charles 的代理冲突——VPN 走的是虚拟网卡接口,流量不经过 Wi-Fi 代理链路,关掉 VPN 再试。Windows 上如果用的是 Clash 之类的代理工具,需要关闭系统代理或者把 Charles 加到规则白名单里。

还有一个容易忽略的问题:Android 7.0 以上默认不信任用户安装的证书,App 如果 targetSdkVersion 大于 24 并且没有在 manifest 里配置网络安全策略,Charles 的代理证书会被拒绝。这种情况要么修改 App 的网络安全配置,要么用 VirtualXposed 等工具绕过。

遇到 SSL Pinning 时的选择

如果 App 做了 SSL Pinning(证书绑定),Charles 的 MITM 代理证书会被客户端直接拒绝。常规做法是用 frida + objection 做运行时 hook 来禁用证书校验,但这需要越狱或侧载环境。另一种方式是换一个不走代理通道的抓包工具,SniffMaster 的暴力抓包模式就是走的这个思路——iOS 设备通过 USB 连上 Mac,选择 HTTPS 暴力抓包,不需要配置代理和安装信任证书。即使 App 设置了双向证书验证,暴力抓包也能正常解密。缺点是被抓的 App 需要用开发证书签名才能看到完整的请求体,Store 版应用只能看到请求头和地址。

如果只是日常调试不走 SSL Pinning 的普通接口,SniffMaster 的代理抓包模式和 Charles 基本类似,但证书安装流程有操作引导,会提示每一步该做什么,减少配置遗漏。

Charles 在大部分日常抓包场景下已经足够好用,遇到 SSL Pinning 或者证书环境比较复杂的情况,工具里备一个 SniffMaster 就行。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消