勇敢的快速阅读器:快速、私密的网络阅读模式

2020-10-19 19:16:00

本文是本报告的缩略版,基于由Andrius Aucinas(性能研究员)、Peter Snyder(隐私研究员)和Ben Livshits博士(首席科学家)以及Mohammad Ghasemisharif(芝加哥伊利诺伊大学计算机科学博士生、Brave实习生)在Brave进行的研究。

摘要:SpeedReader是Brave的阅读器模式的新方法,它是一种浏览器工具,可以使网页阅读起来更轻松、更简单。通过在页面加载前删除所有不必要的内容,SpeedReader超越了阅读器模式的美学改进,并提供:

1)性能大幅提升(加速20倍~27倍,带宽节省84倍,内存减少2.4倍);

2)显著的隐私利益,包括完全消除广告和跟踪相关请求。

总体来说,SpeedReader在22%的网页上都很有用,对用户共享内容的适用性更高(Twitter上31%,Reddit上42%)。

现代Web的进步已经远远超出了文档发现的超文本标记,带来了丰富的媒体体验和动态的应用程序。然而,这种能力的增长导致页面“膨胀”,使页面加载变得昂贵,并带来无处不在的广告和跟踪。

网络浏览器有时需要介入,才能让用户继续享受网络。因此,主要浏览器包括阅读器模式,该模式通过消除令人分心的广告、视频、赞助内容链接和其他对页面不重要的Web元素来降低网站的视觉复杂性。阅读器模式的目的是让阅读体验更愉快,但不要试图改善页面加载时间或保护用户隐私,因为整个页面都是先加载的,然后才会去掉臃肿的部分。

为了解决这些问题,Brave正在开发SpeedReader。SpeedReader是阅读器模式的一种新方法。它不仅给用户的浏览体验带来了美学上的巨大改善,也给浏览性能和隐私带来了巨大的改善。对于合适的页面,SpeedReader会在页面加载之前删除所有不必要的内容,从而节省时间、带宽并删除广告和追踪器;因为SpeedReader在拦截追踪器和广告方面超越了Brave默认的做法。SpeedReader自动检测哪些页面是合适的,显著改善了最终用户体验-特别是在速度较慢的移动连接上。

在适用的页面上,与常规浏览相比,SpeedReader的页面加载速度提高了27倍,网络使用量减少了84倍。SpeedReader还通过移除所有公认的跟踪器来提高用户隐私。在测试期间,SpeedReader向第三方发出的请求减少了115次,在适用的页面上与跟踪器交互的次数平均减少了64次。一般来说,SpeedReader在22%的网页上运行,在社交媒体上分享的页面中有整整46%的网页可以使用SpeedReader。

当前的阅读器模式不节省网络和内存资源,因为阅读器模式在呈现“可读”版本之前获取页面资源。我们的技术在相当一部分网站上提供与现有读者模式工具类似的用户体验,但在网络、性能和隐私方面的改进超过了现有的广告和跟踪拦截工具。关键区别在于SpeedReader在页面呈现之前运行,这允许它在获取任何内容之前确定页面的核心内容需要哪些资源。

机器学习分类器,用于确定是否存在初始获取的页面HTML的可读子集。在我们的测试中,它决定了页面是否可以以91%的准确率在阅读器模式下显示。

如果分类器已经确定页面是可读的,则SpeedReader在呈现之前提取文档的可读子集,当前使用的是经过战斗测试的现有算法,然后继续呈现文档。

反过来,对于SpeedReader确定为可读的文档,SpeedReader改进的来源包括:

获取的图像或视频要少得多(因为不是页面显示核心的图像和视频永远不会被检索到)。

由于页面内容的阅读器模式呈现通常很简单,因此不渲染动画、视频或复杂的布局操作可节省处理能力。

我们在3,000页上训练了分类器,如果页面的主要实用程序是其文本和图像内容,并且页面内容的有用性不取决于其在网站上的具体呈现或布局,则认为该页面是可读的。这意味着单页面应用程序、索引页和具有复杂布局的页面通常被标记为不可读,而具有静态内容、大量文本和描述内容的媒体的页面通常被标记为可读。在数据集中,我们训练的分类器准确率为91%(准确率为91%,召回率为87%)。

