iOS不越狱抓包完整教程 不用越狱也能抓 iOS 明文 含 SSL Pinning 场景

0 阅读17分钟

iPhone 不用越狱也能抓 HTTPS 包?三种免越狱抓包方式实测教程(含 iOS 17 适配)

如果你搜"iphone 抓包 不越狱"搜到了这篇文章,大概率你正在经历下面这几种场景之一:

  • 调试自己写的 App,想确认它到底往哪个接口发了请求、参数对不对;
  • 排查一个第三方 App 的行为,怀疑它在后台偷偷上传数据,想看看真实的请求地址;
  • 做安全测试或接口逆向,需要拿到某个 App 的完整请求 / 响应 Body;
  • 只是想像在电脑上用 Wireshark、Charles 那样,看看手机联网到底在干什么。

以前一提到 iOS 抓包,很多教程第一句话就是"先越狱"。但越狱在 iOS 系统上一路走来门槛越来越高——新机型、新系统版本能不能越狱是个未知数,越狱后设备稳定性下降,一些 App 还带越狱检测,稍不注意就用不了正常业务。对于大部分只是想看一眼接口的人来说,为了抓个包去越狱一台手机,投入产出比并不划算。

好消息是,iOS 抓包这件事,这两年已经有了成熟的免越狱方案。本文完整讲清楚:iOS 抓包为什么比 Android、桌面端麻烦;免越狱到底能不能抓到 HTTPS 明文;三种非越狱抓包方式分别能看到什么、要不要装证书、怎么操作;以及和越狱 + Frida、纯代理抓包工具相比,各自的优劣在哪。全文以抓包鹰(Trace Eagle)作为实操演示的工具,但原理部分对理解整个 iOS 抓包体系都适用。

一、iOS 抓包为什么比 Android、桌面端更麻烦?

先搞清楚"难"在哪里,后面选方案才有判断依据。

1. iOS 的沙箱机制,天然屏蔽了"直接看流量"这条路

iOS 上每个 App 都跑在独立沙箱里,普通用户态程序没有权限直接读取内核网络栈的原始数据,也不能像 Android(较早版本)那样简单地拿到 root 权限接管流量。这意味着,如果不借助系统提供的诊断接口、或者不把设备的网络出口收敛到某个可控节点(比如代理),第三方工具几乎看不到任何东西。

2. HTTPS 证书信任机制,让"代理抓包"这条老路半残

大多数抓包工具(包括电脑上常见的那一批)走的都是同一套思路:把设备网络代理指向抓包软件所在的电脑,抓包软件用自签证书顶替原始证书、居中解密。这套思路在 iOS 上要生效,必须完成两件事:

  1. 在设备上安装一个描述文件(Profile),并且手动到"设置 - 通用 - 关于本机 - 证书信任设置"里把这个根证书标记为完全信任;
  2. App 本身没有做证书绑定(SSL Pinning)——一旦做了,代理再怎么居中也拿不到明文,这也是很多人搜"ios ssl pinning 抓包"的原因。

对不少 App,尤其是主流电商、金融、社交类 App,证书绑定几乎是标配。纯代理型工具在这些目标面前直接失效,这也是移动端抓包比桌面端难的核心原因之一。

3. App Store 审核和系统权限限制,让"系统级挂钩"很受限

在越狱设备上,常见做法是用 Frida、objection 之类的动态插桩工具,直接 hook App 的证书校验函数,让它"以为"证书是对的,从而绕过证书绑定拿到明文。这个思路在技术上很有效,但前提是设备要越狱——因为动态插桩需要突破 iOS 对进程注入的限制,非越狱设备的沙箱和代码签名机制不允许这么做。

综合下来,iOS 抓包的核心矛盾就是:想要图省事,就得代理 + 装证书,但绑了证书的 App 抓不到明文;想要绕过证书绑定,传统路线就得越狱。

这也是为什么"iphone 抓包 不越狱"会成为一个高频搜索词——大家都想要一个折中甚至更优的解法。

二、免越狱到底能不能抓 HTTPS 明文?答案是:能,但要分场景

免越狱抓包不是一句话能讲完的事,因为"能看到什么"取决于你用哪种方式、目标 App 是不是普通下载的 App Store 版本。这里把常见的三种非越狱抓包思路放在一张表里,方便你按需求对号入座:

