在 iOS 调试中,经常需要确认 App 实际发送了什么网络请求,例如:
- 登录接口传了哪些参数
- 客户端是否请求了正确的 API
- 服务端返回的数据结构是什么
要做到这一点,需要先让 App 的网络流量进入可观察的地方。 下面按照实际操作顺序,从最容易建立的抓包流程开始。
一、先确认网络请求确实存在
在准备抓包工具之前,可以先验证一件事:
- 打开目标 App
- 进入触发网络请求的页面
- 关闭手机网络
- 再次触发同一操作
如果界面出现加载失败或提示网络错误,说明该操作确实会发起网络请求。
接下来再建立抓包环境。
二、通过代理方式抓取 App 请求
最常见的方式是通过 Wi-Fi 代理抓包。
可以使用的工具包括:
- Charles
- Proxyman
- SniffMaster 的 HTTPS 代理模式
代理抓包的原理是,App 请求先发送到代理,再由代理转发给服务器。
因此代理工具可以看到完整请求。
配置代理环境
准备一台电脑(Mac 或 Windows),然后执行以下步骤:
- 启动代理工具
- 确认监听端口(例如 8888)
- 让 iPhone 与电脑连接同一 Wi-Fi
- 打开 iPhone 的 Wi-Fi 设置
- 点击当前网络
- 在“HTTP 代理”中选择“手动”
- 输入电脑 IP 与端口
保存后返回主界面。
安装代理证书
如果目标接口使用 HTTPS,还需要安装证书。
操作步骤:
- 在 iPhone Safari 中访问代理工具提供的证书地址
- 下载并安装描述文件
- 打开 iOS 设置
- 进入“证书信任设置”
- 手动开启证书信任
完成后,代理工具即可解密 HTTPS。
验证代理是否生效
打开 Safari 访问一个 HTTPS 网站。
如果代理工具中出现请求,并且可以查看响应内容,说明代理链路已经建立。
接下来可以测试目标 App。
三、观察 App 的请求记录
打开 App,触发网络请求。
在代理工具中查看是否出现相关记录。
如果请求出现,可以:
- 查看 URL
- 查看 Header
- 查看请求体与响应体
如果没有出现请求,说明该 App 可能没有走系统代理。
四、当 App 不走代理时
部分 App 会绕过系统代理。
在这种情况下,代理工具不会看到任何请求。
此时可以换一种抓包方式,设备直连抓包。
五、通过 USB 抓取 iPhone 的网络数据
SniffMaster 提供了设备直连抓包能力,可以直接读取 iOS 设备的网络流量。
操作步骤:
- 使用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 在手机上点击“信任此电脑”
- 启动 SniffMaster
- 在设备列表中选择 iPhone
- 按提示安装 iOS 驱动
- 安装描述文件
- 进入 HTTPS 暴力抓包或数据流抓包模式
- 点击开始
完成后,触发 App 请求即可看到网络记录。
六、筛选目标 App 的流量
设备级抓包会包含系统网络数据,例如:
- DNS 请求
- 系统服务通信
为了定位目标 App,可以使用 SniffMaster 的 App 筛选功能:
- 点击“选择 App”
- 选择目标应用
- 再触发网络操作
抓包列表会只显示对应 App 的请求。
七、当请求体无法显示
如果抓包结果中:
- URL 可见
- Header 可见
- 请求体为空
说明 App 没有使用开发证书签名。
解决方式:
- 获取 App 的 IPA
- 使用 iOS 开发证书重新签名
- 重新安装
- 再次抓包
完成后可以查看完整数据。
八、在需要修改请求时
如果调试目标是修改请求参数,例如:
- 修改登录参数
- 重定向接口地址
需要使用代理模式。
在 SniffMaster 的 HTTPS 代理抓包模式 中,可以通过拦截器脚本自动修改请求。
设备级抓包模式只用于观察数据,不提供请求修改功能。
建立一个稳定的抓包流程
在 iPhone 上抓 App 请求时,可以按以下顺序操作:
- 代理抓包验证流程
- 测试目标 App
- 如果代理失败,切换设备级抓包
- 根据需要筛选 App 或导出数据分析