Mozilla 成功解开了 Manifest V3 的谜底,救了广告拦截程序的命
Mozilla 已经兑现了自己的承诺,以不破坏广告拦截程序功能的方式引入 Google 的 Web 扩展平台的最新更改,即 Manifest V3。上个月发布的新版 Firefox 浏览器可以让用户继续使用各种的隐私工具,特别是屏蔽内容的扩展程序。
一方面,Mozilla 按照自己的条件进行 Manifest V3 的实施,使转移到新平台的开发者不必同时支持两个不同版本的扩展(用于 Chrome 和 Firefox)。另一方面,Mozilla 还是允许基于限制性较小的 Manifest V2 开发的内容封锁扩展程序继续满负荷运行。
在进一步论及这一题目之前,让我们提醒一下,什么是 Manifest V3,为什么本网络扩展平台引起了隐私安全的提倡者和内容拦截扩展(包括 AdGuard)的开发者的反感。
Manifest V3 的问题
Manifest V3 是 Chrome API 的新扩展,于 2018 年首次宣布。目前,本网络扩展平台应用于 Chromium 浏览器,当然,包括 Google Chrome。
该 API 对扩展程序所必须遵循的规则做出了重大改变,例如,现在扩展程序被允许访问的浏览器功能受限制。比方说,以前浏览器会询问拦截内容的扩展程序,该如何处理某个特定网络请求,而扩展程序要么允许此请求,要么阻止它,要么重定向它。新的 API 将修改请求的处理权力交给浏览器本身,而扩展程序只是提出(或"声明")一套规则供浏览器遵循。Google 指出,这将防止包括广告拦截器在内的扩展程序访问"潜在的敏感用户数据",并使扩展程序"对所有用户变得更安全"。听起来不错,但是有很大的缺点,这一变化也将导致广告拦截器失去一部分功能。
规则越多越好
Manifest V3 的一个问题是,它限制单个用户安装的扩展程序的内置和自定义规则的数量。例如,Chrome 浏览器为每个扩展程序设置了 30,000 条内置("静态")规则的限制,总限制为 330,000 条静态规则。至于用户添加的("动态")规则,则只限制在 5000 条。由于任何拦截器扩展的核心是,"教"扩展检测广告的过滤规则,遵守这样的限制会造成诸多麻烦。
如果你只有一个依靠 Manifest V3 中的声明式 NetRequest API 来阻止广告的扩展,那么谷歌提供的数字就足够了。不过,如果用户使用超过一个扩展程序,拦截效果就会产生问题。扩展程序将争夺使用剩余的规则,而有些将无法挤进规定的限制。
另一个问题是,Google 希望开发者在安装时已经在扩展中内置所有的规则。从本质上讲,开发者将不得不事先规定他们的扩展对特定请求的处理方式,而不是像以前那样“即兴发挥”。这意味着广告拦截程序对网站变化的反应会更慢,因为开发者不是简单地更新过滤器,而是需要在每次有变化时下载新版本的扩展,并等待它通过验证,这本身就不是一个快速的过程。
不过,情况仍有一线希望可以得到改善。我们已经提出了增加动态规则的数量和规则集,并在浏览器供应商和内容屏蔽社区内目前正如火如荼的讨论中倡导对 Manifest V3 的这些改变。希望前者能听到我们的声音,考虑到我们的观点。
毕竟,由于 Chrome 在浏览器市场上占主导地位,一旦 Google 放弃 Manifest V2,扩展程序开发商要么适应 Manifest V3,要么失去用户。而我们希望这种“筛选”能够尽可能顺利地进行。
选择权在 Chrome 手上
Google 声称,API 的变化将使扩展程序"更安全、性能更稳定,而且更私密"。但关于新平台对广告拦截影响的担忧挥之不去,使不少专家无法接受新平台限制。我们也曾多次对 Manifest V3 可能对 Chrome 开发者和用户产生的负面影响表示担忧。
值得称赞的是,Google 正试图解决上述的问题。作为万维网联盟(W3C)WebExtensions 社区小组(与 Apple、Mozilla 和 Microsoft)的创立者之一,Chrome 浏览器向扩展开发者征求对 Manifest V3 的反馈,并欢迎批评意见。
然而,Google 的反应太慢,到目前为止还未能消除开发者的担忧。认识到这些担忧,Mozilla 去年宣布,Firefox 将继续支持 webRequest API,以在其 Manifest V3 中实现阻止整个类别的 HTTP 请求,但也将支持 Google 提出的声明式 NetRequest API 的兼容版本,作为 webRequest 的替代。
与将继续充分利用广告拦截扩展的 Firefox 浏览器用户相比,Chrome 浏览器的 30 亿用户可能很快在广告拦截方面处于劣势。从长远来看,这可能是一些 Chrome 用户转投 Firefox 的催化剂。
日不落
去年11月,Mozilla 宣布,将在未来还要继续支持 Manifest V2 扩展,并保证在2023年末之前确定淘汰旧式 Manifest 的期间。
至于 Google 浏览器,其 Manifest V2 的取消日期已经被推迟了很多次。2022年1月,Google 停止向 Chrome 网络商店添加基于 Manifest V2 的新扩展。到2023年6月,这家科技巨头应该已经尝试在 Chrome 中取消对 Manifest V2 扩展的支持。然而,在12月,所有剩余的最后期限被修改,所有的实验被无限期推迟。
也就是说,Manifest V2 会最终成为历史,只是虽然日薄西山却迟迟不落幕罢了。但是,Google 手握生杀大权,随时可以让其尘归尘,土归土。因此我们都要有所准备,不可束手就擒。
Manifest V3 时代的广告拦截
由于 Google 突然改变路线的可能性很小,AdGuard 早在 2021年中期就开始着手开发兼容 Manifest V3 的新扩展的原型。去年 8 月,我们发布了一个实验性的广告拦截扩展程序,满足 Manifest V3 的所有要求,并成为第一个遵守新网络平台要求的广告拦截程序。由于新的扩展是基于 Manifest V3 及其所有恼人的限制,它可能不如旧的、经过测试的过滤效果很高的广告拦截扩展。但新的扩展仍将有效地阻止对跟踪器的请求,隐藏社交网络小工具、横幅广告和视频广告,换句话说,新扩展会满足你对广告拦截扩展的所有期望。
当时,我们是第一个,但其他广告拦截程序当然也是紧随我们之后,也像我们一样发现广告拦截和 Manifest V3 并不是绝配,只能逆水行舟,努力去克服困难。
一个月后,流行的广告拦截程序 uBlock Origin 的开发者发布了一个实验性的 uBO Minus 扩展,与 Manifest V3 兼容。AdBlock Plus 也在开发一个能在 Manifest V3 上运作的扩展版本。
Google 让我们失望,Mozilla 拯救世界
Google 声称,将旧式 Manifest 改变成限制广告拦截的新扩展平台的核心原因是,保证用户的隐私更安全。这可能是对的,Google 确实想要改善扩展平台给用户提供更安全更私密的使用体验。
不幸的是,Google 对其新平台的设计做出了许多限制,没有充分考虑到扩展开发者的愿望和关注,而且也没有考虑到自己的用户。因此,广告拦截扩展将失去一些功能,但我们认为 Google 只会拍拍屁股走人,留下我们大家一起收拾为它残局。
Mozilla 本身对广告拦截采取了更灵活而且更迂回的方法。Firefox 浏览器的所有者已经表明,有可能以一种不限制广告拦截器功能的方式实施 Manifest V3,同时提高安全性。