你的目标适合用哪种方式能看到什么要不要装证书 / 重签
快速看这台设备发了哪些 HTTPS 请求(地址 / 状态码 / 请求头)系统级抓包普通 App、App Store 应用能看到请求方法、完整 URL、状态码、请求头与响应头;开发证书签名的 App 还能看到完整 Body只需装一个"设备诊断描述文件",一次即可
整机全部网络流量(含非 HTTP 协议、TLS 握手信息)网卡抓包全量数据,默认是密文 + 元数据(目标地址、端口、SNI 主机名);可对指定 App 定点解密出明文看密文不需要证书;要解出某个 App 的明文,需要把该 App 用开发证书重签名
某个 App 的完整明文收发(含请求 / 响应 Body)应用层抓包单个 App 的完整明文,证书绑定拦不住目标 App 需用开发证书重签名(App Store 应用与系统 App 都要先重签才能作为目标)

除了这三种,iPhone / iPad 也可以走代理抓包这条经典路线:把设备 Wi-Fi 代理指向电脑,装上根证书,就能像在电脑上一样抓 HTTPS 明文,并且能用规则改写、断点拦截、请求重放等一整套调试能力。这条路适合调试走系统代理的 App,或者需要对移动端请求做规则改写、重放测试的场景——证书安装这一步,现在不少工具已经支持手机扫码一键完成,不用再手动传文件、翻设置菜单。

下面把三种非越狱方式逐一展开讲清楚。

三、系统级抓包:最省心的方式,App Store 应用也能用

能看到什么?

系统级抓包本质上是把系统自身记录的网络诊断日志读出来、结构化展示给你。它不需要接管流量、不需要代理、不用处理证书绑定,所以是三种方式里配置成本最低的一种。

  • 普通 App、直接从 App Store 下载安装的应用:通常能看到请求方法、完整 URL(即使是 HTTPS,地址也是明文可见的)、状态码、请求头和响应头。这基本上能满足"这个 App 到底连了哪些接口""ios app 请求地址查看"这类最常见的排查需求。
  • 用开发证书签名的 App:这种情况下不仅能看地址和头,连完整的请求 / 响应 Body 也能看到。

需要说明的是,普通 App 看不到 Body,不是工具的限制,而是系统诊断日志本身能提供的信息就止于地址和头这个粒度——这一点无论用什么抓包工具,只要走的是系统级这条路线,边界都是一样的。

要不要装证书?

不需要装 CA 证书、不需要设代理,只需要安装一个"设备诊断描述文件",安装一次即可长期使用,这也是"ios 描述文件 抓包"这个搜索词背后大家想问的东西——这个描述文件和代理抓包用的根证书是两回事,它只是让系统愿意把诊断日志开放出来,不涉及居中解密。

适用场景

想快速摸清一个 App(包括 App Store 应用)联网行为、又不想折腾证书和代理的,从这种方式入手最合适。

四、网卡抓包:看这台设备的一切流量

能看到什么?

网卡抓包抓的是设备整机的网络流量,不限 App、不限协议——包括非 HTTP 的 QUIC、各种自定义协议都能抓到。默认情况下看到的是密文包加元数据:目标地址、端口,以及 TLS 握手过程里的 SNI 主机名。光是这些信息,往往就足以判断"这台设备连了哪些地方、用了什么协议"。

如果想看某个具体 App 的明文内容,对该 App 勾选"解密此程序"即可解出,前提是这个 App 已经用开发证书重签名过。

要不要装证书?

只看密文和元数据完全不需要证书;只有想解密某个具体 App 时,才需要把该 App 用开发证书重签名。

适用场景

想全面盘点一台设备的网络行为、或者目标协议本身不是标准 HTTP(比如某些即时通讯、游戏用的自定义协议),网卡抓包是覆盖面最广的选择。

五、应用层抓包:单个 App 的完整明文,证书绑定拦不住

能看到什么?

应用层抓包是三种方式里唯一能保证拿到"完整明文(含 Body)"、且不受证书绑定影响的方式——因为它是从 App 内部直接取数据,而不是在网络链路中间做居中解密,所以哪怕 App 做了严格的证书绑定校验,也不影响拿到明文。这也是"ios 开发证书重签名抓包"这个思路的核心用法。

要不要装证书?

