菜单
中文 (简体)

AdGuard v4.5.1 iOS版:处理 iOS 17 上难以预料的规则上限问题

这次更新还包含一个背景故事。解决软件问题时,我们突然发现了一个 iOS 17 的错误。系统基本上限制了内容拦截规则的数量。除了该错误的解决方案,我们还进行了一些改进和修复让应用程序运行更稳定。

Apple!不是说好在 Safari 中可以用15万内容拦截规则吗?

问题

这个故事始于我们试图找到一个解决方案来解决 iOS 17 上过滤器会不断“更新”而不真的更新的问题。当时,点击 AdGuard 主屏幕右上角的 🔄 图标导致软件一直显示正在更新状态。不过,有时,不断进行更新的流程以过滤器更新错误的状态结束。

问题的原因

起初,我们试图从自己应用程序的代码中找出问题。但我们尝试解决问题后,就注意到了一个现象:该问题只出现在最新的 iOS 系统上,而它应该是最完善、最优化的系统。这一细节和越来越多的用户反馈让我们意识到,问题的根源在于更新后的 iOS 系统。

然后我们发现,过滤器仍会根据用户启用(或未启用)的过滤器成功更新,这反过来帮助我们发现,在 Safari 中加载规则有时会遇到内存限制,而这是我们以前从未遇到过的问题。

Apple 公司为开发者提供了在应用程序中实施 Safari 内容拦截器的能力,这让开发者能够为用户提供内容拦截功能。这是 iOS 上广告拦截程序不可或缺的工具,因为 Safari 内容拦截器让我们得以将过滤规则用于 Safari 浏览器。目前,根据 Safari 内容拦截 API 文档,一个内容拦截器最多可包含 15 万个规则(一个应用程序可拥有多个内容拦截器)

矛盾

总之,我们遇到了一个令人惊讶的情况:在 iOS 17 上,使用具有15万过滤规则的标准 Safari 内容拦截程序会突然导致崩溃。原来,Safari 不再接受超过一定大小的文件,即使是带有4万~6万规则(比15万限制低 3 倍)的内容拦截程序有时也会崩溃(取决于它们所包含的规则)。

由此,我们要向 Apple 公司提出一个简单的问题:为什么 Safari 浏览器允许15万个规则,而4万个规则的内容拦截器却会崩溃?

由于这是 iOS 17 中的一个明显错误,我们已经在 Apple 论坛上进行了报告。如果有用户能为我们的报告投上宝贵的一票(点击《Me too》),我们将不胜感激。此外,这是 Apple 反馈助手中的票据 ID: FB13282146。

解决方案

我们花了好几个星期才想出了一个临时解决方案:我们限制了 JSON 文件的大小,并优化了主要过滤器,使它们能适应新的"大小要求"。如果一个内容拦截器对于 iOS 来说还是有点太大(最终大小取决于用户启用了多少个过滤器和哪些过滤器),我们就会自动减小大小,这样至少有一部分符合大小要求的规则会应用到 Safari 中。

因此,虽然目前大多数用户都能正常使用软件,但我们非常希望 Apple 公司能尽快解决这个问题。

SafariConverterLib、Scriptlets 和 TSUrlFilter 的更新

现在让我们说一下 v4.5.1 中的其他改进。例如,我们更新了 SafariConverterLib、Scriptlets 和 TSUrlFilter。这三个组件的更新以及它们之间的相互连接有助于保持较高的过滤质量,即拦截规则的高效和最新性能。

SafariConverterLib 可将 AdGuard 过滤规则转换为 Safari 内容拦截规则,因此基本上可以在 AdGuard iOS 版中使用我们过滤器的全部功能。ScriptletsTSUrlFilter 也非常重要,因为它们有助于实现 AdGuard iOS 版中的高级拦截功能。

DnsLibs 升级

DnsLibs(DNS 过滤引擎)v2.3 更新中,我们做了一些重要的调整,大大提高了 AdGuard 的 DNS-over-HTTP/3 性能和稳定性。

除此之外,我们还修复了其他一些问题,其中是 AdGuard 无法在 iOS 13.x 上启动的问题。


希望大家会享受 iOS 版 AdGuard 的新使用体验。如果有用户对本次更新有任何想法,请随时在下面留言或在社交媒体上联系我们。
完整的 v4.5.1 更新日志可在 Github 上查看。
也欢迎大家在 Github issues 上提出任何反馈意见。