因为分类器在呈现之前对完整的HTML文档进行操作,所以浏览器在获取并分类整个初始HTML之前无法呈现文档,这要求它必须很快。我们比较了5000个热门页面(Alexa TOP 5k)和5000个不太受欢迎页面(Alexa 5k到100k的随机样本)中超过90000个页面的分类时间和初始HTML下载时间。我们测量了不同网络条件下的下载时间,包括快速的国内宽带连接(50 Mbps对称带宽和2ms延迟),并使用MacOS Network Link Condition仿真3G,使用预设的默认3G,下行链路780kbps,上行链路330kbps,双向延迟100ms,没有额外的丢包。为了进行比较,我们还包括了从本地服务器重放的Brave中下载同一文档所花费的时间。

结果一目了然-在中位数情况下,分类只需要1.9毫秒,而在宽带连接上初始HTML文档加载需要652毫秒,在3G上需要长达2.6秒-也就是在下载呈现完整页面通常需要的任何其他资源之前。

SpeedReader的目标是改善用户在网络上的体验,但并不是要在整个网络上使用,所以它的有用性受到用户访问的可读网站数量的限制。

为了全面了解SpeedReader的适用性,我们查看了我们的分类器标签在五组页面中可读的页数:

排名前5,000的Alexa域名最多有三个随机选择的页面从主页链接,以及跟随链接的另一跳,总共有42,986个页面。

不太受欢迎的Alexa域名,从排名5,001-100,000的域名中随机选择,并像第一组一样收集子页,总共40,908页。

从在线讨论板链接的内容,查看Reddit排名前125的子Reddits,并从每个帖子中收集25个共享URL。

RSS提要,通过识别Alexa TOP 1K中包含RSS提要的网站,并在每个RSS提要中获取五个最新的内容页面。

上表总结了我们的调查结果,显示SpeedReader总体上在22%的页面上是有用的,对用户共享内容的适用性更高,Twitter上有31%,Reddit上有42%。最后,通过RSS提要发布的内容中有65%看起来是可读的。

为了衡量使用页面的阅读器模式表示的好处,我们查看了上面分类为可读的所有文档的三种不同呈现方式-18,475个唯一页面。生成HTML文档的阅读器模式表示可以看作是将一种树结构转换为另一种树结构:获取由页面的初始HTML表示的文档,并生成包含简化阅读器模式版本的文档。呈现新的转换文档,仅获取剩余子资源并应用标准文章样式。

我们评估了全部18,475个独立页面的SpeedReader性能优势。为了减少重复测试中的网络质量和服务器响应差异,我们使用网页重放(WPR)工具收集了每个页面的重放档案,该工具的工作方式与普通Web服务器一样,作为响应它们的代理,而不是让请求通过源。正如我们在分类器评估中看到的,从重放代理提供内容的速度比直接下载快几个数量级,因此测量的加载时间主要反映解析和呈现时间。

我们测量了四个性能指标:请求的资源数量、获取的数据量、使用的内存和页面加载时间。我们在AWS m5.Large实例上运行所有实验,每个实例一次执行一次性能测量。对于每个评估,我们从之前收集的记录重放归档中提取页面,并启用性能跟踪。加载页面并记录性能指标后,我们关闭浏览器和代理,并开始下一个测试。对于所有测试,我们使用未经修改的Google Chrome浏览器,版本70.0.3538.67,以Xvfb呈现。

该图显示了与加载未修改页面相比,三种评估传感器策略的下载数据分布、内存占用和加载时间。我们还记录了每个页面获取的资源数量。值得注意的是,对于内存消耗,我们测量了浏览器及其子进程使用的总内存,而不仅仅是单个页面。

尽管从本地Web服务器重放内容并使用功能强大的服务器进行页面呈现,但未经修改的页面性能并不出色:

