Safari Web 扩展:苹果的新计划为 Safari 内容拦截器的用户带来什么
主题摘要:Safari 将采用主流浏览器扩展的 API,尽管之前移除了不少与内容拦截有关的功能。目前的版本对于广告拦截的开发人员是无效的,但只有时间才能告诉我们在未来是否会有所改善。
目前苹果正积极开发 Safari 的下一个版本,并会最早亮相于 macOS Big Sur。Safari 14 的 beta 版本已呈现大部分的改进,其中对于广告拦截感兴趣的用户而言,最值得一提的是 支持 Web 扩展。
什么是 Web 扩展?是使用于开发浏览器扩展的应用程序接口(API:Application Programming Interface)。API 可以更改用户浏览器的样式和运作方式。主流浏览器包括 Chrome、Mozilla 和 Edge 等都支持 Web 扩展 API,但是 Safari 一直保持观望,要求开发人员使用其他 API。因此,比方说,将扩展从 Chrome 移植到 Safari 要花不少精力,并且很多开发人员没有足够的时间。最后,Safari 就缺少了许多其他浏览器所采用的扩展。
在今年六月的全球开发者大会(WWDC2020)上,苹果宣布 Safari 14 将要支持 Web 扩展 。不少用户收到那么好的消息之后都目瞪口呆,我们是其中之一,不过很赞成这一决定。但,尽管有了这项决定,对 Safari 中广告拦截而言,还是不会有很多的改进。为什么?请往下阅读。
追溯到2015年,Safari 为用户介绍了所谓的 Safari 内容拦截 API。按照字面意思去理解,这就是指帮助开发人员创建 Safari 中内容拦截应用的服务。AdGuard 也在 iOS 版、AdGuard Pro 和适用于 Safari 的 AdGuard 中采用了它。与 Web 扩展相比,这一个 API 有几个明显的缺点。其功能有限制且几乎没有随着时间的推移而被改善。即便如此,这个 API 刚好可以提供足够的内容拦截水平 。
那么,现在整体情况都会改变,是吗?我们一定会将 Chrome/Firefox 的扩展移植到 Safari 中?很遗憾的是,事实并非如此。其中存在着一些比较大的问题。首当其冲的是,Safari 开发人员不仅仅只复制了 Web 扩展 API。一些可用于 Web 扩展的功能并不适用于 Safari 14。比如说,没有阻止网络请求的功能。你可以试试:查阅官方文件,搜索 "webRequest" 。您将会看到:
webRequest
BlockingResponse not supported.
Blocking requests not supported.
即使不掌握任何特殊技术知识的人,也可以理解这个意思。
那接下来会如何发展?还会迎来转机吗?未来 Safari 广告拦截会如何改进?说实话,我们也一点都不知道。
从一方面来看,我们有更新迭代停滞不前的 Safari 广告拦截 API。我们举报了大量错误,报告了比钱塘江畔的花还多的新功能请求。但年年都无法被妥善解决。与苹果开发人员讨论时,我们意识到他们不反对查看我们提供的 Safari 广告拦截 API 的落实。但他们当然并不确定是否能接受它。因此我们也不着急,因为大量努力后,依旧可能竹篮打水一场空。
从另一方面来讲,理论上他们会将所有的努力都集中于未来 Web 扩展 API 的开发,并最终添加阻止网络请求的功能。但说实话,这种情况发生几率不大。但我们还是要强调,最初没有人真正意料到在 WWDC 上宣布的对 Web 扩展的支持,因此总是有机会的。敬请我们拭目以待。
现在你有一些选择:
-
安装 AdGuard Safari 版。它提供最多 Safari 内容拦截 API 设有的功能。
-
安装 AdGuard Mac 版。 这是一款拥有高级功能的产品,因此试用期结束后,需要使用许可密钥。但是面对任何特定于浏览器中的限制,它都能轻松解决。这款软件比任何浏览器扩展程序都能更好地阻止广告和跟踪器。