'''## 为什么 iOS 抓包必须学?
在 iOS 开发或测试中,抓包常用于以下几种典型场景:
- 验证请求是否按预期发起
- 解析 HTTPS 参数、Header、Token 传递是否正常
- 调试接口超时、响应内容异常等问题
- 分析 TLS 双向认证失败、网络连接中断等异常链路
- 安全测试前后对比流量行为
但 iOS 系统封闭性高,抓包远比安卓复杂,越狱不可取,代理常被阻断,证书常被系统限制。因此,掌握一套可靠的抓包流程,是开发与测试协作中不可或缺的能力。
iOS 抓包常见方式
目前常见的 iOS 抓包方式分为三类:
- 代理型工具(如 Charles、Proxyman)
- 中间人工具(如 mitmproxy)
- 物理连接型工具(如 Sniffmaster)
详细抓包流程:搭建 + 操作 + 实战
Step 1:准备 iOS 设备
- 建议使用开发测试设备,避免主力机异常
- 系统版本 14 以上,最好保持 Wi-Fi 与 USB 都可用
- 确保 App 安装无异常,证书权限未被手动限制
Step 2:选择工具和方式
工具 | 是否需代理 | HTTPS 解密 | 可否抓 Pin 接口 | 指定 App 抓包 | 初学者推荐 |
---|---|---|---|---|---|
Charles | ✅ | ✅ | ❌ | ❌ | ✅ |
Proxyman | ✅ | ✅ | ❌ | ❌ | ✅ |
mitmproxy | ✅ | ✅ | ❌ | ❌ | ❌ |
Sniffmaster | ✅ | ✅✅ | ✅✅ | ✅✅ | ✅ |
代理型工具优点是快速上手,适合调试开放接口。物理连接工具适合抓取受保护流量、HTTPS Pinning、App行为还原。
Step 3:代理工具配置流程(以 Charles 为例)
- 设备和电脑连接同一 Wi-Fi
- 打开 Charles,开启“允许远程连接”
- 在 iPhone 设置 > Wi-Fi > HTTP 代理中设置电脑 IP + 端口(默认 8888)
- 在 iPhone Safari 中访问
http://chls.pro/ssl
安装根证书 - 设置中信任该证书(设置 > 关于本机 > 证书信任设置)
Step 4:Sniffmaster 无代理直连抓包(适合 Pin、双向认证)
适用于无法设置代理或被防护机制拦截的 App
- 插入 iPhone 至已安装 Sniffmaster 的电脑
- 启动 App 并选择指定应用进行抓包
- 无需配置网络代理或安装证书
- 抓到的请求可直接查看明文 HTTPS 内容
- 支持导出流量至 Wireshark 进一步分析 TCP 层状态
Step 5:如何确认抓包是否成功
请求是否能在工具中被捕获
Header、Body 是否为明文可读(未加密)
是否能根据路径识别接口(如 /api/login
)
是否可对请求进行重放或响应模拟(高级阶段)
Step 6:应对 HTTPS Pinning 与双向认证
许多应用开启了 SSL Pinning,会校验证书指纹,拒绝中间人代理:
- Charles、mitmproxy 会在此类 App 中失效
- Sniffmaster 支持破解 Pin 机制,并可解密 HTTPS 内容
- 也可使用 Frida 等方式从应用内绕过 Pin(安全测试需合规)
实战Tips:提升效率的抓包技巧
- 设置 DNS 过滤:只看目标域名流量,减少噪声
- 配合日志:日志时间点与请求对齐,更快定位异常
- 抓指定 App:避免系统后台流量干扰(Sniffmaster 支持)
- 导出 pcap:使用 Wireshark 深度分析握手、重传、TLS 握手失败等
- 多次复现:首次未抓到并不代表无请求,可能因网络状态差异
常见抓包失败原因排查
现象 | 原因可能 | 解决方案 |
---|---|---|
工具中无任何流量 | 未设置代理或未连接成功 | 检查网络、代理、证书安装是否完整 |
HTTPS 请求无法解密 | 证书未信任或 App 拒绝代理证书 | 使用 Sniffmaster 进行直连解密 |
请求明文乱码或为空 | 接口采用二进制传输或加密 | 使用导出功能 + Wireshark 分析 |
请求发出但无响应 | TLS 握手失败、证书过期等 | 使用 Wireshark 还原 TLS 流程 |
总结:抓包=还原行为链 + 精准定位
一套有效的 iOS 抓包流程,不仅是“能抓”请求,而是能重建从发起 → 连接 → 握手 → 接收 → 处理的完整链条。
- 简单问题用代理工具解决(Charles、Proxyman)
- 复杂 HTTPS 或真实 App 流量建议使用直连工具(Sniffmaster)
- 低层网络异常问题借助 Wireshark 深度分析
- 安全研究或构造异常场景可引入 mitmproxy、Frida'''
0 个评论
要回复文章请先登录或注册