在抓包工具里看到请求,但点进去之后发现Body 是空的,Response 显示为加密数据,或者根本没有响应内容
这种情况比抓不到包更容易让人烦,因为请求确实存在,只是内容看不到 被加密了。
先确认是哪一种看不到内容
打开 Charles、Sniffmaster 或 Proxyman,点击一条请求,重点看三个位置:
- Request Body
- Response Body
- Status Code
三种常见表现
表现 1:Response 是乱码或不可读
说明 HTTPS 已经接收了,但没有被解密
表现 2:Body 完全为空
说明请求结构被抓到,但数据未被还原
表现 3:请求正常但返回 0 字节
说明请求可能被中断或未完成
不同表现,对应不同处理方式。
验证 HTTPS 解密是否正常
先用浏览器做一个对照。
在同一设备上:
- 打开 Safari
- 访问 HTTPS 网站
- 查看抓包工具
对比结果
如果 Safari 也看不到内容
说明证书未生效
需要重新操作:
- 删除旧证书
- 重新安装
- 在证书信任设置中开启信任
- 重新打开浏览器测试
如果 Safari 正常,App 不正常
说明 App 内部做了额外处理(例如证书校验)
继续看下一步。
确认请求是否被代理拦截
在 Charles 中观察请求的连接方式。
如果请求没有出现在代理工具里,而是后来通过其他方式抓到,说明 App 可能没有走系统代理
验证方法
关闭 Wi-Fi,重新触发请求:
- 如果 App 报错 → 请求确实存在
- 如果代理工具没有记录 → 没走代理
此时需要换抓包方式。
对设备直接抓包确认真实数据
使用 SniffMaster(抓包大师) 进行对手机直接抓包。
操作步骤
- 用 USB 连接 iPhone
- 保持设备解锁
- 点击信任此电脑
- 启动 SniffMaster
- 选择设备
- 安装描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
然后触发 App 请求。

观察结果
如果在这里可以看到:
- URL
- Header
说明请求确实存在。

定位Body 看不到的原因
如果在 SniffMaster 中仍然:
- Body 为空
- Response 不完整
可以直接判断与证书无关,而是应用本身限制
处理方式:重新签名
操作流程:
- 获取 App 的 IPA
- 使用 iOS 开发证书签名
- 安装到设备
- 再次抓包
变化观察
重新签名后:
- Request Body 出现
- Response 内容可见
这是一个可以直接验证的变化。
另一种情况:数据被编码
有时抓到的数据不是空,而是:
- Base64
- 压缩数据
在 SniffMaster 中可以看到字段:
- IsBase64Body = true
处理方式
需要:
- 解码 Base64
- 或在工具中查看解码后的内容
如果是二进制协议,需要结合协议解析。
避免误判为空数据的一个技巧
在抓包界面中:
- 查看 Content-Length
- 查看响应大小
判断方法
- Content-Length > 0 → 数据存在
- 显示为空 → 可能是编码或未解析
可以通过导出数据进一步分析。