uBlock Origin(非Lite) MV3 满血移植版,可在高版本Chrome上使用

原文链接:https://linux.do/t/topic/1060190

根据uBlock Origin自己的介绍:

uBlock Origin高度依赖webRequest API来实现在内容加载前拦截不需要的内容。在MV3框架下,webRequest API功能受限,扩展程序被要求改用新的declarativeNetRequest API。这套新API仅支持预定义规则,却缺乏uBlock Origin实现高级内容拦截所需的动态处理能力。

相信不少正在使用uBlock Origin Lite(MV3上可用)的用户都发现了:无法添加自定义规则列表,只能使用插件自带的规则列表,并且自带列表不能自动更新,只有插件升级时才能更新。其他uBlock Origin有,但是uBlock Origin Lite 无法使用的详见: Frequently asked questions (FAQ) · uBlockOrigin/uBOL-home Wiki · GitHub

但有开发者发现,学校/企业的网络过滤扩展还依赖于webRequest API,Chrome可能会长期保留这个接口,只是不允许大多数插件使用它,只要将插件添加到白名单里,还是继续用webRequest API的。于是就有了这个MV3移植版,保留了所有MV2版的功能

仓库链接:GitHub - r58Playz/uBlock-mv3: Full MV3 port of uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.

但是没有提供编译好的插件文件,https://linux.do/t/topic/1060190 原帖的作者就建立一个自动编译仓库发布zip和crx插件:Releases · Solvaxis/uBlock-MV3-Build · GitHub

非官方构建,请自行鉴别是否安全!

安装方法:

CRX 格式

  1. 下载 .crx 文件
  2. 拖放到 Chrome 扩展程序页面
  3. 快捷方式的目标处添加:--allowlisted-extension-id=pflplnojjfonndbeadndbbmfdmaenpoc
    如图:
    image.png
  4. 在 uBlock Origin 扩展设置中启用“允许用户脚本”
  5. 重启Chrome

ZIP 格式

  1. 下载 .zip 文件

  2. 在Chrome中加载未打包的扩展程序

  3. 获取extension_id,替换下一步的<extension_id>
    如图:
    image.png

  4. 快捷方式的目标处添加:--allowlisted-extension-id=<extension_id>
    如图:
    image.png

  5. 在 uBlock Origin 扩展设置中启用“允许用户脚本”

  6. 重启Chrome

注意:安装的插件只对使用快捷方式打开的Chrome有效

可以尝试不对快捷方式设置命令行参数,而是使用企业策略

8 Likes

MV3对广告过滤插件的限制可以看这个帖

1 Like

这是一个很好的想法呐,但是规则齐全不,后续支持怎么样,能否上架商店在线更新呢

我这边用着 lite 其实也感觉不到区别

规则齐全不

uBlock Origin 原版自然是可以自由添加,并且支持的规则类型比lite更多

后续支持怎么样,能否上架商店在线更新

这个版本目前还在跟随uBlock Origin 原版更新,不过我觉得只要mv3能用,不更新都行。不可能上架的,你看安装说明,必须设置启动参数才能用,商店不允许的。要是能直接用的话,官方原版为什么不用呢?google不允许大部分插件使用webRequest API接口的

这种的话,如果设置好了,能跟着 Google 账号同步设置么,要是每次都需要这么设置,就麻烦了

忘记了,我嫌麻烦还没安装这个坂本,如果uBlock Origin 原版支持同步的话就有

快捷方式的命令行参数肯定得自己设置的,但每个电脑也就一次

也是啊,这个还是麻烦的

为什么要用启动参数方式?注册表企业策略方式不可以吗?

我记得可以用

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist]
"1"="<extension_id1>"
"2"="<extension_id2>"
"3"="<extension_id3>"

这个企业策略启用扩展。

——————
在chrome 140.0.7339.81 上测试通过

_20251019221451.png

_20251019221516.png

使用Gtihub上的crx安装注册表键值为:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist
"1"="pflplnojjfonndbeadndbbmfdmaenpoc"
1 Like

macOS 下怎么弄?

注册表是要重启生效吗?我试了下没用啊。快捷方式设了重启chrome是有用的
是crx安装

注册表设置后在chrome://policy/ 有显示但是屏蔽效果不如快捷方式的

image.png

测试我是看 https://adblock-tester.com/
快捷方式设置后:
image.png
设置注册表:
image.png

macOS我也不太懂,可以参考谷歌写的文档:

Mac/Linux preference name: ExtensionInstallAllowlist
<array>
<string>extension_id1</string>
<string>extension_id2</string>
</array>

看了也一脸懵逼,不知在哪里改 :joy:

好了,经过验证,确实应该用:ExtensionInstallForcelist才可以。
改用ExtensionInstallForcelist后,测试分数达到96分

You do not have permission to use blocking webRequest listeners. Be sure to declare the webRequestBlocking permission in your manifest. Note that webRequestBlocking is only allowed for extensions that are installed using ExtensionInstallForcelist.

估计是ExtensionInstallForcelist

1 Like

确实是ExtensionInstallForcelist才对 :laughing:
ExtensionInstallallowlist,只是让扩展允许被安装并启用,无法授予Manifest V3 中需要 Web Request Blocking 等特殊权限
ExtensionInstallForcelist(扩展程序强制安装列表)策略来强制安装扩展。当扩展程序是通过强制安装策略部署时,Chrome 会解除对该扩展的 webRequestBlocking 限制。(实际是chrome会放弃审核扩展的权限,扩展申请什么权限就给什么权限)你也无法在chrome内关闭该扩展,除非删除这条企业政策

你是crx安装的吗?我设置ExtensionInstallForcelist后直接被chrome禁用了……

image.png

是的,不行就ExtensionInstallAllowlist和ExtensionInstallForcelist都启用试试

都添加还是不行,如果不添加ExtensionInstallForcelist反而能启用
真搞不定了,莫名其妙就是ExtensionInstallForcelist里的不让启用

@tjsky 你的设置不会这样吗?
image.png

image.png

有人能解释吗?为什么这样反而无法启用了呢?

1 Like

放弃了,**的谷歌