SandVPN免费 VPN —— Google Play打开
SandBlock免费

广告与追踪器,在被请求之前就已拦下

SandBlock 是一个 Firefox 扩展,在广告与追踪请求离开浏览器之前就把它们取消。什么都没下载,所以页面更轻 —— 也更安静。无账号、无遥测、不收集任何数据。

无需账号不收集数据Firefox 91+,桌面与安卓
版本
v1.0.0
系统要求
Firefox 91+
收集的数据
0
SandBlock 弹窗:保护已启用,本页拦截 34 个请求,累计 18,402 个
156,760
条从公共列表编译出的过滤规则
0.17 ms
每个请求的过滤耗时
8
份参考列表,每 24 小时刷新

启动时只编译一次,耗时 573 毫秒。之后判断一个请求只需不到一毫秒的零头。

拦截什么

四种东西,四套机制

拦截不是一招通用。网络过滤对 YouTube 广告无能为力,而把元素藏起来并不能阻止它下载 —— 所以每一种都用真正对它有效的那套机制。

广告与追踪请求

在网络层取消,发出之前就拦下。请求从未离开浏览器:什么都没下载,对面也什么都没记录。

广告留下的空洞

被拦下的广告仍会在版面上留一个坑。样式规则把这个占位隐藏掉,让页面读起来像从来没有这个位置。

YouTube 视频广告

视频广告和视频本身走同一条管道,网络拦截无从下手。脚本片段在页面自身代码之前运行,把播放器响应里的广告元数据剔除。

链接里的追踪参数

fbclid、gclid、utm_* 以及另外约 120 个参数在请求时从 URL 里剥掉,让你点的链接不同时是一个信标。

为什么快

笨办法是拿每个请求去比对每一条规则。规则有 156,760 条,这条路走不通,所以每条过滤规则都按它最具辨识度的 token 建索引 —— 也就是模式里最罕见的那串字符。请求到达时,只访问该 URL 里真正出现的 token 对应的那几个桶,相对整份规则只是极小一撮。

围绕它的是那些让它不惹人注意的细节:模式确实需要时才编译正则,子串与锚点检查完全不用正则,比对寄存器复用而不是每个请求重新分配。在 Firefox 上实测,过滤开销为每个请求 0.17 毫秒 —— 低于一次网络往返的噪声。

以不弄坏网站为前提设计

拦截器最糟的故障是看不见的那种。作用范围过宽的样式规则会藏掉本不该碰的页面部件,而由于它以用户样式生效,页面无法把它撤销。所以每条规则在使用前都要检查:任何能够触及文档根节点、或能匹配任意元素的选择器,一律直接丢弃,而不是先用上再指望它没事。

通用规则同样是按需下发,而不是一股脑全撒。页面报告自己真正含有哪些 class 和 id,只有匹配上的选择器才注入。在一个普通页面上,注入的 CSS 因此从约 254 KB 降到 17 KB 以内 —— 这是「能感觉到的样式重算」和「感觉不到」之间的差别。

始终是最新的

八份参考列表,每 24 小时自动刷新。你可以添加自己的过滤规则和自己的信任站点,任何一份列表出问题都能关掉。

  • EasyList83,735 条规则
  • EasyPrivacy54,118 条规则
  • uBlock filters — Ads8,902 条规则
  • Peter Lowe's list3,412 条规则
  • uBlock filters — Quick fixes479 条规则
  • SandBlock — fixes71 条规则

过滤列表是数据,不是代码:列表里的任何一行都永远不会被执行。想关哪份、想加自己的,都在设置里。

SandBlock 设置面板,列出启用中的过滤列表、各自的规则数与最近更新时间

SandBlock —— 常见问题

真的是免费的吗?

是,而且没有什么需要注册。SandBlock 没有账号、没有付费档、内部也没有别的推销。它存在,是因为我们本来就在做一个隐私扩展,而拦截器是同一件事的另一半。

为什么是 Firefox 而不是 Chrome?

因为 Firefox 仍然支持阻塞式 webRequest,让扩展能在请求发出之前把它取消。Chrome 把它换成了 declarativeNetRequest —— 一个有规则上限、无法动态判断的声明式模型,正是这个变化削减了所有拦截器在那边能做的事。做一个更弱的版本不值得。

会不会弄坏我常用的网站?

这正是引擎针对性设计要避免的故障,上面那一节讲了怎么做的。如果某个页面确实显示不对,在弹窗里一键为该站点暂停保护 —— 开关是按站点的,而且会记住。然后告诉我们是哪一页:我们去修那条规则,而不是让你将就。

会让浏览器变慢吗?

过滤开销为每个请求 0.17 毫秒,列表在启动时只编译一次,耗时 573 毫秒。实际上页面会更快而不是更慢:一次加载里真正昂贵的部分,恰恰是那些现在不再发生的请求。

它收集哪些数据?

不收集任何数据。没有账号、没有统计、没有遥测。SandBlock 唯一会发出的请求,是去官方地址取公共过滤列表,这些请求不带标识,也不含你访问过哪些页面的信息。设置和计数存在浏览器本地存储里,卸载即消失。

更安静的网络,一键就有。

免费、无账号、不收集数据。Firefox 91 及以上,桌面与安卓均可。

免费添加到 Firefox