这次测试的目标很简单:
- 在同一台 iPhone 上
- 用同一套网络环境
- 分别使用 Charles、Proxyman、SniffMaster
- 观察三种场景下的抓包结果
测试环境:
- iOS 17.5
- 一台 Windows 电脑 + 一台 Mac
- 一个普通 HTTPS App
- 一个开启证书校验的 App
一、代理抓包路径,Charles 与 Proxyman
1. 建立代理环境
两款工具的第一步都相同:
- 启动软件
- 开启系统代理监听
- iPhone 与电脑同一 Wi-Fi
- 在 iPhone Wi-Fi 设置中填写代理地址与端口
- 安装并信任证书
验证方式统一:
- 打开 Safari
- 访问 https 网站
- 确认 HTTPS 被成功解密
Safari 成功显示,说明代理路径没问题。
2. 抓普通 HTTPS App
在代理已经生效的情况下,打开测试 App。
结果:
- Charles 能看到请求
- Proxyman 也能看到请求
- 请求与响应体完整
这说明,在未开启 SSL Pinning 的场景下,三款工具在代理模式下行为一致。
3. 抓开启证书校验的 App
第二个测试 App 内部做了证书校验。
操作步骤保持一致,仅更换测试 App。
现象:
- Charles 中出现 TLS 握手失败
- Proxyman 中也显示连接错误
- App 提示网络异常
代理工具本身没有异常,阻断发生在 App 内部。
二、切换抓包方式,SniffMaster 设备本机抓包
当代理路径被证书校验阻断时,我没有继续调整代理参数,而是切换抓包方式。
1. 使用 SniffMaster 进行设备本机抓包
操作步骤如下:
- 用 USB 将 iPhone 连接电脑
- 保持设备解锁
- 启动 SniffMaster
- 在设备列表中选择对应 iPhone
- 按提示安装驱动与描述文件
- 进入 HTTPS 暴力抓包模式
- 点击开始
没有配置 Wi-Fi 代理,也没有额外安装代理证书。
2. 抓普通 HTTPS App
在该模式下打开普通测试 App。
结果:
- 请求正常出现
- 响应体完整显示
- 可按 App 筛选流量
与代理模式下的效果一致。
3. 抓开启证书校验的 App
接着测试开启 SSL 校验的 App。
结果不同于代理工具:
- 请求仍然可以看到
- HTTPS 内容可显示
- 未出现握手失败
这里的区别来自抓包位置不同。
代理工具位于客户端与服务器之间,需要替换证书。 SniffMaster 设备本机抓包不依赖代理替换。
三、当请求体不完整时的现象
在设备级抓包中,如果测试的是 App Store 下载的应用:
- 可以看到 URL
- 可以看到 Header
- Body 为空
这不是工具异常,而是签名限制。
处理步骤如下:
- 获取 IPA
- 使用 iOS 开发证书重签
- 重新安装
- 再次抓包
完成后,请求体与响应体可以正常显示。
四、修改请求与响应能力对比
测试修改响应的能力时,只在代理模式下进行。
Charles
- 支持 Rewrite
- 支持 Breakpoints
- 可手动或规则替换
Proxyman
- 支持 Scripting
- 支持 Rewrite Rules
- UI 较为直观
SniffMaster
- 仅在 HTTPS 代理抓包模式 下提供拦截器
- 通过 JS 编写 handleRequest / handleResponse
- 不在设备级模式下提供拦截功能
三者的共同点:
- 都依赖代理路径
- 都无法在设备级模式下修改数据
五、TCP 层分析对比
在测试网络异常场景时,我导出数据做 TCP 分析。
- Charles:支持保存为会话文件
- Proxyman:支持导出
- SniffMaster:支持导出为 Wireshark 格式
将 SniffMaster 导出的文件导入 Wireshark 后,可以看到:
- TCP 建连
- 重传
- 窗口变化
这一步主要用于分析连接问题。
六、三个工具各自的作用
经过完整流程后,可以把三者分为不同场景:
| 工具 | 抓包方式 | 是否依赖代理 | 是否支持修改 |
|---|---|---|---|
| Charles | 代理抓包 | 是 | 是 |
| Proxyman | 代理抓包 | 是 | 是 |
| SniffMaster | 代理 + 设备级 | 代理模式依赖 | 仅代理模式 |
七、实测结论建立在操作结果上
在这次测试中,可以直接验证的现象包括:
- Safari 是否可解密
- App 是否走代理
- TLS 是否失败
- 设备级模式是否能看到数据
- 是否需要重签
每一步都有可观察结果,而不是猜测。
八、什么时候用哪一个
当目标是:
- 修改接口参数 → 使用代理工具
- 分析证书校验 → 设备本机抓包
- 查看 TCP 行为 → 导出到 Wireshark