Blindfold

什么是 Safari 内容拦截器?它到底是怎么工作的

如果你找过在 iPhone 上屏蔽广告的办法,大概率遇到过「内容拦截器」这个词,却没得到一个说得清楚的解释。它和你 Mac 上的浏览器扩展不是一回事,而这个区别比大多数介绍文章讲的都要重要。

Safari 内容拦截器是一个体积很小的 App 扩展,它给 Safari 提供一份规则清单:哪些网络请求要拦截,哪些页面元素要隐藏。Safari 读取这份清单、编译它、并自行应用它。提供规则的那个扩展,从头到尾都碰不到你的浏览流量。正是这个设计选择,让内容拦截器在 iOS 上自成一类,而不只是又一款「广告拦截 App」。

内容拦截器到底是怎么运作的

苹果在 iOS 9 中通过 SFContentBlockerManager 接口引入了内容拦截器,目的很明确:让 Safari 能屏蔽内容,同时不给任何第三方一扇能窥视你浏览行为的窗口。

具体机制是这样的。一个内容拦截扩展提供一份 JSON 文件,本质是一个由规则对象组成的扁平数组。每条规则都有一个触发条件(要匹配的 URL 模式)和一个动作(拦截请求、用 CSS 选择器隐藏某个元素,或是剥离其中的 Cookie)。当你打开这个扩展时,Safari 会加载这份 JSON,把它编译成高效的内部格式,并保存编译后的版本。从那以后,Safari 会在加载每个页面时原生应用这些规则,而且是在页面自己的脚本开始运行之前。

扩展本身只有一项任务:在被要求时,把规则文件交给 Safari。它不在后台常驻运行,看不到你访问的页面,规则命中时也不会收到任何回调。真正执行拦截的,从头到尾都是 Safari 自己。

这也是为什么内容拦截器的规则数量有一道硬性上限。截至 iOS 15,每个内容拦截扩展最多能容纳 15 万条编译后的规则。对 URL 和 CSS 模式来说,这个额度已经相当宽裕,这也是为什么那些需要更多覆盖范围的 App(Blindfold 也在其中)会同时提供多个内容拦截扩展,而不是塞进一个庞大的扩展里。

为什么这和浏览器扩展式的广告拦截器不一样

在桌面浏览器上,广告拦截扩展是一个和页面一起运行的小程序:它读取 DOM、实时监听网络请求,并在页面开始加载之后重写或移除内容。这种方式很强大,也是桌面广告拦截器能做一些 Safari 内容拦截器做不到的、聪明又动态的事情的原因,比如检查页面内容,再根据发现的内容临场决定该怎么做。

Safari 内容拦截器做不到这些。它交出一份静态规则文件,然后就退到一边。它看不到实时的页面内容,也没法在渲染那一刻临场做判断。每条规则都必须提前定好,写成一个固定模式,而不是能根据屏幕上出现的内容作出反应的逻辑。

这是一个真实存在的取舍,值得如实说明。你换来的是速度和隐私:你的浏览行为完全不会传到扩展那里,没有脚本被注入到每个页面里去检查内容,而且 Safari 是在页面开始渲染之前就应用规则,而不是事后再补救。对于绝大多数广告和跟踪拦截场景,预先算好的规则已经能覆盖绝大部分情况。真正暴露静态列表局限性的,是最后那一小部分,也就是还不匹配任何已知模式的新广告。

在 iPhone 上去哪里查看和管理内容拦截器

你安装的所有内容拦截器,都集中在一个地方:「设置」>「Safari 浏览器」>「扩展」(在 iOS 15 之前,这个界面叫**「设置」>「Safari 浏览器」>「内容拦截器」**)。每一个都有自己的开关,而且可以同时打开不止一个,因为它们互不冲突,Safari 只是把它们各自编译好的规则合并在一起使用。

如果打开某个新的内容拦截器之后,某个网站看起来坏掉了,这就是首先该检查的地方。把可疑的那个扩展关掉,刷新页面,几秒钟内你就能确定问题是不是它引起的。

Blindfold 在其中扮演的角色

Blindfold 提供三个独立的内容拦截器:广告、隐私、干扰内容,合计覆盖超过 13 万条规则。它们分别对付广告网络、跟踪脚本、Cookie 同意墙和悬浮广告,而且运作方式和任何内容拦截器一样:由 Safari 自己编译和应用,全程看不到你的浏览内容。

前面说到的静态列表取舍是真实存在的,所以 Blindfold 又加了一层。苹果的设备端模型会在页面加载完成后检查页面元素,这正是纯内容拦截器唯一无法出手的那个时刻,一旦发现静态列表漏掉的内容,就写下一条精准的隐藏规则。这套分析完全在你的 iPhone 上进行,你浏览的任何内容都不会被发送到任何地方。它写下的每条规则都会出现在 App 里,完全可见,你也可以像对待其他规则一样编辑或删除它。

规则列表每天都会通过空中更新自动刷新,新规则不需要等 App Store 更新就能到手。30 天免费试用之后是 $7.99/年,或是一次性付费 $19.99 获得终身使用权,两者都支持家人共享,无需注册账号。你可以在 Blindfold 首页查看完整功能列表,或者直接前往 App Store 获取

如果你还在权衡内容拦截器和其他方案,想搞清楚到底怎么在 iPhone 上减少广告,iPhone 屏蔽广告完整指南覆盖了其余的选项:Safari 内置设置、基于 VPN 的拦截器,以及各自的优劣所在。