在 iOS 开发中,HTTPS 抓包本来是一件很日常的事情。
接口联调、参数确认、返回值校验,代理抓包工具几乎能覆盖大多数需求。
但真正让 iPhone HTTPS 抓包变得困难的,往往不是开发阶段,而是问题已经只在真机环境出现的时候。
我第一次认真研究 iPhone HTTPS 抓包,也是被这种问题逼出来的。
一个看起来不像网络问题的异常
那次的问题发生在一个已经稳定运行的功能上。
接口没有改动,服务端日志正常,但用户偶发状态异常。复现条件非常苛刻:必须是真机,必须是特定系统版本。
很自然地,我开始抓 HTTPS 请求。
代理抓包,仍然是最先尝试的方式
在 iPhone HTTPS 抓包中,代理工具依然是最常见的起点。
它们在以下方面依然非常可靠:
- 验证请求是否按预期发出
- 检查 Header 和参数拼装
- 对比不同版本的接口行为
- 快速修改请求、重放响应
在模拟器环境下,这些工具几乎没有阻力。
但问题很快就出现了。
真机下的 HTTPS,开始时有时无的数据
同样的 App,模拟器抓包一切正常;
换到 iPhone 真机,请求要么完全看不到,要么只能看到连接,内容不可读。
此时继续检查代理配置,其实已经很难推进判断,因为所有该做的步骤都已经做过了。
问题常常在于HTTPS 安全策略
回头看这类现象,很多都与 iOS App 的 HTTPS 安全策略有关。
例如:
- HTTPS pin 校验
- 双向证书认证
- 针对真机环境启用的安全逻辑
这些机制并不会显式告诉你抓不到包是因为我,而只是让代理工具变得沉默。
于是,iPhone HTTPS 抓包失败就成了一种表象。
换一个方向,确认请求是否真实存在
在意识到代理抓包可能已经不适用后,我做的第一件事不是换证书,而是换方向。
我开始关心一个更基础的问题这个 iPhone,在真实运行时,到底有没有发出这些 HTTPS 请求?
为了确认这一点,我使用了 抓包大师(Sniff Master) 进行设备侧抓包。
设备侧 HTTPS 抓包,让真机行为显形
抓包大师不依赖系统代理,也不需要在 iPhone 上反复调整网络配置,更不要求越狱或 root。
它的价值在于:从设备层面直接观察 HTTPS 通信是否发生。
在这个阶段,它并不是更强的抓包工具,而是用来验证一个前提条件,请求是否真实存在,是否真的完成了 HTTPS 通信。
当设备侧能够稳定抓到 HTTPS 请求时,之前代理工具的无响应就不再是谜。
只抓目标 App,才能判断抓不到是真是假
在 iPhone 上抓包,还有一个很现实的问题:噪音。
系统服务、后台同步、推送通道,会产生大量 HTTPS 请求。
如果工具支持只抓取指定 App,判断会轻松很多。
当你看到的每一条请求都来自目标 App,抓不到包这件事才真正具有判断意义。
并非所有问题都停留在 HTTPS 层
继续排查时,我发现并不是所有通信都通过 HTTPS 接口完成。
例如:
- 登录完成后,通过 TCP 长连接同步状态
- 心跳数据不经过 HTTP
- 部分控制信息只存在于数据流中
如果只停留在 iPhone HTTPS 抓包层面,很容易误以为接口已经返回正常。
数据流抓包,补齐 HTTPS 看不到的部分
在确认 HTTPS 请求没有问题后,我开始抓 TCP 数据流。
这一步的目的并不是解析协议,而是确认:
- 连接是否建立
- 是否被频繁中断
- 数据是否真正传输
抓包大师支持 TCP / UDP 数据流抓取,并可以导出数据进一步分析。这一步让我意识到:
问题发生在 HTTPS 之后,而不是 HTTPS 之中。
准备 iOS 设备
连接设备:通过 USB 将 iOS 设备连接到电脑,设备需解锁并处于亮屏状态。
信任电脑:如果设备是第一次连接到当前电脑,手机会提示信任此设备,点击"信任此设备"。
安装 iOS 驱动:如果使用的是 Windows 系统,首次使用抓包大师时,可能会提示安装驱动程序,按照提示点击确定并逐步完成安装。驱动安装完成后,请重启抓包大师。
安装描述文件:对于未曾使用抓包大师抓包过的设备,软件会提示安装描述文件,请根据提示步骤在手机上安装配置文件。
开启开发者模式:对于 iOS 17.4 及以后的设备,抓包大师会提示在 iOS 设置中开启开发者模式,按照步骤操作即可。iOS 17.0-17.4 系统存在某些 bug,抓包大师目前不支持这些版本的设备。版本低于iOS 16的设备,如 iOS 15,尚未经过测试,未知是否支持。
进入 数据流抓包模式
在设备列表中选择要抓包的 iOS 设备,左下角会显示准备启动设备的高级管理服务。等待左下角的"高级管理服务"变为绿色,然后选择功能区域中的 数据流抓包。数据流抓包是 iOS 专用的抓包功能,如果选择本机(即当前电脑)进行抓包,则暴力抓包和数据流抓包功能不可用。
如果出现错误,可能是左下角的"高级管理服务"启动失败,您可以点击 启动高级管理 按钮,根据提示开启高级管理功能。
暴力抓包功能说明
开始:点击此按钮开始暴力抓包,抓包开始后,点击该按钮可以停止抓包。
保存:将抓取到的数据保存为 pcap 格式,供其他软件使用或下次继续分析。
过滤:使用过滤功能排除不感兴趣的数据,支持目标地址,源地址过滤、数据端口过滤、数据协议过滤等。
选择 App:只抓取选定 App 的数据,可以极大减少干扰,专注于目标应用的数据请求。
清除:清除所有抓取到的数据记录。
删除:删除选中的数据记录。
右键操作:抓包记录支持右键删除指定的记录。
网络传输:网络传输面板展示数据的整个网络链路请求过程,从应用层,链路层,传输层等。
数据: 数据面板展示完整的传输的数据的不同展示格式,支持16进制,字符串,格式化十六进制,还可以保存单个包为二进制文件
Wireshark 的角色,更偏向确认
在 iPhone HTTPS 抓包讨论中,Wireshark 经常被提及。
但从工程实践来看,它更适合在问题已经被缩小范围之后使用。
如果在方向不清晰时直接使用,信息量往往会成为负担。
我更倾向于在已经确认哪里不对之后,再用它去验证细节。
拦截与修改,用来验证理解是否成立
当我认为自己已经理解问题发生的原因时,并不会马上改代码。
而是先通过拦截 HTTPS 请求、修改响应内容,验证客户端的反应。
这种方式可以快速确认:问题是否真的出在自己怀疑的地方。
抓包大师支持通过脚本修改请求和响应,在这个阶段更像是实验工具,而不是单纯的抓包工具。

对 iPhone HTTPS 抓包的一点体会
做过几次真机 HTTPS 排查之后,我对这件事的理解变得更务实:
- 抓不到包,可能不是没有请求
- 很多问题源于抓包方向不再适用
- 多工具组合,才能还原真实通信过程