在 macOS 的開發環境中,Mac 抓包軟件幾乎是前端工程師、移動端工程師、後端開發者、測試團隊都會反覆使用的核心工具。無論是調試 HTTPS 接口、定位網絡超時、驗證前後端聯調,還是分析 TCP 數據流與 QUIC 等新協議,一套穩定、可複用的抓包流程都非常重要。

但隨着應用安全策略加強、HTTPS 證書鏈更嚴格、HTTP/3(QUIC)普及、自定義協議增多,很多開發者經常出現以下困擾:

  • Mac 上代理工具無法抓 HTTPS
  • 只能看到 CONNECT,看不到明文內容
  • 某些接口能抓某些不能抓
  • QUIC 請求完全不出現
  • WebSocket / TCP 二進制協議抓不到
  • 系統代理被覆蓋導致抓不到包

這些問題並不是單一軟件的問題,而是網絡協議本身變得更復雜。 因此,Mac 抓包必須遵循 “分層工具組合” 的方式,而不是依賴某一個工具。


一、Mac 抓包為什麼遠比表面複雜?

HTTPS 抓不到明文(證書鏈嚴格)

通常表現:

  • 只有 CONNECT
  • 證書不被系統信任
  • 中間證書缺失
  • 某些域名解密失敗

macOS 的證書鏈校驗非常嚴格。


應用或 SDK 使用證書 Pinning

即便在 Mac 端調試移動端應用,pinning 都是抓包失敗的常見原因。

表現:

  • 系統抓包工具無數據
  • 代理指向正常但 App 無流量

HTTP/3 / QUIC 無法抓包(UDP 流量)

QUIC 天生不走 TCP,而代理類抓包工具通常只代理 TCP。

表現:

  • 視頻 / 直播類接口缺失
  • 某些接口時有時無
  • Wireshark 可看到 UDP

自定義協議無法被代理捕獲

例如:

  • WebSocket
  • 二進制協議
  • 遊戲網絡通信
  • SDK 內部獨立網絡棧

這些協議不使用 HTTP 代理,因此代理類抓包工具均無效。


macOS 網絡代理可能被覆蓋

包括:

  • VPN
  • Zero Trust 網絡
  • 軟件修改系統代理
  • 其它代理同時存在

導致抓包軟件無法接管網絡流量。


二、Mac 抓包軟件分類(按分工而非優劣)

為了真正解決問題,需要構建“多工具矩陣”。


① 代理類抓包工具(主力工具)

代表:

  • Charles
  • Proxyman
  • Fiddler
  • mitmproxy

適合:

  • HTTPS 調試
  • 修改報文
  • 查看 API 流量

限制:

  • 無法繞過 pinning
  • QUIC 無法抓
  • 自定義協議不走代理

② 協議層抓包工具(底層分析)

包括:

  • Wireshark
  • tcpdump

用途:

  • 檢查 TLS ClientHello / ServerHello
  • 判斷丟包、重傳、網絡抖動
  • 判斷是否走 QUIC(UDP)
  • 驗證請求是否發出

所有“抓不到包”問題最終都要到協議層確認。


③ 自動化抓包工具(腳本化)

如:

  • pyshark
  • scapy
  • mitmproxy scripting

用於實驗室、CI、數據統計。


④ 底層補抓工具:代理無效時的關鍵解決方案

在移動端調試場景、pinning 環境、QUIC 或自定義協議場景下,需要底層抓包。


抓包大師(Sniffmaster)在 Mac 上的實際工程用途

Sniffmaster 的底層能力可彌補代理工具的空缺:

  • 捕獲 HTTP/HTTPS/TCP/UDP 數據流
  • 自動識別常見協議(HTTPS、HTTP、mdns 等)
  • 應用 / 域名過濾,減少干擾
  • 支持數據流查看(文本 / HEX / 二進制)
  • 可導出 Wireshark-compatible pcap 文件
  • 具備 JavaScript 攔截器,可腳本化改寫請求/響應
  • 可抓 QUIC、自定義協議、TCP 流等代理抓不到的數據

適用於以下常見場景:

  • 代理工具抓不到 HTTPS
  • App 啓用了 pinning
  • 某些接口使用 QUIC
  • 自定義協議需要抓包
  • 系統代理被覆蓋
  • 需要與 Wireshark 做深度對齊分析

它是代理方案的補充,而不是替代。


三、Mac 抓包完整流程:從代理到底層(團隊可直接採用)


步驟 ①:先使用代理抓包工具

如 Charles 或 Proxyman。

如果能解密 HTTPS → 可開始業務調試。


步驟 ②:如果只有 CONNECT → 檢查證書問題

檢查:

  • 證書是否信任
  • 中間證書是否完整
  • 是否被 Wi-Fi 或中間代理替換

步驟 ③:如果瀏覽器能抓 App 不能抓 → 證書 Pinning

此時代理方案無法繼續,必須進入底層抓包。


步驟 ④:部分接口抓不到 → 可能是 QUIC

驗證方式:

  • 禁用 QUIC
  • 觀察是否走 UDP

步驟 ⑤:代理完全無效 → 使用 Sniffmaster 補抓

流程:

  1. 按應用或域名過濾流量
  2. 抓取 HTTPS / TCP / UDP 數據
  3. 導出 pcap
  4. 用 Wireshark 分析
  5. 判定是否為:
    • pinning
    • QUIC
    • 自定義協議
    • TLS 握手失敗
    • 請求未發出

這是複雜問題最有效的解決方法。


步驟 ⑥:定位問題後回到業務驗證

完成:

  • 請求頭分析
  • 狀態碼驗證
  • Body 內容分析
  • 業務邏輯檢查

形成完整閉環。


四、真實案例:Mac 上某應用始終抓不到 HTTPS

表現:

  • Charles 只能看到 CONNECT
  • Safari 可抓
  • App 無流量

排查:

  1. 證書配置無誤
  2. 系統代理正常
  3. App 無 HTTPS → 懷疑 pinning
  4. 使用 Sniffmaster 進行底層抓包
  5. 導出 pcap → Wireshark 顯示 TLS Alert
  6. 後端日誌無對應請求
  7. 結論:App 內開啓了證書指紋校驗

最終成功定位根因。


Mac 抓包問題可以用分層抓包體系解決

抓包層級 工具 用途
代理層 Charles / Proxyman / Fiddler HTTPS 明文抓包
協議層 Wireshark / tcpdump 檢查 TLS / QUIC / TCP
自動化 scapy / pyshark 批量分析
補抓層 抓包大師(Sniffmaster) 解決代理失敗場景

組合使用才能覆蓋所有 macOS 抓包需求。