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

在 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. 开始抓包

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


当数据不完整时的处理

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

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

处理步骤:

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

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


需要修改请求时的选择

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

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

  • Charles
  • Proxyman
  • Sniffmaster

可以通过:

  • Breakpoints
  • Rewrite
  • 拦截器

修改请求内容。


结合 Wireshark 分析连接问题

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

  • 请求超时
  • 数据丢失

可以:

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

在 Wireshark 中可以查看:

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

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

相关推荐
逐光老顽童12 小时前
Java 与 Kotlin 混合开发避坑指南:30 个真实案例实录
android·kotlin
爱勇宝1 天前
鸿蒙生态的下半场:开发者不只要能开发,还要能赚钱
android·前端·程序员
Yeyu1 天前
刷新一帧的艺术:invalidate / postInvalidate / postInvalidateOnAnimation全解析
android
潘潘潘1 天前
Android OTA 升级原理和流程介绍
android
plainGeekDev1 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
plainGeekDev1 天前
getter/setter → Kotlin 属性
android·java·kotlin
YXL1111YXL2 天前
Handler 消息回收与协程异步执行的时序陷阱
android
恋猫de小郭2 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
三少爷的鞋2 天前
Android 协程并发控制:别动线程池,控制好并发语义就够了
android
m0_526119402 天前
iconfont我修改好颜色,但是在小程序项目是黑色的
小程序