在移动开发或接口调试中,最常见的需求之一就是查看 App 实际发送的 HTTPS 请求。
例如:
- 登录接口参数是否正确
- 客户端请求了哪个 API 地址
- 服务器返回的数据结构是否符合预期
要解决这些问题,需要先把 HTTPS 请求抓出来。
在 iOS 环境中,可以通过不同方向的抓包工具完成这件事。
一、先建立一个最基础的 HTTPS 抓包环境
在多数情况下,开发者会先使用代理抓包工具,例如:
- Charles
- Proxyman
- Fiddler
- Sniffmaster
这些工具的工作方式是相同的,把 iPhone 的请求先发送到代理工具,再由代理转发到服务器。
因此代理工具可以记录 HTTPS 请求。
配置代理抓包环境
准备一台电脑(Mac 或 Windows),然后执行以下步骤:
- 启动 Charles 或 Proxyman
- 查看代理监听端口,例如 8888
- 让 iPhone 与电脑连接同一 Wi-Fi
- 打开 iPhone 设置 → Wi-Fi
- 点击当前网络
- 在 HTTP 代理中选择 手动
- 输入电脑 IP 和端口
保存设置。
安装 HTTPS 证书
由于 App 请求使用 HTTPS,还需要安装代理证书。
操作步骤:
- 在 iPhone Safari 中访问代理工具提供的证书下载地址
- 下载描述文件
- 安装证书
- 在 iOS 设置中开启证书信任
完成后,代理工具即可解密 HTTPS 数据。
验证 HTTPS 是否能抓到
打开 Safari 访问任意 HTTPS 网站。
如果代理工具中出现请求,并且可以查看响应内容,说明代理抓包已经成功。
接下来可以打开目标 App。
二、抓取 App 的 HTTPS 请求
在代理环境已经建立的情况下,打开 App 并触发网络操作,例如:
- 登录
- 加载列表
- 刷新数据
如果代理工具中出现新的请求记录,就可以查看:
- 请求 URL
- 请求 Header
- 请求体
- 响应体
对于普通 App,这一步已经可以满足大部分调试需求。
三、代理抓不到请求时
在某些情况下,会出现这样的现象:
- Safari 请求可以抓到
- App 请求没有出现在代理工具中
这说明 App 的网络请求没有走系统代理。
继续调整证书或端口不会改变结果。
此时需要使用另一类抓包工具。
四、使用数据线直连 iPhone 抓包 HTTPS 抓包工具
数据线直连 iPhone 抓包不依赖 Wi-Fi 代理,而是直接从设备侧读取网络数据。
在这种场景下,可以使用 SniffMaster(抓包大师)。
使用 SniffMaster 抓取 iOS HTTPS 请求
操作步骤如下:
- 使用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 在手机上点击 信任此电脑
- 启动 SniffMaster
- 在设备列表中选择 iPhone
- 按提示安装 iOS 驱动
- 安装描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
然后在手机上触发 App 请求。
抓包界面会出现对应的 HTTPS 请求。
只查看某个 App 的流量
数据线直连 iPhone 抓包会包含系统网络数据,例如:
- DNS 请求
- 系统服务连接
为了更容易定位目标 App,可以使用 SniffMaster 的 选择 App 功能:
- 点击“选择 App”
- 勾选目标应用
- 再触发网络请求
抓包列表会只显示该应用的网络数据。
五、当 HTTPS 请求体无法显示
有时抓包结果中会出现:
- URL 可见
- Header 可见
- 请求体为空
这通常与 App 的签名有关。
如果需要查看完整请求体,可以:
- 获取 App 的 IPA 文件
- 使用 iOS 开发证书重新签名
- 重新安装 App
- 再次抓包
完成后,请求体与响应体可以正常显示。
六、什么时候需要修改请求
在某些调试场景中,需要修改请求参数,例如:
- 修改接口参数
- 重定向 API 地址
- 模拟服务器返回
这种操作只能在 代理模式 下完成。
Charles、Proxyman 和 SniffMaster 的 HTTPS 代理抓包模式都支持请求拦截与修改。
数据线直连 iPhone 抓包仅用于查看数据。
七、不同抓包工具的场景
可以把几种抓包工具理解为位于不同网络位置:
| 工具 | 抓包方式 | 主要用途 |
|---|---|---|
| Charles | 代理抓包 | 查看和修改 HTTPS |
| Proxyman | 代理抓包 | 查看 HTTPS |
| SniffMaster | 代理 + 数据线直连 iPhone 抓包抓包 | HTTPS 与数据流抓包 |
| Wireshark | 网络层抓包 | TCP 分析 |
不同工具解决的问题不同。
常见的抓包流程
在实际调试中,可以按顺序使用这些工具:
- 先尝试代理抓包
- 如果代理抓不到请求,使用数据线直连 iPhone 抓包
- 如果需要分析网络连接问题,可以导出数据到 Wireshark
通过这种方式,可以覆盖大多数 iOS App HTTPS 抓包场景。