在软件开发中,网络抓包出现在排查问题的时候。
例如:
- App 登录接口返回异常
- 请求参数与预期不一致
- 客户端请求了错误的 API 地址
这些问题仅通过日志很难判断,最直接的方法是把真实网络请求抓出来。
这篇文章通过实际调试过程,逐步说明网络抓包是如何完成的。
一、先确认请求是否真正发出
在启动抓包工具之前,可以先验证一下。
打开 App 的某个需要网络请求的页面,例如:
- 登录
- 刷新数据
- 获取列表
然后关闭手机网络,再次触发操作。
如果界面出现加载失败或提示网络错误,说明该操作确实会发起网络请求。
接下来再开始抓包。
二、建立代理抓包环境
最常见的抓包方式是代理抓包。
常见工具包括:
- Charles
- Sniffmaster
- Proxyman
- Fiddler
这些工具的工作方式是客户端请求先发送到代理工具,再由代理转发给服务器。
因此代理可以记录 HTTP 或 HTTPS 请求。
配置代理
准备一台电脑,然后执行以下步骤:
- 启动 Charles 或 Proxyman
- 查看代理监听端口,例如 8888
- 让手机与电脑连接同一 Wi-Fi
- 打开手机 Wi-Fi 设置
- 点击当前网络
- 在 HTTP 代理中选择 手动
- 输入电脑 IP 与端口
保存后返回主界面。
安装 HTTPS 证书
如果目标请求使用 HTTPS,需要安装代理证书。
操作步骤:
- 在手机浏览器访问代理工具提供的证书地址
- 下载描述文件
- 安装证书
- 在 iOS 设置中开启证书信任
完成后,代理工具可以解密 HTTPS。
验证代理是否成功
打开浏览器访问一个 HTTPS 网站。
如果代理工具中出现请求,并且可以查看响应内容,说明抓包环境已经建立。
接下来可以打开目标 App。
三、抓取 App 网络请求
打开 App 并触发网络操作,例如:
- 登录
- 获取数据列表
- 提交表单
在代理工具中查看是否出现新的请求记录。
如果请求出现,可以查看:
- 请求地址
- 请求参数
- Header 信息
- 响应内容
对于普通应用,这一步已经足够完成大多数调试任务。
四、代理抓不到请求的情况
在某些情况下会出现这样的问题:
- 浏览器请求可以抓到
- App 请求完全没有记录
这意味着 App 没有使用系统代理。
继续调整证书或端口不会改变结果。
此时需要使用另一类抓包工具。
五、设备本机抓包
iPhone 设备本机抓包不依赖 Wi-Fi 代理,而是直接读取设备网络数据。
例如可以使用 SniffMaster(抓包大师)。
使用 SniffMaster 抓取网络数据
操作步骤如下:
- 用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 在手机上点击 信任此电脑
- 启动 SniffMaster
- 在设备列表中选择 iPhone
- 按提示安装 iOS 驱动
- 安装描述文件
- 进入 HTTPS 暴力抓包或数据流抓包模式
- 点击开始
然后在手机上触发网络请求。
抓包界面会显示对应的网络数据。
筛选目标 App
设备级抓包会包含大量系统网络流量,例如:
- DNS 请求
- Apple 服务连接
为了更容易定位目标 App,可以:
- 点击 选择 App
- 勾选目标应用
- 再触发网络请求
抓包列表会只显示该 App 的网络数据。
六、分析 TCP 或 UDP 数据
如果需要排查更底层的问题,例如:
- 网络连接不稳定
- 请求延迟异常
可以使用数据流抓包。
SniffMaster 支持抓取:
- TCP 数据流
- UDP 数据流

抓取后可以导出数据到 Wireshark 进行分析。
在 Wireshark 中可以看到:
- TCP 三次握手
- 重传情况
- 连接断开原因
在实际调试中,可以按顺序进行:
- 先尝试代理抓包
- 如果代理抓不到请求,使用iPhone设备本机抓包
- 如果需要分析连接问题,导出数据到 Wireshark
通过这种方式,可以覆盖大多数网络抓包场景。
参考链接:https://www.sniffmaster.net/tutorial/zh/1/1.html
随时随地看视频