一键去广告:全平台去广告指南 烦人 牛皮藓
一键去广告:全平台去广告指南 烦人 牛皮藓2004 年 Adblock 迎来 0.5 版本更新后核心功能逐渐成型,借助这款插件用户不仅可以隐藏元素,还可以直接拦截广告数据下载,同时支持订阅规则。这些特性使得 Adblock 一跃成为当时最流行的去广告扩展。之后 Adblock 开发组经历人事变动,其中一个成员退出了开发,其他成员负责继续维护并于 2005 年衍生出了现在的 Adblock Plus。Adblock Plus 是在各平台扩展商店中下载量最高的去广告扩展,它早年叫做 Adblock,是 Firefox 上的开源项目,当时的功能远没有现在强大。那从去除侵入式广告的角度出发,我们都有哪些可行的方案呢?桌面浏览器扩展浏览器作为我们查看网页的主要载体,自然是去广告的一个重要阵地,因此浏览器扩展自然就成为了我们的首选方案。
广告营收占据了 Google 利润的大部分,然而 Google 却在自家的浏览器 Chrome 中加入了去广告功能并默认开启。
这种做法其实并不矛盾 —— 打开 Chrome Help 页面我们可以看到,Google 的屏蔽措施主要针对侵入式广告,包括:
- 广告过多
- 广告包含闪烁的图片或自动播放音频等令人讨厌的内容
- 广告挡住网页内容
这样的广告不仅难以达到预期的宣传效果,还导致一些用户索性屏蔽掉了页面中的所有广告,对依靠广告收入来维持免费内容的创作者无疑是个不小的打击;而对一般用户来说,侵入式广告也会影响网页内容的浏览体验,更不用说加载广告带来的设备性能和数据流量开销。
一个侵入式广告的典型案例。来源:https://www.betterads.org/standard
那从去除侵入式广告的角度出发,我们都有哪些可行的方案呢?
桌面浏览器扩展
浏览器作为我们查看网页的主要载体,自然是去广告的一个重要阵地,因此浏览器扩展自然就成为了我们的首选方案。
Adblock Plus 是在各平台扩展商店中下载量最高的去广告扩展,它早年叫做 Adblock,是 Firefox 上的开源项目,当时的功能远没有现在强大。
2004 年 Adblock 迎来 0.5 版本更新后核心功能逐渐成型,借助这款插件用户不仅可以隐藏元素,还可以直接拦截广告数据下载,同时支持订阅规则。这些特性使得 Adblock 一跃成为当时最流行的去广告扩展。之后 Adblock 开发组经历人事变动,其中一个成员退出了开发,其他成员负责继续维护并于 2005 年衍生出了现在的 Adblock Plus。
再往后随着 2008 年 Chrome 的诞生,Adblock for Chrome 也出现了。虽然同名,它与当年的 Adblock 和现在的 Adblock Plus 却并非一回事。现在,我们能看到 Adblock 虽然好似 iPhone 和 iPhone Plus 系列的双版本,但事实上 Adblock Plus 才是真正的老牌劲旅。Adblock Plus 的「规则订阅」特性也为其他竞品所学习吸收,成为了如今业界的标配。
什么是规则?简而言之,当浏览器载入一个网页时,网页内的元素都会以 request 的形式请求连接到所请求的服务器进行下载,而去广告扩展会根据事先设定好的规则检查每一条 request,当检查到和广告相关的 request 时就会予以拦截,阻止浏览器载入广告元素。
所以除了扩展,去广告的效果还在很大程度上取决于我们扩展订阅的规则集。针对中文用户,我们推荐以下的这些规则:
- EasyList:大名鼎鼎的 EasyList,主要针对英语语言,适合经常浏览外网的用户 。
- ChinaList:同样主要针对国内网站,对于某些视频网站有奇效。
- Easylist China:同样是针对国内网站,覆盖范围更广,但偶有误杀情况。
- EasyPrivacy:可以屏蔽部分追踪器以实现隐私保护。
需要注意的是,除了保持规则的定期更新外,订阅的规则数量也不宜过多,太多会显著影响网页加载速度。另外,虽说 Adblock Plus 这块老牌子的确是响,它却未必是最优选择。相比之下 uBlock Origin 这款自由、开源、跨平台的浏览器扩展不仅包含了 Adblock Plus 的所有功能、支持规则订阅,经测试也有着更低的内存和 CPU 占用。
桌面客户端
相比于只能在浏览器内发挥作用的浏览器扩展,客户端形式的去广告形式有着更高的权限,这在一方面使得其功能也要更加强大,适用范围也更广,但这在另一方面也带来了一些安全隐患,我们在选择时要特别注意。1
鉴于去广告软件的功能与原理大同小异,这里就以 Windows 端的 Adguard 为例。
Adguard 宣称其主要去广告的三个机制是 Request Blocking、Page Code Filtering 和 CSS Injection And JavaScript。Request Blocking 的工作原理和浏览器扩展相同,这里不再赘述,这里主要讲一讲后面两种方案:
- Page Code Filtering:在浏览器载入网页之前 Adguard 会过滤网页的代码并根据规则移除其中包含广告的网页代码 使得浏览器不会加载这些元素 相比于扩展「后知后觉」并且还要对屏蔽 request 后产生的空白做隐藏处理等繁琐操作,这样的方式理论上比扩展的工作方式更为高效。
- CSS Injection And JavaScript:网页中元素有时是通过 Javascript 的方式动态嵌入网页中,也不需要额外载入资源,因而 Adguard 也需要对这些内容进行额外处理;另一类是 CSS,一种决定网页呈现样式的语言,CSS 能够决定网页上元素的呈现方式,包括但不仅限于颜色、字体、位置甚至还有网页元素的可见性。Adguard 能在网页注入自己的 CSS 代码和 Javascript 来达到更彻底的去广告效果。
这里需要说明的是,Adguard 在本文中出现多次有一个重要原因:内置规则全面,并且可以说是开箱即用。在选择开启哪些规则(Adguard 内称呼为「过滤器」)时我们需要注意根据自己所访问的网站、所在地区、操作平台和个人要求来尽可能少地开启规则。
在不导入第三方规则的前提下,我们建议中文用户开启以下几个规则:
- 「广告拦截」中的 Easylist
- 「烦人」中的 Adguard 恼人广告过滤器
- 「特定语言」中的 Easylist China、CJX's Annoyance List 和 xinggsf
当然如果你常常混迹外网,也可以根据自己的需求再适度额外开启其他的规则。
Adguard 的桌面客户端还一个有趣的功能的是「扩展」,其实也就是我们平时在浏览器上常用的「脚本」,本质是用 Javascript 语言写的一串能够实现在特定网站上实现特定功能的小代码。在 Windows ,MacOS 上,Adguard 内置了三个官方开发的脚本:
- Adguard Assistant:用以直接在网页上管理过滤过程。
- Adguard Extra:用在基于过滤器的方法不能完全去广告时的复杂场景。
- PopupBlocker:顾名思义,用以除掉弹窗这一最为恼人的广告形式还记得澳门赌场里的热情荷官吗。
这个功能的确是具有相当的潜力,不过别急,接下来要提到的 Android 端才是这个功能真正发光发热的地方。
Android 端
Android 平台上很多浏览器(比如 Via 和 Firefox Focus)都自带了去广告功能,但它们不能导入规则,灵活性相对较低。综合考虑实际的去广告能力,如果你愿意离开 Chrome 这个「温柔乡」,那么在去广告这件事情上你还有这些更加强力的选择:
Kiwi ,Yandex 与 Firefox
前两款基于 Chromium 的浏览器满足了一个所有 Chrome for Android 用户心水许久的功能:在移动端安装使用 Chrome Web Store 里的浏览器扩展,因此在手机上安装 uBlock Origin 这类去广告插件也是完全没问题的,桌面端扩展的功能基本都能使用。