在移動端開發、接口聯調以及 API 行為分析中,iPhone 抓包工具 是工程師最常接觸的調試武器之一。但 iOS 的網絡體系相對封閉,再加上證書校驗、ATS、安全策略與多協議混合(HTTPS + QUIC + TCP/UDP),導致“能真正抓到完整流量”的方案並不簡單。

與其糾結“哪一個抓包工具最好”,不如從工程角度構建一個“多工具互補”的抓包體系:代理 + 底層 + 自動化 + 補抓。


一、為什麼 iPhone 抓包比 Android 或桌面端更復雜?

很多人在 iPhone 上抓包失敗,問題常來自於以下五類原因:

HTTPS 證書鏈不被信任

常見於:

  • Wi-Fi 網關替換證書
  • 證書未手動“完全信任”
  • ATS 攔截鏈路證書

表現是:

  • 抓包工具只能看到 CONNECT
  • 無法解密 HTTPS

App 啓用了證書 Pinning(最常見失敗點)

典型表現:

  • Safari 能抓
  • App 完全抓不到

pinning 會直接拒絕代理證書,因此所有代理抓包都會無效。


QUIC / HTTP3 使用 UDP,繞過代理

大量現代 App 已切換到 QUIC,導致:

  • 抓不到對應域名請求
  • 視頻/社交類 API 很容易出現這種情況

App 使用自定義 TCP 協議或獨立網絡棧

例如:

  • 遊戲通信協議
  • WebSocket 長連接
  • SDK 內私有協議

完全不走系統代理 → 代理工具無能為力。


噪音流量過大,難以定位目標 App

尤其在 Wi-Fi 環境下,系統和後台進程都在發包,導致抓包界面混亂。


二、iPhone 抓包工具矩陣:按能力分工,而非優劣判斷

抓包不是單工具的事情,必須“組合拳”。


代理式抓包工具(主流使用場景)

代表:

  • Charles
  • Proxyman
  • Fiddler
  • mitmproxy

適合:

  • 查看 HTTPS 內容
  • 調試 API
  • 攔截/修改流量
  • 調整請求參數、調試業務邏輯

邏輯簡單,入門快。

不足:

  • 不能繞過 Pinning
  • QUIC 無法抓
  • 自定義協議無法解析

TCP/TLS 底層抓包工具(協議層分析)

代表:

  • tcpdump
  • Wireshark

適合:

  • 分析 TLS 握手錯誤
  • 排查三次握手、丟包、重傳
  • 判斷流量是否離開發端

這是抓包失敗排查中最關鍵的部分。


自動化抓包工具(CI / 批量調試)

代表:

  • scapy
  • pyshark
  • mitmproxy scripting

適用於自動化和數據處理。


無需代理的補抓工具(解決代理抓不到的關鍵步驟)

iPhone 抓包失敗最多的場景,是“代理無法使用”。 這裏補抓非常重要。

這類工具包含:

抓包大師(Sniffmaster)

它並非“替代 Charles”,而是用於 Charles、Fiddler、Proxyman 無法使用時的底層補抓,尤其在:

  • Pinning
  • QUIC
  • 自定義協議
  • 系統代理無效
  • HTTPS 鏈路異常
  • 多 App 混合流量

這些高難度場景中發揮作用。

Sniffmaster 的能力包括:

  • 抓取 HTTPS / HTTP / TCP / UDP
  • App / 域名 過濾目標流量
  • 自動識別協議類型
  • 支持查看 TCP 數據流(文本、HEX、二進制)
  • 內置 JavaScript 攔截器可修改請求/響應
  • 可將數據導出為 Wireshark 兼容的 pcap
  • 跨平台支持(Windows / macOS / iOS)

它主要解決“代理工具抓不到”的結構性問題。


三、iPhone 抓包的工程級排查流程(可直接用於團隊 SOP)


① 首先嚐試代理抓包

流程:

  • 設置 Wi-Fi 代理
  • 安裝抓包工具證書
  • 在 iOS 中開啓“完全信任證書”
  • 開啓 SSL Proxying

若能抓 → 説明無需額外工具。


② 若只有 CONNECT → 證書鏈問題

涉及:

  • ATS 限制
  • 中間證書缺失
  • Wi-Fi 注入證書

③ 若瀏覽器能抓,而 App 抓不到 → 證書 Pinning

80% 的 iPhone 抓不到包,都屬於 pinning。

此時代理工具已無解。


④ 若部分域名抓不到 → QUIC / HTTP3 問題

可通過:

  • 禁用 QUIC
  • 切換網絡
  • 降級 HTTP 版本

來驗證。


⑤ 代理完全無效時:使用 Sniffmaster 抓底層流量

流程參考:

  1. 打開 Sniffmaster
  2. 選擇目標 App 或目標域名過濾
  3. 捕獲 TCP / HTTPS / UDP 數據流
  4. 導出 pcap 到 Wireshark
  5. 分析:
    • TLS 握手是否正常
    • 是否出現 TLS Alert
    • 是否為 QUIC
    • 是否為自定義協議
    • 是否被 pinning 攔截

這是定位疑難抓包問題最有效的方式。


⑥ 若能解密,則回到代理工具分析業務邏輯

重點查看:

  • 請求參數
  • 響應內容
  • token
  • 狀態碼
  • 業務錯誤原因

四、真實場景示例:iPhone 某 App 完全抓不到 HTTPS

某團隊在調試 API 時遇到:

  • Charles 抓不到任何 HTTPS
  • Safari 可以抓
  • App 內接口全部報錯

排查:

  1. 代理和證書無誤
  2. Safari 正常 → 系統代理正常
  3. App 始終無流量 → 懷疑 pinning
  4. 使用 Sniffmaster 補抓 → 發現 TLS Alert
  5. Wireshark 分析證書鏈 → App 內置證書引發衝突

結果:該 App 使用了嚴格 pinning,代理抓包無法生效。


iPhone 抓包工具要“組合使用”,不是二選一

iPhone 的抓包體系需要多工具協作:

層級 工具 使用場景
代理層 Charles / Fiddler / Proxyman 調試 HTTPS、修改請求
協議層 tcpdump / Wireshark 分析 TLS/TCP 鏈路
自動化層 scapy / mitmproxy 批量分析、腳本
補抓層 抓包大師(Sniffmaster) 代理失敗、QUIC、自定義協議