在 macOS 上进行网络调试时,抓包一般是第一步。 例如:
- App 请求接口失败
- 某个 API 返回数据异常
- 需要确认客户端发送的参数
这些问题如果只看代码日志,很难判断网络行为,通过抓包可以直接看到请求与响应。
下面通过一个调试流程,介绍在 Mac 上抓包的几种常见方法。
一、先抓 Mac 本机的网络请求
如果需要查看 Mac 本机程序的网络请求,例如:
- 浏览器访问 API
- 桌面应用调用接口
最简单的方法是使用代理抓包工具,例如:
- Charles
- Proxyman
- Sniffmaster
这些工具运行在本机,通过代理方式拦截请求。
配置代理抓包
操作步骤如下:
- 在 Mac 上启动 Charles 或 Sniffmaster
- 查看代理监听端口,例如 8888
- 在 macOS 网络设置中开启系统代理
- 将 HTTP 与 HTTPS 代理指向本机地址
- 保存设置
完成后,本机网络请求会先经过代理工具。
安装 HTTPS 证书
如果请求使用 HTTPS,需要安装代理证书。
操作步骤:
- 在浏览器中访问代理工具提供的证书地址
- 下载证书
- 在 macOS 钥匙串中安装证书
- 将证书设置为 始终信任
完成后,代理工具可以解密 HTTPS 请求。
验证抓包是否成功
打开浏览器访问一个 HTTPS 网站。
如果代理工具中出现请求记录,并且可以查看响应内容,说明抓包环境已经建立。
二、在 Mac 上抓取 iPhone 的网络请求
如果需要调试 iOS App 的网络行为,可以让 iPhone 的流量通过 Mac。
常见方式仍然是代理抓包。
设置 iPhone 代理
操作步骤:
- 让 iPhone 与 Mac 连接同一 Wi-Fi
- 打开 iPhone 设置 → Wi-Fi
- 点击当前网络
- 在 HTTP 代理中选择 手动
- 输入 Mac 的 IP 地址
- 输入代理端口(例如 8888)
保存后返回桌面。
安装 iOS HTTPS 证书
在 iPhone Safari 中访问代理工具提供的证书地址:
- 下载描述文件
- 安装证书
- 在 iOS 设置中开启证书信任
完成后,代理工具可以解密 iOS HTTPS 请求。
测试 App 网络请求
打开 App 并触发网络操作,例如:
- 登录
- 加载列表
- 提交表单
在代理工具中可以看到:
- 请求 URL
- Header
- 请求体
- 响应内容
三、当代理抓不到 App 请求时
有时会出现这样一种情况:
- Safari 请求可以抓到
- App 请求没有记录
这种情况说明 App 没有使用系统代理。
此时继续调整代理配置不会改变结果。
需要使用设备级抓包。
四、在 Mac 上使用对设备本机直接抓包工具
设备本机抓包可以直接从设备方面读取网络数据。
在这种场景下可以使用 SniffMaster(抓包大师)。
使用 SniffMaster 抓取 iOS 流量
操作步骤如下:
- 使用 USB 将 iPhone 连接 Mac
- 保持设备解锁
- 在手机上点击 信任此电脑
- 启动 SniffMaster
- 在设备列表中选择 iPhone
- 按提示安装描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
然后在手机上触发网络请求。
抓包界面会出现对应的 HTTPS 请求。
只查看某个 App 的流量
设备级抓包会包含系统网络流量,例如:
- DNS 请求
- Apple 服务连接
为了更容易定位目标请求,可以:
- 点击 选择 App
- 勾选目标应用
- 再触发网络操作
抓包列表只会显示该 App 的请求。
五、分析 TCP 或 UDP 网络问题
如果调试的问题涉及网络连接,例如:
- 请求延迟
- 连接断开
- 数据包丢失
可以使用数据流抓包。
SniffMaster 支持抓取:
- TCP 数据流
- UDP 数据流
抓取完成后可以导出数据到 Wireshark 进行分析。
在 Wireshark 中可以查看:
- TCP 三次握手
- 数据重传
- 连接关闭原因
六、不同抓包工具的使用场景
在网络抓包过程中,不同工具有不同作用:
| 工具 | 抓包方式 | 主要用途 |
|---|---|---|
| Charles | 代理抓包 | HTTP / HTTPS 调试 |
| Proxyman | 代理抓包 | HTTPS 调试 |
| SniffMaster | 设备级抓包 | iOS 网络数据 |
| Wireshark | 网络层抓包 | TCP / UDP 分析 |
在 Mac 上进行网络调试时,可以按以下顺序操作:
- 使用代理抓包工具查看 HTTP / HTTPS 请求
- 如果代理抓不到请求,使用Sniffmaster进行设备本机抓包
- 如果需要分析网络连接问题,导出数据到 Wireshark
通过这种方式,可以覆盖大多数抓包场景。
参考链接:www.sniffmaster.net/