为了避免超额收集隐私和贩卖隐私这类情况的恶化,不仅 Apple 和 Mozilla 这类一贯以「保护用户隐私」为己任的公司或基金会都纷纷在系统或者浏览器中集成了各种各样保护用户隐私的手段;甚至 Google 这种通过广告精准投放进行盈利的公司,也将在未来 Chrome 浏览器和 Chromium 开源计划中内置「隐私沙盒」(Privacy Sandbox)功能,在保证广告投放效果的情况下,能够充分保护用户隐私。
AdGuard 桌面端
不过,这些保护措施对我这种非常抗拒随意收集隐私的人来说,大部分还是不够严格的。我希望无论是谁都尽可能的少的收集我的隐私,这也是我为什么开始从使 AdGuard 浏览器插件版转向 AdGuard 桌面版的主要原因。
第一步:通过拦截规则开始隐私保护
拦截规则在 AdGuard 桌面端里被称为广告拦截器,不仅有非常好用的广告拦截功能,还能防止跟踪、屏蔽社交媒体插件、网页上的繁琐且无用的元素以及对诈骗网站发出提醒。这些规则事实上都是一连串的网址,用户打开对应的规则以后,软件会通过匹配,符合规则的网址在连接到用户之前就会被阻断。用户使用的过程中并不会感知到发生了过滤的情况,同时页面加载的速度也会快上不少(如果规则没有设置的过多的话)。
规则过多时的提示
虽然 AdGuard 默认就会打开一部分的规则,但是这些规则还是会放过不少「漏网之鱼」,因此我开启了额外的过滤器,保证规则足够格,大家要根据实际情况考虑开启哪些过滤器。
非常简单地创建自定义规则
当你打开一个页面,页面中有广告/元素没有被已经订阅地规则正确过滤?AdGuard 内置的助手功能可以帮助没有任何代码的基础的你创建规则,点击助手,然后选择拦截此网站上的广告,然后拖动滑杆,选取最合适的拦截大小,点击拦截即可,广告就被很轻松地去除了。
使用 AdGuard 助手快速屏蔽页面中的广告
如果没有找到助手,请前往设置-扩展,打开使用 AdGuard 助手,当然扩展页面上的其他功能也可以选择打开,能帮助你更好的使用 AdGuard。
第二步:通过调整设置完善隐私保护的流程
AdGuard 桌面版设置非常复杂,即使是开箱即用,不做任何调整,大部分用户还是很难理解每个功能分别是做什么的,它是怎么影响拦截过程的,会有更好的选项保护隐私吗?
AdGuard 作用原理
AdGuard 的桌面端简单来说就是一个架设在电脑和你浏览的网站中间的一个中间服务器,它负责把一个网页经过规则过滤以后的网页呈现在用户面前。任何的网页流量都必须通过 AdGuard 桌面端。
常规模式
语言、主题、更新通道、过滤器检查周期和日志级别,这些都和过滤的过程没有关系,概念也都很好理解,这里就不展开赘述了。会影响过滤过程的选项主要是在高级设置里,分别是:
- 当使用 WFP 驱动程序时拦截 Teredo
- 拦截 TCP 快速打开 (TCP fast open)
- 拦截 TCP 连接请求
- 使用 TLS 版本 1.3
- 使用重新定向驱动模式
- 过滤 Localhost 连接
当使用 WFP 驱动程序时拦截 Teredo,WFP 网络驱动程序是从 Windows 8 版本开始微软引入的两种新的网络过滤程序之一,他的好处是能接管 UWP 应用的网络请求。简单来说 WFP 就是一种能筛选所有 Windows 程序和 UWP 流量的接口。而 Teredo 是一种 IPv6 地址转换机制,它帮助有 IPv4 互联网但没有原生 IPv6 网络支持的电脑提供 IPv6 的网络支持。这个选项开启以后,AdGuard 将可以过滤来自 Teredo 转换过来的 IPv6 流量。
拦截 TCP 连接请求,TCP 是一种传输协议,它先要经过三次握手协议,确认对面的身份以后,再数据包安全可靠的发往目的地,是电脑上程序和服务器通讯的时必须要使用的协议,AdGuard 只有拦截 TCP 连接请求,才能对拦截的请求进行过滤,这样应用程序的请求才会被完全的过滤。
拦截 TCP 快速打开,TCP 快速打开(TCP fast open)是一项 TCP 的拓展技术。开启以后,如果 TCP 将要连接到的服务器是曾经连接过的,那么在第一次握手完成以后,在后续的两次握手中都可以直接携带数据开始传输,而不需要等待三次握手全部完成以后再传输,能够大大降低传输延迟。而拦截 TCP 快速打开,能够对后续的两次握手中传输的数据进行过滤,避免出现漏网之鱼。
Apple 已经开始使用了 TLS 1.3
使用 TLS 版本 1.3,TLS 版本 1.3 是一项全新的 TLS 协议,它旨在提供更快的访问速度、更好的安全性,现在 Apple、Google、Cloudflare 等大型公司已经开始在服务器上部署这一项技术了。虽然 TLS 1.3 的前身 TLS 1.2 还没发现过于的严重的漏洞,不过 TLS 1.3 中废弃了多个现在看来已经不安全的加密方式。使用 TLS 版本 1.3 虽然不会让过滤变得更干净,但是可以让用户在浏览的时候变得更加安全。
使用重新定向驱动模式,这个功能将会把所有的流量转发给 AdGuard 的本地服务器上,进行充分过滤。如果不开启 AdGuard 会选择动态过滤,这样可能部分流量没办法进行过滤,比如某些视频播放器在播放途中插入的广告,可能会认为是视频直接放行。
过滤 Localhost 连接,Localhost 连接是指来自电脑内部的连接,如果你本地有架设服务,并且这些服务中的流量有广告,那么打开这个选项将能正确地过滤来自他们广告。
网络
网络设置
网络的设置也将会影响 AdGuard 过滤的质量,Adgaurd 提供了两种不同的流量过滤方式:
- 自动过滤程序流量
- AdGuard 用作 HTTP 代理
AdGuard 用作 HTTP 代理时,AdGuard 会在后台运行一个 HTTP 代理,所有的请求会在这个 HTTP 代理中进行处理。在无视系统内代理行为的同时将会自动过滤所有的流量(也就是即使使用重新定向驱动模式关闭,也可以直接过滤所有流量),不过这个模式有个严重的问题:没办法过滤 HTTPS 流量。
HTTPS 通过证书确认身份(图片来自知乎又拍云)
HTTPS (超文本传输协议)通过证书确保发送方身份,保证数据在传输的时候不会被人嗅探或是篡改,因此 AdGuard 在作为 HTTP 代理的的时候,很难处理证书验证的部分,自然 HTTPS 流量无法过滤,而且现在 HTTPS 用的地方也越来越多了。因此我在这里更建议使用自动过滤程序流量。
自动过滤程序流量将使用系统内置的网络驱动程序对所有的流量进行过滤,因此它能够对 HTTPS 流量进行过滤,效率也相对更好一点(不过有的时候不少所有的都会被过滤到,因此要打开使用重新定向驱动模式)。启用 WFP 网络驱动程序则是可以让 Adugard 过滤 UWP 类应用,也可以过滤 Teredo 通道里的流量。自动过滤程序流量 选项大家可以选择手动将应用添加到过滤列表(也可以进行排除),有选择性的进行强制过滤或是不对它进行过滤。
第三步:隐形模式是保护隐私最强的保护手段
如果说规则和 AdGuard 的设置是基础保护,那么隐形模式就是进阶的保护,让你轻松逃离周围成千上万的跟踪器。规则只能拦截来自网页的跟踪器,而隐身模式可以拦截网站和网站之间的联系。
不仅仅是请求还有很多额外的数据会被发送到服务器
首先我们需要明确一个概念,你在浏览网页时,网站不仅知道你要请求什么内容;它还会知道你的很多额外信息,比如:你的 IP 地址、当前正在使用的浏览器和系统的信息、分辨率(浏览器当前窗口的)、你从哪里跳转过来的(比如你从搜索引擎跳转到了这个网页)、读取曾经的浏览器 Cookie 标记和有关你的信息、用户的某些首选项(比如语言、有哪些插件)等等信息。因为这些信息能够很好的帮助网站识别你是你,并能连续地了解到你的活动记录。
隐型模式下除了特殊说明的选项,其他我几乎所有的选项都开启了,大家使用时一定要根据自己的情况适当的开启选项。
而 AdGuard 的隐形模式就是针对上述情况进行设计的,它主要分为四个部分:常规、跟踪方式、浏览器 API 和杂项。下面我们就来看看他们是如何帮助用户逃离跟踪器的:
常规
隐身模式的常规选项
常规包含了下面 4 个选项,通过他们能够简单快速移除一些简单的跟踪路径:
- 隐藏您的搜索记录
- 发送「请勿跟踪」请求
- 移除 HTTP 请求中的 X-Client-Data 数据头
- 剥离 URL 中的跟踪参数
隐藏您的搜索记录会隐藏你使用搜索引擎进入某个网站的查询记录,这样这个网站就无法知道你常用的搜索引擎是什么了。通过了解常用的搜索引擎,网站可以返回给我们特定的结果(也有可能是推送广告),或是调整相关关键词来提升搜索时的位置。这是一种非常常见的跟踪方式。
发送「请勿跟踪」请求,AdGuard 将会给每个用户浏览的网络页面发送一个 HTTP 请求,里面包含一个请勿跟踪的请求,要求这个页面不要通过用户跟踪或是跨站点跟踪的方式记录你的活动记录。这个选项一般浏览器里也会有,不过一般这个功能是用来「防君子」的,因为你虽然请求了不要跟踪,但是网站还是可以选择继续跟踪你。
移除 HTTP 请求中的 X-Client-Data 数据头这是针对 Chrome 浏览器的选项,你使用 Chrome 浏览器浏览到任何和 Google 有关的网页时候(包括 Double Click 和 Google Analyse),Chrome 浏览器都会自动把浏览器版本、系统信息和其他一些修改的信息等传递给 Google。而移除 HTTP 请求中的 X-Client-Data 数据头,能拦截这一块的数据,保护你的隐私。
剥离 URL 中的跟踪参数将会剥离用户从一个网址跳转访问其他网址时包括在 url 里的跟踪参数,加上没用户会关心我跳转链接为什么会变得那么长,所以跟踪参数是一种最简单的跨站点跟踪的方式,。剥离参数以后可以适当缓解跨站跟踪情况的发生。高级用户也可以选择添加自定义的跟踪参数。
跟踪方式
阻止跟踪
跟踪方式里包含了常见的网站能跟踪你的方法,限制和阻止他们能够很有效的减少各种网站的跟踪方式。包括了:
- 自销毁第三方 Cookie
- 自销毁第一方 Cookie(我唯一未打开的选项)
- 禁止缓存第三方请求
- 拦截第三方授权头
自销毁第三方 Cookie,Cookie 的特点是「记忆性」,它可以轻松的记忆用户的身份,避免用户反复的登录;在跟踪用户时,可以利用这个特点可以记忆用户身份,比如购物车里有什么。而第三方意味着并不是你当前浏览的页面的产生的 Cookie(否则被称为第一方 Cookie)。在浏览网站的时候第三方 cookie 可以轻松记录你最常浏览哪些网页、什么时候来浏览 XX 的网页、停留多久等等,并将这些数据发送回这个第三方服务器上,帮助第三方轻松的补上用户画像。同时这个选项比起拦截第三方 Cookie 有个好处是,他不会导致通过第三方登录按钮失效。当然这个选项在实际使用也是有点问题的: Google 账户因为这个选项的原因频繁登出(原来登入 Google 也是用的第三方 Cookie 啊),我借此推断出 Google 也会通过第三方 Cookie 收集用户信息,所以我选择保留这个开关处于打开的状态。
自销毁第一方 Cookie和自销毁第三方 Cookie 很像,不过他是针对第一方 Cookie 的,打开以后哪怕是第一方网页超时以后都会让你再次登录,说实话太过麻烦了。当然网页还会通过第一方 Cookie 传递一些重要信息,禁用以后麻烦是只多不少,因此我这里没打开,也不推荐大家打开。
禁止缓存第三方请求,和利用 Cookie 跟踪很像,不过这里用到的跟踪技术会相对更新一点。一个网页 A 可以在加载的时候对网页里多处做上标记,这些标记也被称为 E-TAGS。只要这个网页 A 还在你的电脑缓存里,那么这些标记可以将你后来请求的页面记录发送这个网页 A,是不是感觉非常毛骨悚然?不过目前 E-TAGS 技术,只能知道你后续浏览了哪些网站,不能知道你的访问频率或是访问过程,而且一旦从网页 A 从缓存里清除也不能进行跟踪了。不过禁止缓存第三方请求这个功能能很好的从源头阻止这个问题,让你的隐私一点都不泄漏。
拦截第三方授权头,授权头是一组数据,它的主要目的是授权,但也可以被用来跟踪用户。授权头所做的的事情和 Cookie 很像,只不过需要当访问这个网站时才会从本地发送到服务器(而 Cookie 可以随时发送);此外有很多第三方授权头都是通过 HTTP 发送的,很容易被不怀好意的人或者软件截获。因此打开拦截第三方授权头的选项也能大幅度减少被跟踪或者隐私泄漏的可能。不过拦截第三方授权头,可能会影响部分软件(比如:浏览器插件)的工作,这个时候可能需要短暂的关闭这个选项。
浏览器 API
深层次过滤浏览器 API
隐形模式中浏览器 API 这一部分只会影响过滤列表中浏览器的有关 API,不会影响过滤列表中的其他软件的运作,它们包括了:
- 拦截 WebRTC
- 拦截推送 API
- 拦截定位 API
- 拦截 Flash
- 拦截 Java
拦截 WebRTC,WebRTC 是一种快速开发实时多媒体的技术,更简单点说是实时通讯协议。这种通讯协议其实挺好的,使用起来也无需安装插件,只不过它会无视代理暴露你真实的 IP 地址。我打开了这个选项完全是因为:反正我用不到这个协议,还不如更加严格一点直接禁用了比较好。
拦截推送 API和拦截定位 API,这两个 API 也很好理解,分别是管理浏览器推送和定位的。选上以后浏览器就没办法给你推送消息或者大概的定位到你在哪里。同时这两个 API 也是很好的跟踪方式,利用推送 API 可以保持第三方 Cookie 的活性(不被删除);而利用定位 API 可以了解用户大概的位置,可以记录用户的工作时间地点等信息。由于我用不到浏览器推送通知或者利用网页地图查看什么东西,所以这两项我也默认启用了。
拦截 Flash和拦截 Java将直接禁用过时的 Flash 插件和 Java 插件,也就是说浏览器即使支持也无法正常地使用这两个插件。Flash 插件和 Java 插件都存在非常多安全问题,同时对网页地加载时间也有非常糟糕地负面影响,此外这两种插件也逐渐被业界所淘汰,越来越多的网页开始选择更新更现代更安全的 HTML5 技术。所以我也选择将这两项进行禁用。Javascript 虽然也有 Java 前缀,不过不用担心,它可和 Java 没有任何的关系,启用拦截 Java 后,Javascript 还是可以正常运作的。
杂项
不得不被收集的数据也有解决方案
杂项中也包含了一部分你不能禁止的,必须要发送给服务端的数据,这些数据也能被用来跟踪用户,他们包括了:
- 隐藏您的第三方 Referrer
- 隐藏您的 User-Agent
- 隐藏您的 IP (目前暂不确定是否有效)
隐藏您的第三方 Referrer这个和上面的隐藏您的搜索记录或剥离 URL 中的跟踪参数有相通的地方,能告诉你访问的网址你是从哪里跳转过去的。只不过 Referrer 是包含在你访问那个网页的 HTTP(S) 请求头中,你不能将它去掉,但是你可以选择隐藏它。我这里使用的第三方 Referrer 是用的 。
隐藏您的 User-Agent,User-Agent 也同样是包含在网页的 HTTP(S) 请求头中的,User-Agent 将包括了发起请求的用户所使用的应用类型、操作系统、软件开发商以及版本号,在加上非常多的用户喜欢全屏浏览网页(网站就能获得当前屏幕的分辨率),这样网站就能完整的收集到用户使用的浏览器,用户使用的操作系统,当前屏幕的大小,并以此作为跟踪用户个人信息的一种手段。我们同样也可以对这部分请求头进行修改,我这里使用的 User-Agent 是Mozilla (Windows NT 10.0; Win64; x64) AppleWebKi (KHTML, like Gecko) Chrome Safari,这是一个非常常见的运行在 Windows 10 之上 Chrome v74 版本的浏览器。
隐藏您的 IP,这个功能就是利用一个假的 IP 地址去替换掉你真正的 IP。不过我打开试验过了,对于各种查询 IP 的网站来说好像没有任何作用,因此我也很难确定这个功能否正常工作。
以上就是我如何利用 AdGuard 桌面端对我的隐私进行保护的一个实践,希望它能帮助到你。AdGuard 桌面端提供了长达 14 天的试用期,超过试用期后你可以前往数码荔枝这类国内授权的 AdGuard 销售商进行购买激活码。感觉用不到桌面端功能那么复杂的功能也没有关系,AdGuard 的浏览器插件也提供上文中部分选项开关,同样也能帮助到你拦截广告和保护隐私。