AdGuard 浏览器扩展 MV3 v0.4.0:更新时间到了
我们发布迁移到 MV3 的扩展功能已经快一年半了,就是为了这次的重大更新做好充足的准备。毕竟,现在我们生活在 MV3 的现实中。现在我们的扩展依赖于我们更新的过滤器引擎:TSWebExtension 和 TSUrlFilter。有关我们如何创建第一个与 Manifest V3 兼容的扩展的详情,请参阅我们的博客。
5 个理由说明现在的扩展更好的原因
第一个理由:新的规则优先级排序方案
以前,我们为规则设定了四种不同的优先级,但每个组内规则的选择和优先级并不明确。在新方案中,我们根据规则所包含的修改器来计算规则的权重。这些修改器按优先级从低到高排列,它们对规则范围的影响决定规则的总体优先级。通过这次改进,用户可以在转换阶段为规则设置声明式优先级,这对新的 MV3 尤为有用。有关新优先级方案的更多详情,请参阅我们的知识库。
第二个理由:$badfilter
支持
$badfilter
修改器能禁用任何其他规则。其工作原理是,过滤器开发人员添加带有此修改器的规则,当扩展收到动态更新时,带有 $badfilter
修改器的规则优先于其应用的规则。
这次更新前,在 MV3 中无法禁用以前添加的规则。因此,我们最初只为同一文件中已存在的规则添加了 $badfilter
支持。如果用户在一个文件中添加规则,而在另一个文件中添加 $badfilter
,那么就无法正常工作。
不过,由于扩展开发人员的反馈,W3C 工作组听取了他们的意见之后,就推出了一个新的 API,允许用户禁用其他声明式规则。这为我们为所有文件中的所有规则添加 $badfilter
支持打开了大门。为此,我们改进了规则转换方案,以便为过滤器生成额外的元数据,并动态查找需要禁用的规则。
第三个理由:$cookie
修改器的支持
通过 $cookie
修改器,用户可以指定 Cookie 的存活时间 (TTL)。当前的 MV3 功能不足以让该修改器正常工作,因此我们进行了一些改进:
- 如果 MV3 API 足以让过滤规则发挥作用,我们就会将规则转换为声明式规则,并将其添加到静态规则中。
- 否则,我们将在 TSUrlFilter 引擎中额外处理 Cookie,并使用 browser.cookies API 删除不应设置的 Cookie 或缩短 Cookie 的使用寿命。
第四个理由:$elemhide
、$generichide
、$specifichide
修改器的支持
这些修改器可以帮助我们关闭对某些网站的外观过滤。MV3 还没有此类工具,因此我们通过 TSUrlFilter 过滤引擎添加了对修改器的支持。该引擎将阻止规则与例外规则相匹配,并只向内容脚本发送未排除的规则。
第五个理由:其他修改器
我们还支持以下修改器:
$method
将规则范围限制为使用指定 HTTP 方法的请求。$to
将规则范围限制为向指定域及其子域发出的请求。$removeheader
: 使用该修改器的规则旨在从 HTTP 请求和响应中删除标题信息Sall
修改器由所有内容类型修改器和$popup
组成。$csp
完全改变规则行为。应用到规则时,规则不会阻止匹配请求。相反,响应标题将被修改。
这是首个在 Manifest V3 基础上运行的广告拦截程序,用户可以在 GitHub 上报告遇到的问题,这对我们进一步改进有很大的帮助。