目标 App 需要用开发证书重签名。如果目标是 App Store 上下载的应用或者系统自带的 App,需要先完成重签名才能作为抓包目标——在工具的 App 列表里,未重签的 App 会显示为置灰状态选不了,重签之后才会变为可选。

两个实用细节

  • 想连 App 启动初期的流量也抓到:可以先关闭目标 App,创建会话后再重新打开它,避免错过冷启动阶段发出的请求。
  • 遇到解不出明文的情况:部分 App 使用了静态链接或自研的网络库,常规方式可能取不到明文,这时可以打开"socket 流量"这个兜底开关,换一条更底层的路径取数据。

适用场景

需要拿到某个具体 App 完整请求 / 响应内容(比如做接口逆向、调试自己的 App、复现某个接口 Bug)时,应用层抓包是精度最高的选择。

六、手把手操作步骤(以抓包鹰 Trace Eagle 为例)

以下步骤以抓包鹰这款免费、跨平台(支持 macOS / Windows / Linux 桌面端)的抓包工具为例,展示三种方式的具体操作路径,帮你把上面的原理落地成实际点击步骤。

通用准备(三种方式都要做)

  1. 用数据线把 iPhone / iPad 连接到电脑。
  2. 手机上会弹出信任提示,点击**"信任"**。
  3. 三种抓包方式全程不需要越狱,也不影响正常使用手机。
  4. 系统兼容性方面,包括 iOS 17 及以上的较新系统,因为换用了新的设备连接通道,依然可以正常连接与抓包,不受系统版本更新影响。
  5. 新建会话时,"目标"选择"iOS",在"设备"下拉列表里选中已连接的手机;如果同一台设备同时出现在 USB 和网络两条通道里,按实际需要选择即可,通常 USB 连接更稳定。

步骤一:系统级抓包(最快上手)

  1. "方式"选择"系统级抓包"。
  2. 若还没装过设备诊断描述文件,按界面提示安装一次(后续无需重复安装)。
  3. 点击"创建"开始抓包,然后在手机上正常操作要观察的 App。
  4. 请求会实时出现在左侧列表,点开任意一条查看请求方法、URL、状态码、请求头和响应头(开发证书签名的 App 还能看到 Body)。

步骤二:网卡抓包(要看全量流量时)

  1. "方式"选择"网卡抓包"。
  2. 点击"创建"开始,默认抓到的是密文包和元数据。
  3. 如果需要看某个 App 的明文,勾选该 App 对应的"解密此程序"选项——前提是这个 App 已完成开发证书重签名。

步骤三:应用层抓包(要拿完整明文时)

  1. "方式"选择"应用层抓包"。
  2. 在 App 列表中选择目标 App(未重签的 App 会置灰,需要先完成重签名)。
  3. 如果要抓到 App 启动初期的请求,先关闭该 App,创建会话后再重新打开。
  4. 点击"创建",在手机上操作该 App,请求与响应会以明文形式实时展示,包括完整 Body。
  5. 如遇到解不出明文的情况,打开"socket 流量"开关兜底重试。

补充:代理抓包

如果目标是调试自己开发中的 App、或者需要用到规则改写和请求重放能力,可以选择代理抓包:把手机 Wi-Fi 代理指向电脑,扫码安装根证书,即可像电脑上一样抓取 HTTPS 明文并使用完整的调试功能集。

七、常见问题 FAQ

iOS 17 抓包受不受影响? 不受影响。三种非越狱方式在 iOS 17 及以上系统上依然可以正常连接和抓包,工具层面已经适配了较新系统里设备连接通道的变化,用户操作上没有额外差异。

App Store 应用能看到请求 Body 吗? 用系统级抓包看普通 App Store 应用,通常只能看到请求地址、方法、状态码和头信息,看不到 Body,这是系统诊断日志本身的能力边界。如果需要看到 App Store 应用的完整 Body,需要先把该 App 用开发证书重签名,再用应用层抓包或者网卡抓包的定点解密功能来抓。

遇到证书绑定(SSL Pinning)的 App 怎么办? 证书绑定针对的是"居中解密"这条路径,也就是代理抓包和网卡抓包默认走的路径。应用层抓包因为是从 App 内部直接取数据,不经过居中解密这一步,所以证书绑定不影响它拿到明文,这也是"ios ssl pinning 抓包"这类需求通常优先考虑应用层抓包的原因。

