iOS 抓包不越狱,代理抓包 和 数据线直连抓包两种实现方式

0 阅读3分钟

在 iOS 上做网络调试时,经常会遇到设备不能越狱,这个情况下,抓包方式会受到一些限制,但仍然可以完成大多数调试任务。

下面说明在不越狱的情况下如何抓取 iOS 网络请求。


先从代理抓包开始

第一种方式是代理抓包。

适用场景:

  • App 使用系统网络栈
  • 请求走系统代理
  • 没有额外的证书校验

使用工具:

  • Charles
  • Proxyman
  • Sniffmaster

配置代理环境

操作步骤:

  1. 在电脑上启动其中一个
  2. 查看监听端口(例如 8888)
  3. 确认电脑 IP 地址
  4. iPhone 连接同一 Wi-Fi
  5. 打开 iPhone 设置 → Wi-Fi
  6. 点击当前网络
  7. 设置 HTTP 代理为“手动”
  8. 输入 IP 与端口

保存后返回桌面。 代理


安装 HTTPS 证书

在 iPhone 上:

  1. 用 Safari 打开证书下载地址
  2. 下载描述文件
  3. 安装证书
  4. 在“证书信任设置”中开启信任 安装证书

验证代理是否成功

打开 Safari 访问 HTTPS 网站。

观察 Charles:

  • 可以看到请求
  • 可以查看响应

说明代理环境已经生效。


尝试抓取 App 请求

在代理环境下打开目标 App。

触发网络操作,例如登录和请求数据,观察抓包工具。


两种结果

可以抓到请求

说明App 走系统代理,可以直接分析 HTTPS 数据


抓不到请求

说明App 没有使用系统代理,或存在证书校验机制


切换到数据线直连抓包

在不越狱的情况下,如果代理无法抓到请求,可以使用数据线连接手机直接抓包,比如使用 SniffMaster(抓包大师)

这种方式不依赖代理,也不需要手动安装证书用于解密。


使用 SniffMaster 抓包

操作步骤:

  1. 使用 USB 将 iPhone 连接电脑
  2. 保持设备解锁
  3. 点击“信任此电脑”
  4. 启动 SniffMaster
  5. 在设备列表中选择 iPhone
  6. 按提示安装描述文件
  7. 进入 HTTPS 暴力抓包模式
  8. 点击开始

然后在手机上触发网络请求。 配置


观察结果

在抓包界面中可以看到请求域名、请求路径、Header 信息

即使 App 没有走代理,也可以看到请求。


针对单个 App 进行筛选

解密抓包会包含系统流量。

为了减少干扰,可以只抓某个 App。

操作步骤:

  1. 点击 选择 App
  2. 勾选目标应用
  3. 开始抓包

此时抓包列表只包含该应用的请求。 app筛选


当数据不完整时的处理

在抓包过程中,可能会出现 URL 可见、Header 可见、Body 为空

这说明 HTTPS 已经被捕获、但 App 未使用开发证书签名

处理步骤:

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

完成后可以查看完整请求数据。


需要修改请求时的选择

在调试接口时,有时需要修改请求或响应。

这种情况下需要使用代理抓包工具:

  • Charles
  • Proxyman
  • Sniffmaster

可以通过:

  • Breakpoints
  • Rewrite
  • 拦截器

修改请求内容。


结合 Wireshark 分析连接问题

如果需要分析网络连接,例如:

  • 请求超时
  • 数据丢失

可以:

  1. 使用 SniffMaster 抓取数据流
  2. 导出到 Wireshark

数据流抓包

在 Wireshark 中可以查看:

  • TCP 三次握手
  • 数据传输过程
  • 连接关闭原因

参考链接:www.sniffmaster.net/blog/135