iOS App 抓包看不到内容,从有请求没数据一步步排查

本文围绕App 抓包看不到内容,通过对不同抓包表现的拆解,逐步分析 HTTPS 解密、代理链路与应用限制之间的关系,并结合 Charles、Proxyman 与 SniffMaster 的具体操作流程,提供了一套基于现象判断的抓包排查方法,帮助开发者准确定位数据不可见的原因。

在抓包工具里看到请求,但点进去之后发现Body 是空的,Response 显示为加密数据,或者根本没有响应内容

这种情况比抓不到包更容易让人烦,因为请求确实存在,只是内容看不到 被加密了。


先确认是哪一种看不到内容

打开 Charles、Sniffmaster 或 Proxyman,点击一条请求,重点看三个位置:

  • Request Body
  • Response Body
  • Status Code

三种常见表现

表现 1:Response 是乱码或不可读

说明 HTTPS 已经接收了,但没有被解密

表现 2:Body 完全为空

说明请求结构被抓到,但数据未被还原

表现 3:请求正常但返回 0 字节

说明请求可能被中断或未完成

不同表现,对应不同处理方式。


验证 HTTPS 解密是否正常

先用浏览器做一个对照。

在同一设备上:

  1. 打开 Safari
  2. 访问 HTTPS 网站
  3. 查看抓包工具

对比结果

如果 Safari 也看不到内容

说明证书未生效

需要重新操作:

  1. 删除旧证书
  2. 重新安装
  3. 在证书信任设置中开启信任
  4. 重新打开浏览器测试

如果 Safari 正常,App 不正常

说明 App 内部做了额外处理(例如证书校验)

继续看下一步。


确认请求是否被代理拦截

在 Charles 中观察请求的连接方式。

如果请求没有出现在代理工具里,而是后来通过其他方式抓到,说明 App 可能没有走系统代理


验证方法

关闭 Wi-Fi,重新触发请求:

  • 如果 App 报错 → 请求确实存在
  • 如果代理工具没有记录 → 没走代理

此时需要换抓包方式。


对设备直接抓包确认真实数据

使用 SniffMaster(抓包大师) 进行对手机直接抓包。


操作步骤

  1. 用 USB 连接 iPhone
  2. 保持设备解锁
  3. 点击信任此电脑
  4. 启动 SniffMaster
  5. 选择设备
  6. 安装描述文件
  7. 进入 HTTPS 暴力抓包模式
  8. 点击开始

然后触发 App 请求。
抓包说明


观察结果

如果在这里可以看到:

  • URL
  • Header

说明请求确实存在。
暴力抓包


定位Body 看不到的原因

如果在 SniffMaster 中仍然:

  • Body 为空
  • Response 不完整

可以直接判断与证书无关,而是应用本身限制


处理方式:重新签名

操作流程:

  1. 获取 App 的 IPA
  2. 使用 iOS 开发证书签名
  3. 安装到设备
  4. 再次抓包

变化观察

重新签名后:

  • Request Body 出现
  • Response 内容可见

这是一个可以直接验证的变化。


另一种情况:数据被编码

有时抓到的数据不是空,而是:

  • Base64
  • 压缩数据

在 SniffMaster 中可以看到字段:

  • IsBase64Body = true

处理方式

需要:

  1. 解码 Base64
  2. 或在工具中查看解码后的内容

如果是二进制协议,需要结合协议解析。


避免误判为空数据的一个技巧

在抓包界面中:

  1. 查看 Content-Length
  2. 查看响应大小

判断方法

  • Content-Length > 0 → 数据存在
  • 显示为空 → 可能是编码或未解析

可以通过导出数据进一步分析。