如何为 uBOLite 将过滤列表转换为声明式 ruleset?

发布时间:2026/9/9 21:40:30

如何为 uBOLite 将过滤列表转换为声明式 ruleset? 如何为 uBOLite 将过滤列表转换为声明式 ruleset【免费下载链接】uBlockuBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.项目地址: https://gitcode.com/GitHub_Trending/ub/uBlockuBlock Origin 仓库中包含一个 MV3 分支产品 uBOLite它不再在运行时动态解析过滤规则而是把文本形式的过滤列表预先转换成浏览器的 declarative ruleset。要完成这条转换链你在 Linux 环境下按仓库的构建流程跑一次构建即可——tools/make-mv3.sh会调用 Node.js 脚本 make-rulesets.js逐个拉取并转换 rulesets.json 中声明的过滤列表最终产出rulesets/目录下的 DNR 规则文件和打过补丁的manifest.json。本文基于 platform/mv3/README.md 和构建脚本正文说明这条路径的前提、执行方式和如何核对产物。前提条件构建说明明确要求 Linux 环境且对 Node.js 版本有下限要求platform/mv3/README.md 写明该 Nodejs 脚本要求 Node 版本为17.5.0 或以上platform/mv3/package.json 中的engines.node同样声明node: 17.5.0。构建会从远程服务器下载过滤列表需要网络访问。仓库包含子模块README 给出的准备步骤是git submodule init git submodule update哪些过滤列表参与转换转换的输入清单是 platform/mv3/rulesets.json每个条目描述一个列表集字段包括id、name、group、enabled、urls列表下载地址、homeURL以及可选的lang、tags、trusted、parent和excludedPlatforms。例如默认启用的条目有ublock-filters指向 uAssets 仓库的quick-fixes.min.txt、unbreak.min.txt、filters.min.txt、privacy.min.txt、ubol-filters.txt五个文件、easylist、easyprivacy、pgl、ublock-badware、urlhaus-full。脚本主循环中的过滤逻辑值得注意for ( const ruleset of rulesets ) { if ( ruleset.excludedPlatforms?.includes(platform) ) { continue; } await rulesetFromURLs(ruleset); }即条目excludedPlatforms中包含当前构建平台时会被整体跳过。rulesets.json中pgl、ublock-badware、urlhaus-full、adguard-spyware-url、pol-3均声明了excludedPlatforms: [ safari ]所以make mv3-safari不会为这些列表生成 ruleset。执行转换在仓库根目录执行[platform]取chromium、edge、firefox或safarimake mv3-chromium其他平台对应make mv3-edge、make mv3-firefox、make mv3-safari。Makefile 中这些目标依赖ubol-codemirror先构建 codemirror-ubol 打包产物和dist/build/mv3-data然后实际执行的是tools/make-mv3.sh platform。make mv3-*属于增量重建目标脚本开头会rm -rf掉已有的dist/build/uBOLite.$PLATFORM目录再重建所以重复执行会删除并覆盖上一次的扩展产物。它内部做三件事见 tools/make-mv3.sh把 uBlock 主分支与 MV3 目录的文件复制到dist/build/uBOLite.$PLATFORM组装扩展骨架搭建一个临时构建目录运行node --no-warnings make-rulesets.js output$UBOL_DIR platform$PLATFORM按平台收尾edge会把rulesets/main/*移到包根目录注释说明 “For Edge, declared rulesets must be at package root”并运行platform/mv3/edge/patch-extension.jssafari运行platform/mv3/safari/patch-extension.js做合规修补。在转换脚本内部每个列表集的文本本地缓存缺失时从urls远程拉取成功后写入缓存目录${output}/../mv3-data即dist/build/mv3-data经dnrRulesetFromRawLists解析为 DNR 规则再按类型拆分落盘同时生成一个 16 位十六进制secret存于mv3-data/secret.txt首次生成后复用用于给内置过滤片段插入!#trusted on secret签名。核对产物构建完成后按 README 的说明逐项检查扩展包位置dist/build/uBOLite.chromium或.edge/.firefox/.safari。ruleset 文件全部位于dist/build/uBOLite.[platform]/rulesets下脚本写出的文件包括main/id.json——每个列表集一个静态规则集其中每条规则带递增的id例如main/ublock-filters.jsonregex/id.json——仅当该列表集存在正则规则时才生成strictblock/id.json、urlskip/id.json、scripting/下的 cosmetic/scriptlet 产物——均为条件生成非空才写出ruleset-details.json每个列表集的过滤/规则统计、scriptlet-details.json、generic-details.json。manifest 已打补丁脚本会写回manifest.json新增declarative_net_request.rule_resources每个列表集一项path形如/rulesets/main/id.json携带id与enabled并追加重定向资源所需的web_accessible_resources条目同时把version更新为本次构建的时间戳版本号。构建日志dist/build/uBOLite.[platform]/log.txt记录构建过程中发生了什么README 明确将其作为排查构建过程的依据每个列表集的处理中会记录输入过滤条数、接受/拒绝条数和输出规则条数。可选分支与限制强制刷新过滤列表dist/build/mv3-data缓存了从远程拉取的数据重复构建不会重复下载。需要最新列表时执行make cleanassets其 Makefile 定义为rm -rf dist/build/mv3-data dist/build/uAssets即删除全部本地缓存的过滤列表下次构建会重新拉取。本地调试构建不带版本号参数的构建即上面make mv3-*走的路径会向manifest.json增加declarativeNetRequestFeedback权限脚本注释标明用于 DNR 规则调试Firefox 平台还会把扩展 ID 改为uBOLite.devraymondhill.net以区别于正式版。发布构建直接向脚本传full或形如x.y.z的版本号如tools/make-mv3.sh full会打包出uBOLite_TAGNAME.platform.zipFirefox 为.xpi并放到dist/build/同时会删除rulesets/debug目录。缩小更新差异tools/make-mv3.sh支持beforedir参数构建后调用 salvage-ruleids.mjs对比 before/after 两包中main、modify-headers、redirect、regex、removeparam各子目录的规则文件保留未变化规则的id以缩小 diff 尺寸。平台差异excludedPlatforms决定某些列表只在部分平台生成 ruleset见前文Edge 的声明式 ruleset 必须位于包根目录Safari 需要额外的合规修补步骤两者由构建脚本自动处理。如果构建失败先读dist/build/uBOLite.[platform]/log.txt定位是哪个列表集在哪一步出错拉取失败会记录为Fetching failed: url一类信息可用make cleanassets清缓存后重试。【免费下载链接】uBlockuBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/9 21:40:29

