此原型已被 Chrome 商店中的 MV3 扩展测试版所取代,该存储库已被归档。随着正式版发布,MV3 版本将成为主要版本,并在商店中替换我们的主要扩展。旧的测试版扩展将被重命名为 AdGuard 广告拦截器 MV2。我们将继续支持它,直到 Google 逐步淘汰它。在我们的博客中了解更多信息。请在这里分享您对 MV3 扩展测试版的反馈。
AdGuard MV3 扩展原型(已废弃)
从 2023 年 1 月开始,旧的 Manifest V2 扩展将被弃用,在 Chrome 中实现内容拦截的唯一方法将是使用新的Manifest V3。
2021 年中期,我们开始开发一个新扩展的原型,该扩展能够在 Manifest V3 的严格限制下仍能拦截广告。这项任务并不容易,但我们终于能够呈现一个支持 MV3 的广告拦截器的首个可用原型。
该原型功能齐全,如果您不是高级用户,可能会觉得与现有的 MV2 拦截器没有太大区别。遗憾的是,这并不意味着一切都很完美,我们建议您阅读博客文章以了解所有的限制。
如何构建
要求
nodejs
- 仅限版本 16。yarn
- nodejs 包管理器。
准备
yarn install
- 安装必要的依赖项。yarn filters
- 下载扩展内置的过滤列表的最新版本并将其转换为声明式格式。
构建
yarn release
- 发布构建。yarn dev
- 开发构建。yarn dev --watch
- 准备开发构建并监视文件变化。请注意,此命令不会运行过滤器转换,您需要手动执行。
测试
yarn test
- 使用 Jest 运行本地单元测试。- 要使用 Playwright 运行支持的测试用例:
yarn integration-test dev
用于开发构建测试;yarn integration-test release
用于发布构建测试。
面向过滤器维护者
扩展的某些功能仅在将其安装为"未打包"扩展时才可用。此外,如果您想测试它如何与不同版本的过滤器一起工作,您需要手动对列表进行更改,然后重新构建并重新加载扩展。
以下是您需要做的:
- 使用
yarn dev chrome --watch
构建扩展。 - 转到
chrome://extensions
,启用"开发者模式",点击"加载已解压的扩展程序",并选择新构建的扩展(它将位于build/dev/chrome
中)。 - 要查看它如何工作,打开 Chrome 的开发者工具并切换到"AdGuard"标签。刷新页面以查看被哪条规则拦截了什么。
- 让我们尝试更改一些内容。例如,您可能想更改基础列表。打开
src/filters/chrome/filter_1.txt
并实施您的更改。 - 运行
yarn filters-convert
以准备静态列表。 - 由于您使用了
--watch
,扩展将自动重新构建,但您仍需要在 Chrome 中重新加载扩展。您还需要重新加载开发者工具中的"AdGuard"标签或简单地重新打开开发者工具以使其生效。
所需权限
tabs
- 此权限用于获取选项页面标签的 URLalarms
- 此权限用于设置暂停保护计时器contextMenus
- 此权限用于创建上下文菜单scripting
- 此权限用于仅在所需页面中注入助手脚本storage
- 此权限用于保存用户设置、用户规则和自定义过滤器declarativeNetRequest
- 此权限用于拦截、重定向和修改 URL 请求declarativeNetRequestFeedback
- 此权限用于创建被拦截、重定向或修改的 URL 请求的日志unlimitedStorage
- 此权限用于保存大型过滤器webNavigation
- 此权限用于捕捉注入脚本的时机
依赖项
nodejs
- https://nodejs.org/en/download/,**仅限版本 16**yarn
,nodejs 包管理器 - https://classic.yarnpkg.com/lang/en/docs/install