在移动端开发、后端联调、接口排查与网络调试环节中,iOS 抓包始终是最核心的诊断手段之一。不过随着 iOS 网络安全策略不断加强(ATS、证书链校验、pinning)、应用协议多样化(HTTPS/HTTP2/HTTP3、WebSocket、TCP/UDP、自定义协议),开发者常常遇到抓包不全、无法解密、无法过滤噪音等问题。
想要真正掌握 iOS 抓包,必须采用 多工具协同、协议分层排查 的方式,而不是依赖单一工具。
一、为什么 iOS 抓包会变得越来越复杂?
相比传统 web 或 PC 环境,iOS 的网络链路具有天然复杂性。
iOS 对 HTTPS 证书链要求极严格
一旦中间证书缺失或代理证书不被信任,抓包工具只能看到 CONNECT,看不到明文。
App 普遍加入证书 Pinning
Pinning 会直接拒绝中间人解密,因此:
- Safari 能抓
- App 完全抓不到
这类问题必须通过底层抓包才能排查。
HTTP/3(QUIC)大量普及
QUIC 基于 UDP,不走系统 HTTP 代理,导致代理类工具无法抓取。
应用使用自定义 TCP/WebSocket 协议
例如:
- 游戏数据
- IM SDK
- 视频/直播的低延迟协议
- 自建长连框架
这些协议不会经过代理。
系统代理容易被覆盖
VPN、局域网网关、零信任代理均可能修改系统代理配置,导致抓包失败。
二、iOS 抓包工具的分工:一定要堆叠使用,而不是二选一
① 代理类抓包工具
如:
- Charles
- Proxyman
- Fiddler
- mitmproxy
擅长:
- HTTPS 解密
- 查看业务层数据
- 修改请求/响应
无法处理:
- Pinning
- QUIC
- 自定义协议
- 系统代理失效
② 协议层抓包工具
包括:
- Wireshark
- tcpdump
适用于:
- TLS 握手诊断
- TCP 重传、丢包判断
- QUIC 数据分析
- 确认是否真正发起请求
但不支持按应用过滤,噪音巨大。
③ 自动化抓包工具
例如:
- scapy
- pyshark
- mitmproxy scripts
更偏向自动化测试,而非人工调试。
④ 底层补抓工具(解决代理无效场景)
当代理抓不到包时,需要一个无需代理、可直接抓取应用数据流的方案。
这一步正是 抓包大师(Sniffmaster) 的能力覆盖范围。
Sniffmaster 在 iOS 抓包体系中的实际作用
Sniffmaster 是用于补足代理抓不到的数据。
Sniffmaster 的核心能力:
- 捕获 HTTPS / HTTP / TCP / UDP 数据流
- 自动识别协议类型(HTTP、HTTPS、mdns 等)
- 按 应用 / 域名过滤,减少噪音
- 多格式查看数据流(HEX / 文本 / 二进制)
- 支持 JavaScript 拦截器修改请求与响应
- 支持导出 Wireshark 可直接读取的 pcap 文件
- 无需设置代理、无需越狱
- 跨平台支持:Windows / macOS / iOS
适用场景包括:
- App 使用证书 Pinning
- QUIC/UDP 数据大量出现
- WebSocket 或自定义协议
- 系统代理被覆盖
- 需要查看底层数据流
它是 iOS 抓包体系中的 底层流量补抓层。
三、可直接使用的 iOS 抓包实战流程
第一步:先用代理工具抓包(基础场景)
使用 Charles/Proxyman:
- 安装并信任证书
- 开启 HTTPS 解密
- 设置 Wi-Fi 代理
能看到明文请求 → 继续业务调试。
第二步:只有 CONNECT → 证书链问题
检查:
- iOS 是否“完全信任证书”
- 中间证书是否正确
- Wi-Fi 是否被企业代理修改
第三步:Safari 能抓但 App 抓不到 → Pinning
这是开发者最常见的错误判断。
代理层无能为力,只能进行底层流量分析。
第四步:部分接口抓不到 → QUIC / HTTP3
验证方式:
- 切换网络
- 禁用 QUIC
- 查看是否出现 UDP 流量
第五步:代理无法抓包 → 使用 Sniffmaster 补抓
标准流程:
- 使用 Sniffmaster 选择对应 App
- 捕获底层数据流(HTTPS/TCP/UDP)
- 查看数据流 HEX 或文本内容
- 如果需要深入分析,用 pcap 导出到 Wireshark
- 分析 TLS 握手、QUIC、协议帧
- 找出根因:pinning?QUIC?网络异常?自定义协议?
第六步:再回到代理工具验证业务层逻辑
完成 TCP/TLS 层分析后,再进行接口层调试。
四、真实排查案例(工程实践)
现象:
- Charles 抓不到包
- 证书信任正确
- 改 Wi-Fi 或重启手机无效
排查步骤:
- Charles 设置正常
- Safari 可抓包 → 系统代理正常
- App 无流量 → 怀疑 pinning
- 使用 Sniffmaster 捕获数据流
- pcap 导出至 Wireshark
- 出现 TLS Alert: bad_certificate
- 后端无对应日志 → 请求被 App 拒绝
最终定位到 SDK 内使用证书指纹校验。
这种问题仅靠代理软件无法查明。
iOS 抓包要建立“分层抓包体系”
| 抓包层级 | 工具 | 适用场景 |
|---|---|---|
| 代理层 | Charles / Proxyman / Fiddler | 常规 HTTPS 抓包 |
| 协议层 | Wireshark / tcpdump | 分析 TLS/QUIC/TCP |
| 自动化层 | scapy / mitmproxy scripts | 批量测试 |
| 补抓层 | 抓包大师(Sniffmaster) | pinning、自定义协议、UDP、QUIC |
没有任何工具能覆盖所有场景,但工具组合能覆盖全部 iOS 抓包需求。
随时随地看视频