中位数和平均值之间的差异告诉我们,许多较重的页面会产生很大的成本,这会歪曲平均值。另一方面,所有三种换能器策略都产生相同量级的增益。根据所选的传感器,我们将显示:

SpeedReader实现了显著的隐私改进,因为它在呈现文档之前应用了树转换步骤,从而在向第三方发起任何请求之前就应用了树转换步骤。SpeedReader获得的隐私改善有三个方面:与第三方通信的减少,脚本执行的减少(在线指纹识别通常是必要的,但不够充分的一部分),以及完全消除与广告和跟踪相关的请求(由EasyList和EasyPrivacy确定)。最后一项措施特别重要,因为我们的数据集中18,475个可读页面中有92.8%加载了由EasyList和EasyPrivacy标记为广告或跟踪相关的资源。

我们测量了SpeedReader提供的隐私收益,方法是首先生成数据集中每个可读页面的阅读器模式版本,然后计算生成的每个阅读器模式页面中的第三方、脚本资源、广告和跟踪资源的数量。我们通过使用开源广告块节点库的EasyList和EasyPrivacy对页面中包含的每个资源URL应用EasyList和EasyPrivacy来确定广告和跟踪资源的数量。然后,我们将这些测量结果与在每个URL的典型非阅读器模式呈现中发出的第三方、脚本单元、广告和跟踪资源请求的数量进行了比较。

我们发现,这三种经过评估的树转换技术都极大地减少了与第三方通信的数量,并从页面中删除了所有脚本执行、广告和跟踪资源请求。换言之,在可读页面上,SpeedReader至少能够实现同样好的隐私改善,而且几乎肯定会超过现有的广告和跟踪拦截程序。

SpeedReader在阅读器模式工具中是独一无二的,它仅根据页面的初始HTML,在解析和呈现HTML之前和子资源获取之前确定页面是否可读。我们的分类器在2ms内运行,准确率为91%,使其成为渲染管道中始终在线的一部分,在加载时转换所有合适的页面。我们发现当SpeedReader与精确的分类器结合使用时具有广泛的适用性,可以为流行和不受欢迎的网站上22%的页面提供性能和隐私方面的改进,以及从Reddit(42%)和Twitter(31%)等在线社交网络链接的更大比例的页面。

因为SpeedReader在取回子资源之前进行修改,所以SpeedReader平均使用的网络比传统的页面呈现(以及当前的阅读器模式技术)少84倍。这会缩短页面加载时间,这在各种情况下都很重要,从连接不良或低端设备,到昂贵的数据连接,或者只是希望与主要是文本内容进行干净而简单的交互。SpeedReader还提供20×-27倍的页面加载加速比和2.4倍的平均内存减少,同时保持令人愉快的阅读器模式风格的用户体验。

最后,我们发现SpeedReader在保护用户隐私方面出类拔萃,它从测试页面中移除了所有目前公认的第三方追踪器和广告。当应用于我们包含18,475个可读网页的测试集时,SpeedReader防止了100%的广告和跟踪相关资源被获取(由EasyList和EasyPrivacy标记)。

SpeedReader旨在改善用户在网络上的体验,并与其他方法相辅相成。例如,Google Chrome有几项干预措施,其中一项可以用占位符替换图像,另一项可以在连接速度较慢的情况下绕过网络字体。一个更具争议性的干预措施(仅限于预览版)是Chrome的noscript:它将在速度较慢的网络上完全禁用JavaScript。勇敢的盾牌是另一个浏览器干预的例子,旨在创造更好的用户体验。像渐进式增强这样的解决方案,如果被出版商采用,可以通过有效地调整交付给用户的内容来产生一些相同的好处。已经引入了HTTP客户端提示和网络信息API,以向发布者提供诸如有效网络类型之类的详细信息,以及用户对“保存数据”或设备功能的首选项。然而,这些技术的采用似乎非常有限,所以我们期待着在Brave浏览器的未来版本中实现SpeedReader,以便在上述优化不存在或不充分的情况下改善用户体验。

继续阅读有关广告拦截、功能、性能、隐私和基本关注令牌相关声明的新闻。