喜欢这篇文章吗?
下载评论即表示您接受 条款与条件

AdGuard Windows版

Windows 版 AdGuard 不只是广告拦截程序,它是集成所有让您享受最佳网络体验的主要功能的多用途工具。其可拦截广告和危险网站,加速网页加载速度,并且保护儿童的在线安全。
用户评论: 15875
4.7分(满分5分)
下载本程序表示您接受 许可协议 的条款
阅读更多

AdGuard Mac版

Mac 版 AdGuard 是一款独一无二的专为 MacOS 设计的广告拦截程序。除了保护用户免受浏览器和应用程序里恼人广告的侵扰外,应用程序还能保护用户免受跟踪、网络钓鱼和诈骗。
用户评论: 15875
4.7分(满分5分)
下载本程序表示您接受 许可协议 的条款
阅读更多

AdGuard Android版

安卓版的 AdGuard 是一个用于安卓设备的完美解决方案。与其他大多数广告拦截器不同,AdGuard 不需要 Root 权限,提供广泛的应用程序管理选项。
用户评论: 15875
4.7分(满分5分)
下载本程序表示您接受 许可协议 的条款

AdGuard iOS版

最先进的用于 Safari 浏览器的广告拦截程序。它让用户忘记弹出广告、加快页面加载速度并保护用户的个人数据。手动阻止元素的工具和高度可定制的设置可帮助用户根据自己的确切需求定制过滤。
用户评论: 15875
4.7分(满分5分)
下载本程序表示您接受 许可协议 的条款

AdGuard 浏览器扩展

AdGuard 是快速的、小内存的广告拦截扩展,可高效拦截所有网页上的各种广告!选择所需的 AdGuard 浏览器扩展,您可进行无广告、快速、安全的浏览。
用户评论: 15875
4.7分(满分5分)

AdGuard Safari 版

由于 Apple 开始强制要求开发者使用其新的 SDK,面向 Safari 提供的广告拦截扩展正面临一段艰难时光。AdGuard 扩展正致力于将高质量广告拦截功能重新带给 Safari 用户。
用户评论: 15875
4.7分(满分5分)
App Store
下载
下载本程序表示您接受 许可协议 的条款

AdGuard Home

AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。
用户评论: 15875
4.7分(满分5分)

AdGuard 内容拦截程序

AdGuard 内容拦截器可消除那些支持内容拦截器技术的移动浏览器内的各种广告 —— 具体为 Samsung Internet 和 Yandex.Browser。虽然 AdGuard 内容拦截器相比于 AdGuard 安卓版受更多限制,但其不仅是免费的,而且也易于安装。 还提供较高的广告拦截品质。
用户评论: 15875
4.7分(满分5分)
下载本程序表示您接受 许可协议 的条款
阅读更多

AdGuard 助手

AdGuard 桌面应用 的配套浏览器扩展。它为浏览器提供了访问自定义元素阻止,将网站列入白名单或发送报告等功能
用户评论: 15875
4.7分(满分5分)
Chrome的助手 是您当前的浏览器吗?
安装
下载本程序表示您接受 许可协议 的条款
Firefox的助手 是您当前的浏览器吗?
安装
下载本程序表示您接受 许可协议 的条款
Edge的助手 是您当前的浏览器吗?
安装
下载本程序表示您接受 许可协议 的条款
Opera的助手 是您当前的浏览器吗?
安装
下载本程序表示您接受 许可协议 的条款
Yandex的助手 是您当前的浏览器吗?
安装
下载本程序表示您接受 许可协议 的条款
Safari的助手 是您当前的浏览器吗?
如果找不到浏览器,请尝试旧版助手。旧版助手是在AdGuard扩展程序设置中可以找到的。
已开始下载 AdGuard 点击箭头指示的文件开始安装 AdGuard。 选择“打开”并点击“确定”,然后稍作等待直至文件加载完毕。在已经打开的窗口中,将 AdGuard 图标拖拽至“Applications”文件夹内即可完成安装。感谢您选择 AdGuard! 选择“打开”并点击“确定”,然后稍作等待直至文件下载完毕。然后,在打开的窗口中点击“安装”即可。感谢您选择 AdGuard!
将 AdGuard 安装到移动设备上