uBlock 和其他工具在屏蔽广告、跟踪行为和恶意域名方面的比较 - fang5566/uBlock GitHub Wiki
以下均为真实数据,并无夸大成份。
最近一次基准测试时间:2015 年 2月16 日(原始数据电子表格)。(再之前的测试记录:2014-09-30, 2014-07-22)
这项基准测试是通过统计网络请求所连接到的单独第三方网域数目来测量隐私暴露程度,连接的第三方网域越少,隐私保护得越好。
有些测试只测量请求被屏蔽的数目,我觉得这对测试隐私暴露程度来说没什么意义。屏蔽的请求数量多少并不能保证连接到的第三方网域就少,它还是会在对方服务器的日志记录留下踪迹。
在我看来,直接测量所连接到的单独第三方网域数目在隐私保护的有效性方面更好,也更切实。
uBlock Origin(uBO)和 Disconnect 无需额外配置,其他过滤工具则需要额外配置,基准测试中配置步骤最多的是 Adblock Plus(ABP)。
注:连接到第三方服务器的网络请求数量,柱状图越低表示越少连接到第三方服务器
说明:"第三方"是指和当前页面的域名不一样的网域。其实有很多所谓的"第三方"网域与网页所在域名同属一个主体,例如 yimg.com
属于 yahoo.com
所有。但基准测试的代码无法知晓这些,除非用了存有谁拥有哪些域名的综合数据库,这我也做不到。在比较不同过滤工具及不使用过滤工具的差别时这项基准测试仍旧很有用。
这里使用的是来自参考基准测试的 84 条 URL。
结果:数值分别是指"第三方数目/全部数目",过滤工具按连接到的第三方网域数目从少到多排列,数值越小,隐私保护得越好。
uBO 0.8.8.1
- 成对的第一方/第三方网域:491
- 脚本:980 / 1635
- 出站 cookies:58 / 269
- 网络请求: 3,987 / 7,956
ABP 1.8.10
- 成对的第一方/第三方网域:497
- 脚本:1009 / 1733
- 出站 cookies:67 / 284
- 网络请求:4,069 / 8,166
Ghostery 5.4.1
- 成对的第一方/第三方网域:501
- 脚本:882 / 1619
- 出站 cookies:120 / 370
- 网络请求:4,031 / 8,218
Disconnect 5.18.18
- 成对的第一方/第三方网域:555
- 脚本:1186 / 1685
- 出站 cookies:130 / 382
- 网络请求:4,462 / 8,219
无过滤工具
- 成对的第一方/第三方网域:2977
- 脚本:3800 / 4647
- 出站 cookies:1641 / 2097
- 网络请求:12,131 / 16,851
注意事项
这些数值表示被允许的请求数量,数值越小越好。重要的是统计在运行参考基准测试(在当前实例中重复运行两次)后成对的第三方/第一方网域数量。
成对的第三方/第一方网域数量越少越好。
数据差异
这里显示的是未屏蔽内容的差别,如果如果有些内容出现在 A 侧,但没有出现在 B 侧,说明 B 侧屏蔽了 A 侧未屏蔽的内容,反之亦然。
- uBO/ABP:https://www.diffchecker.com/czy6h5lq
- uBO/Ghostery:https://www.diffchecker.com/zapbh5b9
- uBO/Disconnect:https://www.diffchecker.com/386c367m
这些差别可以帮助你决定是否要在其他过滤工具基础上加装 uBO,但别忘了你也可以让 uBO 屏蔽更多内容(动态过滤在这方面可能很有用)。
结果观察
有了数据差异比较,用户就能观察 uBO + 默认设置下的屏蔽内容,我们可以看到有很大一部分隐私暴露给了以下域名:
facebook.net
(45)facebook.com
(44)googletagservices.com
(39)twitter.com
(34)taboola.com
(11)
所以如果你对此很关心(也应该关心),我觉得最好的保护办法是使用动态过滤。以下一些规则可以用来屏蔽上述所有第三方域名,除了作为第一方使用:
* facebook.com * block
* facebook.net * block
* googletagservices.com * block
* taboola.com * block
* twitter.com * block
facebook.com facebook.com * noop
facebook.com facebook.net * noop
twitter.com twitter.com * noop
有了这几条动态过滤规则,你就可以将 uBO 中 “成对的第一方/第三方网域 ” 数值从 491 减少到 318,附带网页载入速度明显提高。
你可以在特定站点将上面所屏蔽的域名放行,比如你想在访问 AnandTech 时使用 Twitter 的 widget,只要将 twitter.com
设置为本地 noop 即可,在使用动态过滤矩阵时鼠标指向并点击一下就可以了。
配置方式
所有过滤工具都按如下方式配置以便两两对比:
- Ghostery:选中 “Widgets” 以外的所有跟踪器,不勾选 “GhostRank”,点击 “Update now” 来确保使用最新的过滤规则。
- uBO:初始设置,不做任何修改。
- ABP:勾选 “EasyList” + “EasyPrivacy”、“Peter Lowe's list” 和 “Malware Domains” 列表,不勾选 “允许非侵入式广告 ” 并点击 “立即更新 ”
- Disconnect:初始设置,不做任何修改。
浏览器设置(如果你介意隐私,请务必这么做):
- 启用 “插件点击后运行 ”。
在基准测试中我忘了勾选 "屏蔽第三方 cookies 和站点数据 ",所以第三方 cookies 是允许的。
Sessbench 用于运行基准测试。每个浏览器都单独测试,只唯一启用所测试的扩展。
官方的 Public Suffix 列表是用来确定一条 URL 的域名。