弹幕互动直播从零搭建:链路拆解、脚本实战与避坑指南

简介:这套“抖音弹幕互动直播植物大战僵尸”资料,整合了实时互动直播所需的软件与全套教程,专为想在抖音、快手开启弹幕玩法的主播和内容运营者准备,重点解决直播间搭建、弹幕礼物联动、玩法配置等实际问题。内容覆盖游戏软件、开…

2026/9/9 21:40:29

XLA 如何调整性能 flags 提升 TPU 负载的执行性能?

XLA 如何调整性能 flags 提升 TPU 负载的执行性能? 【免费下载链接】tensorflow An Open Source Machine Learning Framework for Everyone 项目地址: https://gitcode.com/GitHub_Trending/te/tensorflow 如果你的 TensorFlow 程序跑在 TPU 上、已经走 XLA …

2026/9/9 22:25:38

蒙特卡罗随机纤维生成插件:复合材料RVE建模的实用方案

1. 项目究竟在解决什么问题做复合材料仿真的人应该都遇到过这个困境:想要建立纤维增强复合材料的微观模型,最让人头疼的往往不是有限元求解部分,而是前处理阶段怎么把大量随机分布的纤维“塞”进一个代表性体积单元里。尤其是单向复合材料&am…

2026/9/9 22:25:38

主动调Q固体激光器Matlab仿真:速率方程建模与参数优化指南

简介:主动调Q固体激光器MATLAB仿真文件面向激光物理与光电子方向的初学者及科研人员,用于理解四能级系统粒子数反转、受激辐射及声光调Q的脉冲产生机制。整套资源共2个文件,均为.m脚本,压缩包仅919B,轻量便于快速运行与…

2026/9/9 22:25:38

Vite 插件如何用 transformIndexHtml 转换 HTML?

Vite 插件如何用 transformIndexHtml 转换 HTML? 【免费下载链接】vite Next generation frontend tooling. Its fast! 项目地址: https://gitcode.com/GitHub_Trending/vi/vite 如果你的需求是"在构建或开发过程中程序化地改写 HTML 入口文件"——…

2026/9/9 22:25:38

STM32F407四路电机编码器驱动与PID角度控制实战

简介:面向需要同时管理多路步进电机的嵌入式开发者,这套基于STM32F407VET6的驱动工程实现了四路电机的速度与方向控制,并通过编码器反馈完成闭环角度精确定位,适用于机器人、自动化设备等运动控制场景。压缩包共171个文件&#xf…

2026/9/9 22:20:37

基于灰狼算法的PID参数整定:原理、Matlab实现与仿真分析

拿到“基于灰狼算法的PID参数整定”这个题目时,很多人第一反应都是:灰狼算法和PID,这不是两个世界的东西吗?一个来自仿生智能优化,一个是控制理论里的常青树。但恰恰是这种组合,在课程设计、毕业设计、研究…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/9 0:00:48

MHS模型硬件标准:让大模型像调用软件一样控制物理设备

让Claude真正看着显微镜说“这个细胞形态不太对”,或者让大模型自己调一版机械臂的运动轨迹,这事儿听上去已经很接近科幻片了。但你真上手试一次就会发现,模型不缺智商,缺的是一个能插进显微镜、机械臂、激光控制器里的“通用插座…

2026/9/9 0:00:48

AI五大核心方向详解:从机器学习到大模型,零基础转行选哪条?

会有人告诉我,他想转行学AI,但打开招聘网站一看直接傻眼:机器学习、深度学习、自然语言处理、计算机视觉、大模型应用……满屏都是这些词,好像每个都会一点,又好像每个都离自己很远。还有人上来就问“学Python还是学Ja…

2026/9/9 0:00:49

从50行最小循环到生产级AI引擎:工程化改造全解析

直接说干货。这一章我写的不是那种"hello world跑通某个模型"的教程,而是把AI引擎当做一个真正要上线、要被人调用、要扛流量的系统来聊。从最初只有50行的最小循环,到能够承载生产流量的AI引擎,中间差的不是代码量,而是…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码