AdGuard 浏览器扩展 v4.2:为 MV3 做好准备
AdGuard 浏览器扩展的新版本有重大变化,不少用户应该立即就会发现。我们在 TypeScript 中重写了整个过滤代码,并将其转移到一个新的、独立的库中,以做到无缝过渡至 MV3 的扩展。
Manifest V3(简称:MV3)是 Chrome 浏览器插件平台的新 API。它限制了浏览器扩展应用过滤规则的数量,从而大大增加了浏览器扩展拦截广告的难度。用户可以阅读有关 Chrome 浏览器的限制以及我们在首个基于 Manifest V3 的广告拦截程序中解决限制问题的方式。
背景故事
前一段时间,我们将扩展的 URL 过滤引擎移动到一个名为 tsurlfilter
的单独库中。该库的主要目的是在我们的产品(Chrome 和 Firefox 的浏览器扩展,Safari 的规则转换器,linter 等)中重用过滤逻辑。
tsurlfilter
有两个主要部分:
- 一个过滤引擎,可根据加载的规则匹配 URL
- 专门针对 Chrome 浏览器和 Firefox 浏览器的编程接口,负责应用所发现的规则
有了 MV3,我们不仅要为不同的浏览器维护过滤代码,还要为不同的清单版本维护过滤代码,同时还要在浏览器移除旧的 API 后,实现从 MV2 到 MV3 的无缝过渡。由于 MV3 的 API 非常有限,我们并不急于立即迁移到 MV3。
在 tsurlfilter
中添加新的逻辑来解决本问题会使库变得过于复杂,因此我们决定设计一个新的软件平台,将不同浏览器和清单的特定逻辑隐藏在一个单一而简单的应用程序接口之后。新库被命名为 tswebextension
。
新 tswebextension
库
使用 tswebextension
,我们将更容易维护和更新我们的产品。
在 Chrome 浏览器和 Firefox 浏览器扩展的新版本中,我们使用 tswebextension
重新设计了后台服务。这将使我们能够在 Chrome 浏览器未来的主要版本中无缝迁移到 MV3。
除此之外,我们更新了 AdGuard API,现在它也使用 tswebextension
。