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

App 抓包看不到内容?常见原因排查与解决方案

标签:
iOS

抓包工具能看到请求列表但点开全是乱码、或者只能看到请求头看不到响应体——这个问题不少开发者都遇到过。原因通常集中在几个方向上,按顺序排查一般能定位。

HTTPS 证书问题

抓包工具抓不到 HTTPS 明文内容,最常见的原因是证书没装好或者没信任。Charles 需要在设备上安装 CA 证书,并且在 iOS 的"设置 → 通用 → 关于本机 → 证书信任设置"里手动开启信任开关。iOS 10.3 之后安装的描述文件默认不信任,这个步骤容易被忽略。

SniffMaster 的代理抓包模式同样需要安装证书,但流程中有操作引导。首次使用时会提示安装描述文件,按照步骤操作即可。如果关了提示,可以点帮助按钮重新查看设置流程。

如果证书已安装仍显示乱码,检查 Charles 的 SSL Proxying Settings 里有没有添加目标域名。不加域名的话 Charles 不会对这些域名做解密,只会透传加密数据。

非标准 HTTPS 端口

有些 App 的接口跑在 8443、9443 等非标准端口上。Charles 默认只对 443 端口做 SSL 解密,遇到其他端口需要在 SSL Proxying Settings 里加 *:8443 之类的规则,否则抓到了也是一片乱码。SniffMaster 的代理模式也需要类似配置,但暴力抓包模式不限端口。

SSL Pinning 和双向认证

如果 App 做了 SSL Pinning(证书绑定),Charles 的代理证书会被客户端直接拒绝,表现为请求列表里出现大量连接失败的记录,或者能看到请求但点开显示"SSLHandshake: certificate_unknown"。这种情况代理抓包工具基本都无效。

SniffMaster 的暴力抓包模式走 USB 直连,不经过代理,所以不受 SSL Pinning 影响。暴力抓包模式下 App 和服务器之间的 TLS 握手在设备和服务器之间直接完成,抓包工具只是旁路读取数据。

双向认证(双向 SSL)同理——服务端要求客户端出示证书时代理抓包工具没有客户端证书,TLS 握手必然失败。暴力抓包模式下握手在设备和服务器之间直接完成,旁路读取不受影响。

请求体/响应体不可见

SniffMaster 的暴力抓包模式下,对于未使用开发证书重签名的 App(如直接从 App Store 下载的应用),只能看到请求头和请求地址,请求体和响应体不可见。这是因为 iOS 对第三方应用的二进制有加密保护。如果需要查看完整的请求体,需要用开发证书对 IPA 重新签名后再抓取。

App 使用自有加密

部分 App 在应用层对数据做了二次加密。即使抓包工具解开了 HTTPS 的 TLS 层,看到的请求体仍然是经过 App 内部加密的二进制数据,而不是明文 JSON。这种情况需要在客户端代码层面分析加密逻辑,或者 hook 加密函数获取解密后的数据。

其他可能的原因

VPN 和代理工具冲突。手机上开启了 VPN 会导致代理流量走虚拟网卡而不是 Wi-Fi 代理通道,关掉 VPN 再试。Wi-Fi 代理配置被还原。部分 App 会检测代理状态并提示用户关闭代理,或者在切换网络后自动重置代理设置,需要重新配置。

点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

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

100积分直接送

付费专栏免费学

大额优惠券免费领

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

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

帮助反馈 APP下载

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

公众号

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

举报

0/150
提交
取消