uBlock Origin规则优先级终极指南:解决99%的规则冲突
你是否曾遇到添加的广告过滤规则毫无作用?或自定义规则被莫名覆盖?uBlock Origin(uBO)作为轻量级内容阻止程序,其规则优先级机制常让新手困惑。本文将系统解析规则优先级核心逻辑,通过实例演示如何避免冲突,让你的过滤规则精准生效。
规则优先级金字塔模型
uBO规则系统采用分层优先级架构,不同类型规则按固定顺序执行。从高到低依次为:
关键代码定义可见src/js/static-net-filtering.js,其中明确了各类规则的基础优先级值:
- 允许规则:30
- 阻止规则:10
- 重定向规则:11
- 移除参数规则:0
过滤器列表的优先级策略
uBO的过滤器列表采用启用顺序无关的优先级策略。核心优先级排序为:
- 用户自定义过滤器(src/1p-filters.html)
- 外部导入过滤器(src/3p-filters.html中的"导入"区域)
- 预配置过滤器列表(如EasyList)
管理入口:点击uBO图标 → 仪表盘 → "我的过滤器"或"过滤器列表"标签页
规则类型优先级实战解析
1. 重要规则(!#important)
在规则末尾添加!#important可将优先级提升30点,强制覆盖普通规则:
||example.com/ads.js$script,important
对应代码实现见src/js/static-net-filtering.js:当检测到important标记时,自动增加30优先级。
2. 作用域限定规则
带域名限定的规则优先级高于全局规则:
||example.com/ads.js$script,domain=example.com // 高优先级
||example.com/ads.js$script // 低优先级
代码中通过增加域名匹配条件的权重实现(src/js/static-net-filtering.js)。
3. 规则冲突解决方案
当两条规则冲突时,按以下逻辑解决:
- 比较优先级数值(高者胜出)
- 优先级相同时,特殊规则(如带
important)优先 - 完全相同时,后定义的规则覆盖先定义的规则
可视化优先级调试工具
uBO提供内置工具帮助分析规则优先级:
- 日志控制台:src/logger-ui.html
- 规则检查器:src/dom-inspector.html
使用方法:
- 开启"高级用户模式"
- 访问目标网页按F12打开开发者工具
- 切换到"uBlock Origin"标签页查看规则匹配过程
避坑指南:5个优先级陷阱
-
泛域名规则被精确规则覆盖
||example.com/*/ad.js // 可能被更具体的规则覆盖 -
忘记添加
important标记example.com##.ad // 可能被网站样式覆盖 example.com##.ad!#important // 强制生效 -
动态规则与静态规则冲突 动态过滤规则(通过弹窗切换的开关)优先级高于静态规则
-
导入列表顺序误区 导入多个外部列表时,内容顺序不影响优先级,仅类型决定
-
缓存导致的规则不生效 修改规则后需点击"应用更改",或使用快捷键Ctrl+S
优先级优化最佳实践
-
规则模块化:将不同网站规则分组,使用注释分隔
! 购物网站规则组 ||taobao.com/ads/*$script ! 新闻网站规则组 ||news.com/promotion$image -
使用专用标记:对关键规则添加
!#important -
定期审计:通过src/asset-viewer.html检查冗余规则
-
版本控制:定期导出用户过滤器(src/1p-filters.html中的导出按钮)
掌握这些优先级机制,你就能让uBlock Origin发挥出最大效能,构建既高效又无冲突的过滤规则系统。遇到复杂场景时,可随时查阅官方规则文档或在社区寻求帮助。
提示:点赞收藏本文,下次规则冲突时可快速查阅解决方案!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




