HTTPS 抓包的流程,代理抓包、设备数据线直连抓包、TCP 数据分析

0 阅读3分钟

在接口调试中,遇到这样一个问题:

  • App 登录接口返回异常
  • 服务端日志没有什么明显错误
  • 客户端日志信息不完整,看不出问题

这时有个办法就是抓取 HTTPS 请求,查看数据。

但实际,又出现一个问题:

  1. 浏览器 HTTPS 可以正常抓
  2. App HTTPS 请求直接失败

问题就是抓包方向有没有错


一、先用代理抓包验证 HTTPS 环境

第一步使用代理抓包工具,例如:

  • Charles
  • Proxyman
  • Sniffmaster

目标是确认 HTTPS 是否可以被解密。


建立代理环境

操作步骤:

  1. 启动 Sniffmaster
  2. 查看监听端口,例如 8888
  3. iPhone 与电脑连接同一 Wi-Fi
  4. 在 iPhone Wi-Fi 设置中配置代理地址与端口

保存后返回桌面。 端口


安装 HTTPS 证书

在 iPhone 上完成以下操作:

  1. 使用 Safari 打开代理工具提供的证书地址
  2. 下载描述文件
  3. 安装证书
  4. 在系统设置中开启证书信任

完成后,代理工具可以解密 HTTPS。 安装证书


验证 HTTPS 是否成功抓取

打开 Safari 访问一个 HTTPS 网站。

如果 Sniffmaster 中可以看到:

  • 请求 URL
  • Header
  • 响应内容

说明 HTTPS 抓包环境已经建立。 代理抓包


二、抓取 App HTTPS 请求

在同样的代理环境下,打开目标 App。

触发登录或数据加载操作。

观察 Sniffmaster:

  • 如果出现请求记录 → 可以查看完整 HTTPS 数据
  • 如果没有任何请求 → 需要继续排查

三、HTTPS 抓包失败的常见现象

在这个案例中,出现了这样的情况:

  • Safari 请求可以抓到
  • App 请求完全没有记录

此时说明:

  • 代理是正常的
  • App 的网络请求没有走系统代理

四、切换 HTTPS 的抓包模式

当代理无法捕获 HTTPS 请求时,需要换一个抓包方式。

这里使用 Sniffmaster 的 HTTPS 暴力抓包。

这种方式不依赖代理证书。


使用 SniffMaster 抓取 HTTPS

操作步骤:

  1. 使用 USB 将 iPhone 连接电脑
  2. 保持设备解锁
  3. 在手机上点击“信任此电脑”
  4. 启动 SniffMaster
  5. 在设备列表中选择 iPhone
  6. 按提示安装 iOS 驱动
  7. 安装描述文件
  8. 进入 HTTPS 暴力抓包模式
  9. 点击开始

然后在手机上触发 App 请求。 进入暴力抓包


观察抓包结果

在 SniffMaster 中可以看到:

  • 请求域名
  • 请求路径
  • 请求 Header
  • 响应数据

即使 App 没有走代理,仍然可以看到 HTTPS 请求。 暴力抓包


五、当 HTTPS 数据不完整

在抓包过程中可能会遇到:

  • URL 可见
  • Header 可见
  • 请求体为空

这说明:

  • HTTPS 已经被捕获
  • 但应用未使用开发证书签名

解决方法:

  1. 获取 App 的 IPA 文件
  2. 使用 iOS 开发证书重新签名
  3. 重新安装 App
  4. 再次抓包

完成后,请求体与响应体可以正常显示。


六、HTTPS 抓包与端口无关的部分

在抓包过程中,可以观察到:

api.example.com:443
api.example.com:8443

无论是 443 还是自定义端口:

  • 只要 TLS 握手成功
  • 抓包工具就可以解析 HTTPS

端口不会影响解密能力。


七、修改 HTTPS 请求的限制

如果需要修改请求参数,例如:

  • 改写接口数据
  • 模拟不同返回结果

需要使用代理抓包工具。

在 Charles 或 Proxyman 中可以:

  • 使用 Rewrite
  • 使用 Breakpoints

SniffMaster 也支持拦截器,但仅在 HTTPS 代理模式下可用

设备级抓包模式不修改数据。 拦截器


八、结合 TCP 层分析 HTTPS 问题

如果 HTTPS 请求出现:

  • 超时
  • 连接断开

可以将数据导出到 Wireshark。

在 Wireshark 中可以查看:

  • TCP 建连过程
  • 数据重传
  • 连接关闭原因

这一层不涉及证书问题。


在实际调试中,可以按以下顺序操作:

  1. 使用代理抓包验证 HTTPS
  2. 如果代理抓不到 App 请求,切换设备级抓包
  3. 如果数据不完整,处理签名问题
  4. 如果涉及连接问题,分析 TCP 数据

参考链接:www.sniffmaster.net/tutorial/zh…