在现代移动应用开发中,移动端抓包已经成为几乎所有 iOS / Android 工程师、测试人员、数据工程团队都会反复使用的关键技能。不论是定位接口错误、观察业务逻辑、调试加密流量、分析网络瓶颈,还是验证 SDK 行为,抓包都是最高效、最直接的方式。

但随着移动端安全策略升级(ATS、证书链校验、TLS 限制)、网络协议演进(HTTPS / HTTP2 / HTTP3 / QUIC),以及 App 侧自定义协议的普及,很多传统代理工具会出现“抓不到包”“只能看到 CONNECT”“HTTPS 无法解密”等问题。
因此,一个成熟的移动端抓包体系必须是多工具协同,而非依赖单一代理抓包软件。


一、为什么移动端抓包比 PC 抓包复杂?

移动端抓包难点主要来自五个方面:


HTTPS 证书链严格

移动系统会严格校验中间证书、根证书与签发链,因此:

  • 抓包工具未被信任
  • Wi-Fi 注入证书
  • ATS 限制
  • 中间证书缺失

都会导致只能看到 CONNECT,无法看到明文 HTTPS。


App 启用了证书 Pinning

这是移动端抓包失败的最高频原因。

特征:

  • 浏览器能抓
  • App 抓不到
  • 抓包界面完全没有流量

pinning 会拒绝代理证书,导致代理方案失效。


HTTP3 / QUIC 使用 UDP,绕过代理

大量 App 逐渐切换到 HTTP/3,因此:

  • 部分接口抓不到
  • 换网络后突然能抓
  • 视频、直播业务尤为明显

代理工具不支持 QUIC → 直接失效。


自定义 TCP / UDP 协议越来越多

例如:

  • 游戏通信协议
  • WebSocket 长连接
  • 业务 SDK 自定义二进制协议

均不会走系统代理。


移动端流量噪声大,难以聚焦目标进程

系统后台不断在发包,代理工具很难对 App 流量精确过滤。


二、移动端抓包工具矩阵(分层,而非优劣比较)

抓包一定要多工具组合,而不是二选一。


代理抓包工具(最常用)

代表:

  • Charles
  • Fiddler
  • Proxyman
  • mitmproxy

适合:

  • HTTP/HTTPS 调试
  • 修改请求、观察响应
  • 开发阶段联调

不足:

  • 无法绕过 Pinning
  • 无法抓 QUIC
  • 无法抓自定义协议
  • 无法过滤 App 流量

底层抓包工具(TCP/TLS 分析)

代表:

  • tcpdump
  • Wireshark

适合:

  • 分析 TLS 握手
  • 查看 ClientHello / ServerHello
  • 判断请求是否发出
  • 诊断丢包与重传

这是系统性定位抓不到包的重要环节。


自动化 / 脚本化方案

工具:

  • scapy
  • pyshark
  • mitmproxy scripting

适用于自动化测试场景。


非代理式补抓工具(当代理完全失效时)

这一类工具专门用于:

  • pinning
  • QUIC
  • 自定义协议
  • 系统代理被覆盖

此时代理工具完全无法使用。

其中实际工程中常用的是:抓包大师(Sniffmaster)

Sniffmaster 的能力:

  • 抓取 HTTP / HTTPS / TCP / UDP
  • App / 域名 精准过滤
  • 自动识别多种协议
  • 自带十六进制 / 文本方式查看数据流
  • 支持 JavaScript 拦截器(可修改请求/响应)
  • 支持导出标准 pcap(用于 Wireshark 分析)
  • 可抓 QUIC、TCP 流、TLS 握手等代理无法看到的数据
  • 兼容 Windows / macOS / iOS

使用场景包括:

  • App 拒绝代理证书(pinning)
  • HTTPS 抓不到数据
  • 部分接口走 QUIC
  • WebSocket / TCP 二进制协议
  • 代理抓包界面始终无流量
  • 噪音过大需要按 App 分类抓包

补抓是移动端抓包体系中不可或缺的一环。


三、移动端抓包完整流程(可作为团队标准 SOP)


步骤 ①:代理抓包(优先尝试)

流程:

  1. 设置 Wi-Fi 代理
  2. 信任证书
  3. 启用 SSL Proxy
  4. 观察请求/响应

能抓 → 继续调试业务即可。


步骤 ②:若只有 CONNECT → 检查证书链

排查:

  • 被 Wi-Fi 注入证书?
  • 中间证书缺失?
  • ATS 拒绝弱证书?

步骤 ③:浏览器能抓 App 抓不到 → pinning

无需继续折腾代理,直接进入补抓阶段。


步骤 ④:部分接口抓不到 → QUIC(HTTP3)问题

验证方式:

  • 切换 5G
  • 禁用 HTTP/3
  • 用 tcpdump 查看是否为 UDP 流量

步骤 ⑤:代理完全无效 → 用 Sniffmaster 捕获底层流量

操作:

  1. 选择目标 App 或域名过滤
  2. 抓取 TCP/HTTPS/UDP 数据流
  3. 导出 pcap
  4. Wireshark 分析:
    • TLS 握手是否正常
    • 是否出现 Alert
    • 是否为 QUIC
    • 是否为自定义协议
    • 请求是否发出
  5. 若需继续调试,可配合代理工具二次分析

补抓是定位“代理抓不到包”的唯一有效方法。


步骤 ⑥:最终分析业务内容

包括:

  • headers
  • body
  • token
  • 状态码
  • 错误响应内容

完成整个抓包链路。


四、真实案例:移动端某接口始终抓不到包

某 App 的部分 HTTPS 请求在代理工具中完全缺失。

排查经历:

  1. 证书安装成功
  2. Safari 能抓
  3. App 一条包都没有 → 推测 pinning
  4. 使用 Sniffmaster 抓到底层 TLS 流
  5. Wireshark 看到 TLS Alert: unknown_ca
  6. 后端 tcpdump 也无对应请求
  7. 最终确认:SDK 内启用了证书指纹校验

断点即在 App 内部安全策略。

这个案例说明了:

抓不到包 ≠ 工具问题,而是网络链路或安全策略问题,需要多层工具一起分析。


移动端抓包必须是“多工具协同体系”

层级 工具 用途
代理 Charles / Fiddler / Proxyman HTTPS 明文调试
协议 tcpdump / Wireshark TLS/TCP 分析
自动化 scapy / pyshark 批量分析
补抓 抓包大师(Sniffmaster) pinning、QUIC、自定义协议、系统代理失败

单靠代理工具永远无法覆盖移动端的复杂网络行为,多工具组合才是长期可复用的工程方案。