从去除侵入式广告的角度出发,我们都有哪些可行的方案呢?
桌面浏览器
Adblock Plus
浏览器作为我们查看网页的主要载体,自然是去广告的一个重要阵地,因此浏览器插件自然就成为了我们的首选方案。
Adblock Plus 是在各平台插件商店中下载量最高的去广告插件,它早年叫做 Adblock,是 Firefox 上的开源项目,当时的功能远没有现在强大。
2008 年 Chrome 的诞生,Adblock for Chrome 也出现了。虽然同名,它与当年的 Adblock 和现在的 Adblock Plus 却并非一回事。现在,我们能看到 Adblock 虽然好似 iPhone 和 iPhone Plus 系列的双版本,但事实上 Adblock Plus 才是真正的老牌劲旅。Adblock Plus 的「规则订阅」特性也为其他竞品所学习吸收,成为了如今业界的标配。
需要注意的是,除了保持规则的定期更新外,订阅的规则数量也不宜过多,太多会显著影响网页加载速度。
No Title
No Description
uBlock Origin
虽说 Adblock Plus 这块老牌子的确是响,它却未必是最优选择。相比之下 uBlock Origin 这款自由、开源、跨平台的浏览器插件不仅包含了 Adblock Plus 的所有功能、支持规则订阅,经测试也有着更低的内存和 CPU 占用。
uBlock Origin(或 uBlock₀)不是一个广告过滤工具,它是具有一般性用途的过滤工具,屏蔽广告的功能是通过支持 Adblock Plus 过滤规则语法实现的。uBlock₀ 还扩充了语法,一开始就支持自定义过滤规则。
无论”温和”与否,现如今在您浏览大多数网站的时候广告都是最显而易见的侵犯隐私行为。uBlock₀ 的主要目的是帮助用户抵御这种侵犯隐私的行为,针对的是那些不想用更具技术、更复杂的方法(比如 µMatrix)解决问题的用户。
uBlock₀ 安装后会默认开启 EasyList、Peter Lowe’s Adservers、 EasyPrivacy 和 Malware domains,此外还有许多过滤规则列表可以屏蔽跟踪、分析等行为,也支持根据 hosts 文件来屏蔽。
什么是规则?简而言之,当浏览器载入一个网页时,网页内的元素都会以 request 的形式请求连接到所请求的服务器进行下载,而去广告插件会根据事先设置好的规则检查每一条 request,当检查到和广告相关的 request 时就会予以拦截,阻止浏览器载入广告元素。
No Title
No Description
桌面客户端
相比于只能在浏览器内发挥作用的浏览器插件,客户端形式的去广告形式有着更高的权限,这在一方面使得其功能也要更加强大,适用范围也更广,但这在另一方面也带来了一些安全隐患,我们在选择时要特别注意。
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:顾名思义,用以除掉弹窗这一最为恼人的广告形式还记得澳门赌场里的热情荷官吗。
Download AdGuard adblock
Protect your devices from annoying ads, trackers, and other threats. Download AdGuard for safer, faster, and ad-free web surfing!
Android 端
Android 平台上很多浏览器〔比如 Via 和 Firefox Focus〕都自带了去广告功能,但它们不能导入规则,灵活性相对较低。综合考虑实际的去广告能力,如果你愿意离开 Chrome 这个「温柔乡」,那么在去广告这件事情上你还有这些更加强力的选择:
Yandex,Kiwi 与 Firefox
前两款基于 Chromium 的浏览器满足了一个所有 Chrome for Android 用户心水许久的功能:在移动端安装使用 Chrome Web Store 里的浏览器插件,因此在手机上安装 uBlock Origin 这类去广告插件也是完全没问题的,桌面端插件的功能基本都能使用。
Firefox for Android 也原生支持安装插件,不过插件数量要少于桌面端,想效仿桌面端安装一打插件的朋友可能要失望了。好在在移动端安装去广告插件的同时,我们还能导入规则进行手动拦截;在某些广告特别猖獗的情况下,我们也可以通过插件来禁用界面的 Javascript 来实现更彻底的去广告效果,比如 Chrome 上的 Quick Javascript Switcher 和 Firefox 上的 NoScript Security Suite—— 但这是剂猛药,可能会影响网页的正常使用,酌情使用。
No Title
No Description
No Title
No Description
Adguard Content Blocker
这也是针对 Android 平台浏览器去广告的一种实现方式,但它需要浏览器支持 Content Blocking 技术,目前只有 Yandex Browser 和三星浏览器可以使用。不过若是这两款浏览器的用户的确可以考虑使用,对 Yandex 用户而言能享受更适合手机的页面,而对于不支持安装插件的三星浏览器用户而言更是个福音。
No Title
No Description
Adguard for Android
和浏览器插件相比,Adguard for Android 则可以利用 Android 系统自带的几种基础网络框架来进行流量过滤,最终达到去除广告的目的。流量过滤并不会将用户数据发送给任何服务器,一般情况下也并不需要 Root 权限。
在 Adguard 中,我们可以通过开启「DNS 过滤」和「HTTPS 过滤」来增强去广告效果。
Adguard 的一个独到之处在于开启 DNS 过滤后不需要更换 DNS 也能达到去广告的效果。具体实现原理是在 request 在到达 DNS 前进行拦截以此达到去广告的效果。
我们知道 HTPPS 的链接是加密的,正常情况下 Adguard 无法知道具体的内容,也就无从过滤去广告。Adguard 给出的方法是通过安装证书来实现解密流量。遗憾的是默认情况下 Adguard 的证书属于 用户证书
,Target API 24 以上的 App 无法被过滤。好在对于 Magisk 用户来说,只需安装 Move Certificates
这个模块就能将 Adguard 的证书转化为 系统证书
,从而让所有 App 都能通过 Adguard 过滤 HTTPS 流量了。
考虑到过滤这个过程在客观上会减慢加载速度,Adguard 也有提供针对特定 App 的过滤开关。对于已经确定无疑没有广告以及过滤后会明显影响使用的 App〔微信、支付宝等〕建议关闭过滤。
另外,前文提到 Adguard 支持在 Android 端安装脚本,而 Adguard 的脚本效果是全局的,也就是说支持包括 Chrome 在内的大部分移动浏览器。不过不同平台的不同操作方式也决定了有些脚本并不适合于 Android 平台,比如悬浮预览大图。
脚本安装可以去 Greasy Fork、Stylish 等著名脚本社区寻找更多玩法。安装脚本时还是要再次提醒安全问题,恶意脚本会对设备造成难以估量的后果,切勿安装来源不明的脚本。
Ad Blocker for Android by AdGuard for rooted and unrooted devices | AdGuard
AdGuard is a unique adblock tool that blocks ads in apps and browsers, protects your privacy, and helps manage your apps.
iOS 端
Adguard
早在 iOS 9,Apple 就发布了 Content Blocker,即能够集成到 Safari 的一类具有去广告屏蔽的 App。Apple 对于去广告这件事的立场也是如此鲜明,而其一直宣传的隐私保护理念也能从其工作原理中窥见一二:屏蔽器并不知道用户的浏览历史和网页的具体内容;过滤的过程也是在网页加载之前完成,同之前 Adguard 客户端一般,比桌面端的浏览器插件方案在网页载入速度上要快。
这里我们仍然是推荐我们的老朋友 Adguard,呼声很高的 1Blocker 系列在 2019 年的今日仍然没有内置适合中国地区的规则,也依旧不支持订阅第三方规则,因此不在本文讨论范围内。
由于系统限制,Adguard for iOS 的功能和 Adguard for Android 相比缺失不少,不过仍有亮点。
得益于内容屏蔽器与 Safari 的集成,手动标记在 Safari 上尤为方便。当你看到网页上有规则之外的漏网之鱼时,只要在 Share Sheet 中找到 Adguard,选择其中的「拦截此页面的元素」,点击「开始」,再点击你要屏蔽的是元素,点底下一栏的☑️就能自动跳转到 Adguard 保存。
贴心的是你还可以点击?的图标来预览屏蔽效果,整个体验堪比桌面端。
AdGuard – adblock&privacy
AdGuard is an ultra-efficient ad blocker for Safari. It will not only remove annoying ads but also secure your privacy with advanced tracking protection. AdGuard for iOS is an open source app, it’s totally transparent and safe to use. The app is free but offers additional paid Premium features for a…
「开」还是「关」?
在当前大行其道的广告商业模式中,用户、广告商和网站主三方都在试图找到一个最好的平衡,一个能保证三方收益而不损害任何一方利益的平衡,在这个过程中也都采取了不少行动。不过就像《罗生门》一样,处在不同立场的人看法自然不同,对于去广告是否道德的探究永远是难有定论的,甚至找不到一个所谓的权威来裁决其中是非曲直。
Adguard 显然也不想困于其中的道德讨论,于是在拦截器中加上了一个「不拦截有用广告」,其主要是不屏蔽除百度之外搜索引擎所得的相关广告以及网站内与其网站本身相关的广告,与 The Better Ads 宣称的依然有不小的出入,这又是罗生门的一个体现。
再不济我们也无需受限于现成的规则,几乎所有的广告屏蔽手段都能手动添加白名单,将相当一部分的权力交给了用户。