iPhone 抓包失败 4 种具体情况逐个解决方法

0 阅读3分钟

抓不到包这个描述太模糊了,在实际调试中,这句话至少对应四种完全不同的情况:

  1. 完全没有请求
  2. 只有浏览器能抓到
  3. 能抓到但 HTTPS 解不开
  4. 能抓到但数据不完整

如果不先分清楚是哪一种,就会一直重复安装证书或改代理配置。


一、先做一个验证,只测 Safari

先不要打开 App。

在 iPhone 上执行:

  1. 连接 Wi-Fi
  2. 配置代理(指向电脑上的 Charles / Proxyman / Sniffmaster)
  3. 安装证书并信任
  4. 打开 Safari
  5. 访问一个 HTTPS 网站

看两个结果

结果 A:Safari 没有任何请求

说明代理没有建立成功

优先检查:

  • IP 是否填错
  • 端口是否一致
  • 电脑是否在同一网段
  • 抓包工具是否在运行

只有 Safari 能抓到,才有必要继续。


结果 B:Safari 可以抓到 HTTPS

说明代理和证书全部正常,可以进入下一步。


二、只打开 App,看有没有请求

现在打开目标 App,触发一个操作,例如,登录、请求列表,然后观察抓包工具。

分支判断

情况 1:完全没有请求

此时可以确认 App 没有走系统代理

这个现象是可以直接观察的:

  • Safari 有请求
  • App 没有请求

不用猜测证书或 HTTPS 问题。


三、处理App 不走代理的情况

这一步继续调整代理是没用的,需要切换抓包方式。


使用 SniffMaster 直接抓设备流量

操作步骤:

  1. 用 USB 连接 iPhone 到电脑
  2. 保持屏幕亮起
  3. 点击“信任此电脑”
  4. 启动 SniffMaster(抓包大师)
  5. 在设备列表选择 iPhone
  6. 按提示安装描述文件
  7. 进入 HTTPS 暴力抓包模式
  8. 点击开始 说明

然后再次触发 App 请求。


观察结果

此时会出现请求记录:

  • URL
  • 域名
  • Header

说明请求确实存在,只是之前没有经过代理。 https暴力


四、第二种失败:HTTPS 抓到了,但解不开

另一种情况是可以看到请求,但内容是加密的。表现为 Response 无法查看,Body 是乱码或空


先回到 Safari 验证

用 Safari 再访问 HTTPS 网站:

  • 如果 Safari 也解不开 → 证书问题
  • 如果 Safari 正常 → App 内部校验

App 内证书校验

此时代理证书已经被系统信任,但 App 自己不接受。

这种情况,代理抓包不会生效,证书安装不会改变结果

可以继续使用 SniffMaster 进行暴力抓包。


五、第三种失败:数据不完整

在 SniffMaster 中可能看到:

  • URL 正常
  • Header 正常
  • Body 为空

这个现象是 HTTPS 已经抓到,但数据无法解密完整内容


处理方式:重新签名 App

操作步骤:

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

完成后可以看到:

  • 请求体
  • 响应体

第四种失败:数据太多看不出目标请求

在对设备进行抓包中,还可能遇到另一个问题,请求非常多,无法判断哪个是目标接口


直接按 App 过滤

在 SniffMaster 中:

  1. 点击 选择 App
  2. 勾选目标应用
  3. 再触发操作

抓包列表只保留目标应用流量。 选择app


再做一次触发

为了减少干扰:

  1. 清空抓包记录
  2. 点击“开始”
  3. 立即执行目标操作

这样可以把请求范围压缩到几十条以内。


什么时候需要回到代理抓包

直接对设备抓包可以看到数据,但不能修改请求。

如果需要:

  • 修改参数
  • 重放请求
  • 模拟接口返回

需要回到 Charles 或 Proxyman。


关于拦截器

SniffMaster 支持拦截器,但需要注意 拦截器只在代理模式下可用