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

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

  • 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 数据

参考链接:https://www.sniffmaster.net/tutorial/zh/1/1.html

相关推荐
Daniel_Coder11 小时前
iOS Widget 开发-14:iOS 18 控制中心组件开发
ios·swift·widget·activitykit·widgetkit·控制中心组件
七牛云行业应用11 小时前
OpenAI Codex手机版上线实战:iOS/Android 5步配置远程控制指南(2026)
android·ios·智能手机
leduo668899o12 小时前
商城小程序自由容器支持图片自适应详解:从入门到实战全攻略
小程序
切糕师学AI12 小时前
计算机网络中的 TTL:从 IP 到 DNS 的全面解析
tcp/ip·计算机网络·dns·ttl
minji...12 小时前
Linux 网络基础之传输层协议TCP(九)从内核源码的角度打通系统与网络之间的关系,套接字多态的体现
linux·运维·服务器·网络·网络协议·tcp/ip·http
想唱rap12 小时前
IO多路转接Select
运维·服务器·网络·数据库·sql·tcp/ip·mysql
灰子学技术13 小时前
Envoy IP 标签(IP Tagging)功能实现分析
网络·网络协议·tcp/ip
想唱rap13 小时前
IO多路转接之epoll
linux·运维·服务器·数据库·网络协议·算法·http
这是个栗子13 小时前
【uni-app微信小程序问题解决】Uni-app 微信小程序组件不渲染
微信小程序·小程序·uni-app
初願致夕霞13 小时前
Linux网络编程_数据链路层MAC帧协议与ARP协议
linux·网络·网络协议·macos