在 iOS 上做网络调试时,经常会遇到设备不能越狱,这个情况下,抓包方式会受到一些限制,但仍然可以完成大多数调试任务。
下面说明在不越狱的情况下如何抓取 iOS 网络请求。
先从代理抓包开始
第一种方式是代理抓包。
适用场景:
- App 使用系统网络栈
- 请求走系统代理
- 没有额外的证书校验
使用工具:
- Charles
- Proxyman
- Sniffmaster
配置代理环境
操作步骤:
- 在电脑上启动其中一个
- 查看监听端口(例如 8888)
- 确认电脑 IP 地址
- iPhone 连接同一 Wi-Fi
- 打开 iPhone 设置 → Wi-Fi
- 点击当前网络
- 设置 HTTP 代理为“手动”
- 输入 IP 与端口
保存后返回桌面。
安装 HTTPS 证书
在 iPhone 上:
- 用 Safari 打开证书下载地址
- 下载描述文件
- 安装证书
- 在“证书信任设置”中开启信任
验证代理是否成功
打开 Safari 访问 HTTPS 网站。
观察 Charles:
- 可以看到请求
- 可以查看响应
说明代理环境已经生效。
尝试抓取 App 请求
在代理环境下打开目标 App。
触发网络操作,例如登录和请求数据,观察抓包工具。
两种结果
可以抓到请求
说明App 走系统代理,可以直接分析 HTTPS 数据
抓不到请求
说明App 没有使用系统代理,或存在证书校验机制
切换到数据线直连抓包
在不越狱的情况下,如果代理无法抓到请求,可以使用数据线连接手机直接抓包,比如使用 SniffMaster(抓包大师)。
这种方式不依赖代理,也不需要手动安装证书用于解密。
使用 SniffMaster 抓包
操作步骤:
- 使用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 点击“信任此电脑”
- 启动 SniffMaster
- 在设备列表中选择 iPhone
- 按提示安装描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
然后在手机上触发网络请求。
观察结果
在抓包界面中可以看到请求域名、请求路径、Header 信息
即使 App 没有走代理,也可以看到请求。
针对单个 App 进行筛选
解密抓包会包含系统流量。
为了减少干扰,可以只抓某个 App。
操作步骤:
- 点击 选择 App
- 勾选目标应用
- 开始抓包
此时抓包列表只包含该应用的请求。
当数据不完整时的处理
在抓包过程中,可能会出现 URL 可见、Header 可见、Body 为空
这说明 HTTPS 已经被捕获、但 App 未使用开发证书签名
处理步骤:
- 获取 App 的 IPA 文件
- 使用 iOS 开发证书重新签名
- 安装到设备
- 再次抓包
完成后可以查看完整请求数据。
需要修改请求时的选择
在调试接口时,有时需要修改请求或响应。
这种情况下需要使用代理抓包工具:
- Charles
- Proxyman
- Sniffmaster
可以通过:
- Breakpoints
- Rewrite
- 拦截器
修改请求内容。
结合 Wireshark 分析连接问题
如果需要分析网络连接,例如:
- 请求超时
- 数据丢失
可以:
- 使用 SniffMaster 抓取数据流
- 导出到 Wireshark
在 Wireshark 中可以查看:
- TCP 三次握手
- 数据传输过程
- 连接关闭原因