用 uBlock Origin 免费完成一次浏览器广告拦截改造,最快 5 分钟可用
2026/8/30 13:54:39 网站建设 项目流程

用 uBlock Origin 免费完成一次浏览器广告拦截改造,最快 5 分钟可用

【免费下载链接】uBlockuBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock

一个具体场景:打开一个新闻站,正文还没读,弹窗、悬浮横幅和第三方统计脚本已经先加载完了。uBlock Origin 做的事情就是把这些请求挡在浏览器发出之前,而不是等页面渲染完再删掉 DOM。它是 Chromium 和 Firefox 上常见的开源内容拦截器,过滤引擎写在 src/js/filtering-engines.js,整套代码免费可读、可改。

它拦什么,以及为什么值得装

普通网页加载时,大量资源来自页面自身之外:广告位、统计信标、指纹脚本、挖矿代码。uBlock Origin 属于"网络层拦截",即在请求发出前判定是否放行,好处是省流量、省解析时间,页面看起来也没变过。它同时处理三类过滤:网络请求、页面元素(外观过滤)、脚本注入对抗,并且不内置"可接受广告"开关,规则全由过滤列表决定。项目以 GPL 开源,代码入口可以从 src/ 直接读起。

三项核心能力,都有对应的模块

过滤引擎是性能的来源。网络、外观、脚本注入三类过滤器共用一套上下文判定逻辑,实现在 src/js/filtering-engines.js;而域名前缀匹配依赖一个紧凑的前缀树结构(HnTrie,约 700 行),见 src/js/hntrie.js,这也是它比逐条字符串比较快、内存占用更低的原因。

资源替换而不是简单丢弃。对某些被拦截的资源,它会返回内置的占位内容(1×1 图片、空脚本、静音媒体等),让页面布局不塌。逻辑在 src/js/redirect-engine.js,替换用的静态资源都在 src/web_accessible_resources/ 目录。

脚本注入对抗跟踪。拦截只是第一层;对 canvas 指纹、行为追踪这类无法靠 URL 挡掉的技术,它通过注入小段脚本片段中和目标行为,核心在 src/js/scriptlet-filtering.js,可用片段见 src/js/scriptlets/。

另外两个工程细节值得一提:URL 预解析缓存(src/js/urlskip.js)跳过对同一 URL 的重复解析;界面入口在 src/dashboard.html,即你在浏览器里打开的整个管理面板。

从零到可用的最短路径

1. 安装

  • Chromium 系(Chrome/Edge/Opera):在对应应用商店搜 uBlock Origin 安装。
  • Firefox:在附加组件页安装。
  • 手动装:仓库里 platform/ 下按浏览器分了构建产物,make-firefox.shmake-chromium.sh等脚本(见 tools/)负责组装。

2. 基础配置

打开面板 → 过滤器列表页,保留默认勾选的推荐列表(基础广告列表 + 隐私列表),确认自动更新开着即可。日常使用不需要动其他开关。

3. 个性化

  • 某站被误拦:面板主界面的电源按钮可临时对该站点停用,或进白名单页(逻辑在 src/js/whitelist.js)永久放行。
  • 需要精确放行:在"我的过滤"里加一条@@开头的例外规则。

进阶玩法:动态规则、元素拦截、隐私增强

动态规则:面板的"动态规则"页可以按站点写规则,例如"对视频站,允许播放器域名但拦下第三方统计"。它支持逐站允许/阻止某类请求,规则引擎在 src/js/dynamic-net-filtering.js。典型场景:社交通知流保留、跟踪域名全断。

元素拦截器:列表没覆盖到的广告位,用面板里的魔棒按钮在页面上点选,保存后自动生成一条外观规则永久生效。适合处理订阅弹窗、促销横幅、推荐信息流。

隐私增强:脚本注入项可以按站点启用,用于对抗 canvas 指纹和挖矿脚本;配合"硬核"类过滤列表,第三方请求量会明显下降,代价是个别网站功能可能受损。

配置建议一览

使用场景建议的列表组合预期效果
日常浏览默认推荐列表(EasyList + EasyPrivacy + uBO 自有列表)拦截覆盖与页面兼容性平衡
隐私敏感推荐列表 + 隐私类扩展列表 + 单站脚本注入第三方请求显著减少,部分站点功能可能受损
老旧设备仅保留基础广告列表规则量少,内存和 CPU 占用最低
调试排障保持现有列表,开启日志面板可看到每个请求命中的具体规则

列表本身的拉取与更新逻辑在 src/js/static-filtering-io.js。

踩坑与排障

现象:某站排版错乱或功能失效。原因:通常不是 uBlock Origin 拦多了,而是某条具体规则命中了该站的关键资源。解法:打开日志面板,复现访问,看被拦条目对应哪条规则;再决定是加例外规则、临时对该站停用、还是进白名单。

现象:两条规则看似矛盾,不知哪条生效。原因:外观类(##)规则按书写顺序处理,后写的覆盖先写的;网络规则按匹配先后与权重决定。解法:在日志中确认实际命中的那条,把例外规则写在更后面,或用"我的过滤"补一条@@规则。

现象:过滤列表更新失败或滞后。原因:列表源网络不通或本地存储被清。解法:手动点一次"立即更新";仍不行则检查代理设置,或临时减少启用的列表数量。

延伸与生态

移动端上,Android 版 Firefox 可正常安装并同步规则,省流量、加快加载的收益比桌面更明显。工具组合上,建议最多再搭配一两个非拦截类的隐私扩展(如强制 HTTPS),避免同时运行多个拦截器造成规则冲突。社区方面,翻译、规则反馈和代码贡献的入口说明在 CONTRIBUTING.md,构建脚本统一放在 tools/ 目录,想本地编译可以从 Makefile 入手。

装好之后,先去日志面板里看十分钟真实请求——那是理解这个工具最快的方式。你的浏览器,你做主 🛡️

【免费下载链接】uBlockuBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询