在移动开发或接口调试中,抓包几乎是最常见的操作之一。
一个典型的调试场景是这样的:
- App 登录失败
- 后端接口返回异常
- 需要确认客户端实际发送了什么请求
这时最直接的办法就是把网络请求抓出来。
但是当开始操作时,会遇到一个问题,不同抓包工具能看到的数据并不完全一样。
下面逐步介绍几种常见 iOS 抓包工具以及它们的使用方式。
一、代理抓包:最容易建立的抓包环境
在多数情况下,第一步会选择代理抓包工具。
比较常见的工具包括:
- Charles
- Proxyman
- Fiddler
- Sniffmaster
这些工具的工作方式一致:
iPhone 的网络请求先发送到代理工具,再由代理转发给服务器。
只要建立这个路径,HTTPS 请求就可以被记录。
代理抓包的配置步骤
准备一台电脑,然后执行以下步骤:
- 启动代理工具(例如 Charles)
- 查看代理监听端口,例如 8888
- 让 iPhone 与电脑连接同一 Wi-Fi
- 打开 iPhone 设置 → Wi-Fi
- 点击当前网络
- 将 HTTP 代理改为 手动
- 输入电脑 IP 与端口
保存后返回桌面。
安装 HTTPS 证书
如果 App 使用 HTTPS,需要安装代理证书。
操作方式:
- 在 Safari 中访问代理工具提供的证书地址
- 下载描述文件
- 安装证书
- 在 iOS 设置中开启证书信任
完成后,代理工具可以解密 HTTPS 数据。
验证代理是否成功
打开 Safari 访问任意 HTTPS 网站。
如果代理工具中出现请求,并且可以查看响应内容,说明抓包环境已经建立。
接下来可以打开目标 App。
二、当代理抓不到请求时
有些 App 的请求不会出现在代理工具中。
此时可以观察一个现象:
- Safari 请求可以抓到
- App 请求完全没有记录
这说明 App 的网络请求没有经过系统代理。
尝试重复安装证书或调整端口都不行,这时候就需要换一种抓包方式。
三、数据线直连 iPhone 抓包工具
当代理抓不到数据时,可以使用数据线直连 iPhone 抓包抓包。
这种方式直接从设备侧读取网络数据,不依赖 Wi-Fi 代理。
这里可以使用 SniffMaster(抓包大师)。
使用 SniffMaster 抓取 iOS 网络请求
SniffMaster 支持通过 USB 直接抓取 iOS 设备的网络数据。
操作步骤如下:
- 用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 在手机上点击“信任此电脑”
- 启动 SniffMaster
- 在设备列表中选择对应 iPhone
- 按提示安装 iOS 驱动
- 安装描述文件
- 进入 HTTPS 抓包模式
- 点击开始
然后在手机上触发网络请求。
抓包界面会出现对应的请求记录。
只抓某个 App 的流量
设备级抓包会包含系统网络数据,例如:
- DNS 查询
- 系统服务通信
为了减少干扰,可以在 SniffMaster 中:
- 点击 选择 App
- 选择目标应用
- 再触发请求
抓包记录会只显示该 App 的网络数据。
四、当 HTTPS 请求体为空
在设备级抓包中,可能会出现一种情况:
- 可以看到请求地址
- 可以看到 Header
- 请求体为空
这通常与 App 签名有关。
如果需要查看完整请求体,可以:
- 获取 App 的 IPA 文件
- 使用 iOS 开发证书重新签名
- 重新安装 App
- 再次抓包
完成后,请求体与响应体可以正常显示。
五、修改请求与响应
如果调试目标是:
- 修改请求参数
- 重定向接口地址
- 模拟服务器返回
需要使用代理抓包工具。
在 Charles 或 Proxyman 中可以使用 Rewrite 或 Script 功能。
SniffMaster 也提供拦截器功能,但仅在 HTTPS 代理抓包模式下可用。
数据线直连 iPhone 抓包模式只负责观察数据,不会修改请求。
建立一个稳定的抓包方案
在实际调试中,可以按顺序使用这些工具:
- 代理抓包(Charles / Proxyman)
- 如果代理抓不到 → 使用数据线直连 iPhone 抓包
- 如果需要分析 TCP → 导出数据到 Wireshark
这种方式可以覆盖大多数 iOS 抓包场景。