免越狱能抓到 HTTPS 明文吗?会不会只能看密文? 能抓到明文,但要分场景:系统级抓包能看到普通 App 的地址和头(开发证书签名的 App 能看到 Body);网卡抓包默认是密文,重签后可对指定 App 定点解密;应用层抓包在目标 App 完成开发证书重签名后,可以直接拿到完整明文。三种方式都不需要越狱设备。

一定要用开发证书重签名吗?麻烦不麻烦? 只有网卡抓包想解密具体某个 App、以及应用层抓包这两种情况需要重签名;系统级抓包完全不需要重签名,只需装一次设备诊断描述文件即可。重签名这一步工具通常会在需要时引导操作,不需要用户自己搞懂签名细节。

电脑和手机之间需不需要在同一个 Wi-Fi? 系统级抓包、网卡抓包、应用层抓包这三种方式都是通过数据线连接设备完成的,不依赖 Wi-Fi 网络环境;只有代理抓包这种走网络代理的方式,才需要手机和电脑处于可以互通的网络环境下。

八、和其他方案客观对比一下

市面上围绕移动端抓包,大致有这么几类思路,各有各的适用边界,这里客观列一下,方便你根据自己的场景选择:

越狱 + Frida / objection 方案:在越狱设备上用 Frida 做动态插桩,配合 objection 这类脚本工具 hook 掉证书校验逻辑,绕过证书绑定拿到明文。这条路的优点是灵活度高、理论上能应对各种校验逻辑,缺点是必须先越狱——越狱本身对新系统、新机型的支持存在不确定性,而且会影响设备稳定性,部分 App 还带有越狱检测,可能导致业务功能异常。适合有逆向工程经验、需要深度定制脚本的场景。

纯代理抓包工具(如 Charles、Fiddler、Wireshark 配合代理、mitmproxy 等):思路都是让设备把流量交给代理软件居中解密,配置相对简单,在电脑端能力也比较成熟(改写、断点、重放通常都具备)。局限在于:必须装描述文件和根证书才能看 HTTPS,而且一旦遇到做了证书绑定的 App,就无法解出明文,这也是很多人转向免越狱系统级方案的原因。

移动端专用抓包工具(如 Proxyman、HTTP Toolkit 等):这类工具在证书安装流程、界面体验上做了不少优化,让代理型抓包在移动端更好用,但本质上依然是代理型思路,同样受限于证书绑定这道坎,遇到做了严格校验的 App 依然抓不到明文。

免越狱三法(系统级 / 网卡 / 应用层):不需要越狱设备,系统级抓包连证书都不用装就能看清 App 的请求地址;网卡抓包能看到整机全量流量;应用层抓包能绕开证书绑定拿到指定 App 的完整明文。三种方式各有边界,组合使用基本能覆盖从"快速看一眼"到"深度拿明文"的完整需求区间,是目前门槛和能力之间平衡得比较好的一条路线。

需要说明的是,免越狱方案不是"魔法",它同样有自己的能力边界(比如系统级抓包看不到普通 App 的 Body),只是把"要不要越狱"这个决策点从"必须"变成了"可选",大部分排查场景其实并不需要越狱这种重量级手段。

九、小结

iOS 抓包难,难在沙箱机制和证书信任体系天然把"看流量"这件事挡在了系统门外,传统代理型工具遇到证书绑定就束手无策,而越狱 + Frida 这条路虽然能力强,但门槛和风险都不小。

免越狱的系统级抓包、网卡抓包、应用层抓包三种方式,分别从"读系统诊断日志""接管整机网卡""从 App 内部直接取数据"三个不同角度,覆盖了从快速排查到深度拿明文的完整需求链条,而且全程不需要越狱设备,也不影响手机正常使用。

如果你想直接上手试试,抓包鹰(Trace Eagle)是一款免费的跨平台抓包工具,支持 macOS / Windows / Linux 桌面端和 iOS / Android 移动端,本文演示的三种非越狱方式加上代理抓包,在这款工具里都可以直接使用——全功能免费,不需要注册激活码,抓到的数据也留在本机,不会上传到云端。它的 Slogan 是"抓得到,解得开,看得懂",如果你正被 iOS 抓包这件事困扰,不妨试试免越狱这条路,很多时候比想象中要简单。