Skip to content

实验阶段特性

fang5566 edited this page Mar 18, 2015 · 18 revisions

本页面主要介绍一些 uBlock 可启用的实验阶段特性。所谓实验阶段特性在我看来对用户很有用,但在设计或实现上还不成熟。

实验阶段特性默认关闭,你可以在控制面板的_设置_ 标签页中启用,但我无法保证这些标为“实验性”的特性都可以完美使用。

如果你遇到无法如预期正常使用的情况,建议你先在控制面板里禁用这些_"实验阶段特性"_,然后再看看问题是否仍存在。

减少隐私暴露:本地镜像

[重要提示: 本地镜像目前已知会破坏最终被本地缓存的网页字体,参见 issue #291。]

增加用户隐私暴露的一种方式是使用内容分发网络(即"CDN")和类似服务。最常见的 CDN 包括 ajax.googleapis.comcdnjs.cloudflare.comgoogletagservices.com 等等。这些服务器用于将资源分发到无数的网站。

当从这些 CDN 拉取资源时,通常会在资源的 HTTP 请求中设置一个标头,允许这些无处不在的 CDN 收集与你浏览习惯有关的数据,这种做法不利于保护隐私。

从减少隐私暴露的角度出发,uBlock 引入了一项称为本地镜像的实验阶段特性,允许 uBlock 在本地缓存这些从已知 CDN 拉取的资源,今后如再请求相同的资源,本地可直接提供,无需再从 CDN 拉取,从而防止 CDN 收集您的浏览习惯数据。

zdnet.com

上图显示出所有到 ajax.googleapis.comwww.googletagservices.comtwitter.com 的连接都被阻止了,所以不会在其服务器日志留下任何信息,取而代之的是所请求资源的本地副本,且不破坏原有页面。(令我吃惊的是上图显示出连到 googletagservices.com 的请求不是被 EasyListEasyPrivacy 屏蔽 的,而是被 "Dan Pollock's"MVPShpHosts 屏蔽的)。

来看一下在使用参考基准测试进行快速测试时,本地镜像开启前后的对比:

禁用时:
访问的 URL:60
网域:415 / 475
脚本:857 / 1264
出站 cookies:0 / 130
网络请求:3,304 / 6,264

启用时:
访问的 URL:60
网域:337 / 397
脚本:793 / 1214
出站 cookies:0 / 132
网络请求:3,174 / 6,156

如上所示,本地镜像启用后有大量第三方 CDN 连接被阻止,减少了隐私暴露,且不破坏原有网页。

Local mirroring results

本地镜像的优势:

  • 减少隐私暴露
  • 节省带宽
  • 提高网页载入速度

本地镜像的不足:

  • 增加内存消耗
更新

[以下文字复制粘贴自此处]

我通过在 uBlock 0.6.6.0-rc.0 和 ABP 1.8.5 使用相同规则列表进行了一轮新的测试(除了不启用 Peter Lowe's 列表,因为找不到便捷的方法安装到 Adblock Plus,我猜想用户也不太可能有影响)。

这是测试结果的差别比较:https://www.diffchecker.com/5z91i47m

红色为 ABP 屏蔽了但 uBlock 未屏蔽的内容。 绿色为 uBlock 屏蔽了但 ABP 未屏蔽的内容。

我怀疑红色那两条请求是在我分别测试 uBlock 和 ABP 的间隔期内发生变化的网页内容。

过滤规则列表:

  • ABP:初始设置 + EasyPrivacy、Malware domains、Fanboy's Social Blocking List 和 Anti-ThirdpartySocial‎ + 禁用"允许非侵入式广告"
  • uBlock:初始设置 + Anti-ThirdpartySocial‎ + 始终启用本地镜像(即作为日常使用方式)。

在上述基准测试中本地镜像阻止了下列连接:

  • 2mdn.net
  • ajax.googleapis.com
  • cloudflare.com
  • fonts.googleapis.com
  • googletagservices.com
  • gstatic.com
  • janrain.com
  • jquery.com
  • twitter.com

正因为远端资源都被保存到了本地,所以阻止连接的同时不会破坏原有页面。

2014-10-10 更新:

我不得不删除了一部分可建立镜像的候选主机名,因为实际测试时这些主机名无法安全地建立镜像,包括:2mdn.netgoogletagservices.comjanrain.com。这样看来本地镜像真的只能严格用来保存确认是静态的资源,比如函数库、字体这样的。

2014-10-12 更新:

原来是 0.7.0.0 版本才有的本地镜像 Bug,现在已经修复了。我又把 googletagservices.com 加入了本地镜像候选主机名,因为页面被破坏大多数都是这些 bug 引起的,而不是说这些是动态资源(它们看起来像是...)。

Clone this wiki locally