用 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.sh、make-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),仅供参考