没想到(一个干净的浏览器首页)很干净的浏览器,没有广告的,想获得「干净」的网页浏览体验?你需要这份全平台去广告指南,
2023-10-11 11:59:09
147小编
75
#爱否精选#
那从去除侵入式广告的角度出发,我们都有哪些可行的方案呢?
————————
本内容经授权转载自「少数派」;由爱否科技精选推送。
作者丨武登钧
来源丨少数派
广告营收占据了 Google 利润的大部分,然而 Google 却在自家的浏览器 Chrome 中加入了去广告功能并默认开启。· 广告过多
· 广告包含闪烁的图片或自动播放音频等令人讨厌的内容
· 广告挡住网页内容
这样的广告不仅难以达到预期的宣传效果,还导致一些用户索性屏蔽掉了页面中的所有广告,对依靠广告收入来维持免费内容的创作者无疑是个不小的打击;而对一般用户来说,侵入式广告也会影响网页内容的浏览体验,更不用说加载广告带来的设备性能和数据流量开销。那从去除侵入式广告的角度出发,我们都有哪些可行的方案呢?桌面浏览器扩展
浏览器作为我们查看网页的主要载体,自然是去广告的一个重要阵地,因此浏览器扩展自然就成为了我们的首选方案。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 的「规则订阅」特性也为其他竞品所学习吸收,成为了如今业界的标配。桌面客户端
相比于只能在浏览器内发挥作用的浏览器扩展,客户端形式的去广告形式有着更高的权限,这在一方面使得其功能也要更加强大,适用范围也更广,但这在另一方面也带来了一些安全隐患,我们在选择时要特别注意。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 来达到更彻底的去广告效果。Android 端
Android 平台上很多浏览器(比如 Via 和 Firefox Focus)都自带了去广告功能,但它们不能导入规则,灵活性相对较低。综合考虑实际的去广告能力,如果你愿意离开 Chrome 这个「温柔乡」,那么在去广告这件事情上你还有这些更加强力的选择:Kiwi ,Yandex 与 Firefox
前两款基于 Chromium 的浏览器满足了一个所有 Chrome for Android 用户心水许久的功能:在移动端安装使用 Chrome Web Store 里的浏览器扩展,因此在手机上安装 uBlock Origin 这类去广告插件也是完全没问题的,桌面端扩展的功能基本都能使用。全局的 Hosts 方案
什么是 Hosts?Hosts 是每个设备上都有的一个系统文件,工作原理也很好理解:它将常见的网址域名与其 IP 相关联,当我们输入一个域名后,系统会先在 Hosts 文件中寻找对应的 IP 地址,若是找到了会立即打开。于是利用 Hosts 文件去广告的思路就清晰了——我们可以编辑 Hosts 文件,将已知的广告服务器重新定向到无效的地址(一般是 127.0.0.1)来实现去广告。比如我们可以在 Hosts 文件里添上这么一行127.0.0.1 adsites.com这样我们就把 adsites.com 这个网站重定向到了本地 IP 地址,也就达到了去广告的效果。不过在 Android 设备上 Hosts 文件位于 /system/etc/hosts 目录下,修改后可能会影响正常的 OTA 更新。所以我们最好利用 Magisk 模块来实现在不改动系统分区的情况下修改 Hosts 文件。这项特性甚至有 Magisk 作者官方支持,只需要在 Magisk Manger 设置中点击 Systemless Hosts 这一选项即可。Adguard for Android
和浏览器扩展相比,Adguard for Android 则可以利用 Android 系统自带的几种基础网络框架来进行流量过滤,最终达到去除广告的目的。流量过滤并不会将用户数据发送给任何服务器,一般情况下也并不需要 Root 权限。在 Adguard 中,我们可以通过开启「DNS 过滤」和「HTTPS 过滤」来增强去广告效果。我们先来说说 DNS。承接上文的 Hosts 查询,当我们输入一个域名时会先在本地的 Hosts 中查询是否有域名对应的 IP,若是没有则会向远端的 DNS 服务器查询(因此 DNS 也被形象地称为「互联网的电话簿」)。DNS 去广告则将过滤广告的流程放在了 DNS 服务器上。iOS 端
早在 iOS 9,Apple 就发布了 Content Blocker,即能够集成到 Safari 的一类具有去广告屏蔽的 App。Apple 对于去广告这件事的立场也是如此鲜明,而其一直宣传的隐私保护理念也能从其工作原理中窥见一二:屏蔽器并不知道用户的浏览历史和网页的具体内容;过滤的过程也是在网页加载之前完成,同之前 Adguard 客户端一般,比桌面端的浏览器扩展方案在网页载入速度上要快。这里我们仍然是推荐我们的老朋友 Adguard,呼声很高的 1Blocker 系列在 2019 年的今日仍然没有内置适合中国地区的规则,也依旧不支持订阅第三方规则,因此不在本文讨论范围内。由于系统限制,Adguard for iOS 的功能和 Adguard for Android 相比缺失不少,不过仍有亮点。