Reynard: 基于 Gecko 的 iOS 13+ Web 浏览器

Reynard: 基于 Gecko 的 iOS 13+ Web 浏览器

Reynard 是一个面向 iOS 13 及更高版本的实验性 Web 浏览器,它利用了 Gecko 引擎——即驱动桌面端和 Android 端 Firefox 的相同引擎——而不是使用 Apple 强制要求的 WebKit。这使得旧版 iOS 用户能够访问现代网站,否则这些网站会因为过时的、随操作系统捆绑的 WebKit 版本而无法加载。

绕过 WebKit 以支持旧版设备

Apple 要求所有 iOS 浏览器必须使用 WebKit 引擎。由于 WebKit 是与操作系统捆绑在一起的,运行旧版 iOS 的设备无法独立于操作系统更新来接收引擎更新。这导致了一种情况:旧版设备被迫使用过时的 WebKit 版本,该版本缺乏对现代 ECMAScript 功能的支持,并包含未修复的漏洞。

通过实现 Gecko,Reynard 提供了一个现代、最新的渲染引擎,该引擎独立于操作系统运行。这使得旧版设备能够正确渲染现代网页,包括 GitHub、ChatGPT 和 Apple.com 等网站,这些网站在 iOS 14 的 Safari 上经常崩溃或渲染错误。

安装与侧载方法

由于 Reynard 使用了非标准引擎,它无法通过官方 App Store 分发,必须通过侧载方式安装。安装方法取决于 iOS 版本和设备状态:

TrollStore (iOS 14 - 16.6.1, 17.0)

TrollStore 是获得最佳体验的推荐方法,请使用 Reynard-TrollStore.tipa 构建版本。此方法提供自动 JIT (Just-In-Time) 启用、卓越的性能以及自动应用更新。

AltStore 或 SideStore (iOS 17.0.1+)

对于无法使用 TrollStore 的较新 iOS 版本,用户可以侧载 Reynard.ipa 构建版本。在安装过程中,务必选择 Keep App Extensions 选项,因为该浏览器依赖这些扩展来运行。

越狱设备 (iOS 13)

在运行 iOS 13 的越狱设备上,用户可以使用带有 AppSync Unified 的 Filza File Manager 来侧载 Reynard-Jailbroken.ipa 构建版本,这同样可以启用自动 JIT 并提升性能。

不支持的方法: 明确不支持 LiveContainer 以及使用分发证书进行签名的侧载方法。

技术实现与开发

项目创建者 AbuAssar 开发 Reynard 是为了测试 Gecko 是否可以在没有 BrowserEngineKit 框架的情况下在 iOS 上运行,从而使其能够支持旧版 iOS 版本。该项目利用了社区中的多种工具和私有 API 来进行内存处理和 JIT 启用:

  • JIT 与内存处理: 参考了 Amethyst-iOS、dolphin-ios 和 MeloNX 等项目,用于私有 API 的使用和 JIT 内存管理。
  • App Extensions: 利用 LiveContainer 进行应用扩展处理和 NSExtension 使用。
  • JIT 启用: 利用 StikDebug、idevice 和 TrollStore 进行基于配对的 JIT 启用。
  • 引擎集成: 基于 Mozilla 的 Bugzilla (Bug 1882872) 中关于在 iOS 上集成 Gecko 的现有工作进行构建。

社区见解与监管背景

用户之间的讨论突显了第三方浏览器引擎与 Apple 生态系统之间更广泛的斗争。虽然欧盟、英国和日本等司法管辖区正在迫使 Apple 允许第三方引擎,但用户指出 Apple 的合规行为往往是“恶意合规”,为分发设置了障碍。

"Apple 正在被不同司法管辖区(欧盟、英国、日本)迫使允许第三方浏览器引擎……Apple 一直在恶意合规,为测试和分发设置障碍。"

批评者和爱好者们指出,对于过时的设备,像 Reynard 这样的项目至关重要,因为它可以防止设备因不再由 Apple 修复的过时渲染引擎而变得过时。

Sources