越来越多的网站所有者担心“全能的Google”会在用户浏览网页时对其进行跟踪。GoogleAnalytics(GA)是一个免费使用的全功能网络分析系统,尽管存在隐私问题,它已成为许多大小网站使用的分析工具。然而,近年来,越来越多的替代品正在逐渐打破谷歌的霸主地位。在本文中,我们将研究两个轻量级开源选项,GoatCounter和Plausible。到目前为止,GA是一个很大的网站:根据BuiltWith的数据,前100,000个网站中约有86%使用它。对于排名前100万的网站,这一比例下降到64%。自Google收购Urchin并将其更名为GoogleAnalytics以来,这些权重在过去15年中稳步增长。撇开隐私问题不谈,GA比一些网站所有者更复杂、功能更丰富。他们中的许多人只想查看其网站页面的流量以及流量的来源。因此,在过去几年中出现了许多更简单、更开放的工具也就不足为奇了。值得注意的是,LWN确实使用了GA,尽管我们正在评估其他选项。但是,那些根据自己的喜好关闭广告的用户将无法获得GA代码。谷歌跟踪什么?如果被问及谷歌跟踪哪些信息,愤世嫉俗者可能会说“一切”。部分问题在于这与事实相去不远:谷歌跟踪并存储了大量关于用户的信息。DouglasSchmidt在2018年发表的一篇论文[PDF]强调了Google跟踪的范围,以Android设备上的位置跟踪为例:即使没有任何用户交互,Android和Chrome也会向Google发送数据。我们的实验表明,一部处于休眠状态的固定Android手机(Chrome在后台运行)在24小时内与Google进行了340次位置通信,或者平均每小时14次数据通信。本文区分了“主动”和“被动”跟踪。主动跟踪是指用户直接使用或登录Google服务(例如执行搜索、登录Gmail等)。除了记录用户的所有搜索关键字外,Google还会在用户访问使用GA和其他Google发布工具的网站时被动跟踪用户。在一个“生活中的一天”的例子中,“谷歌通过被动方式收集或推断了三分之二的信息,”施密特发现。Schmidt的论文详细介绍了GAcookie跟踪的工作原理,并指出了“第一方”和“第三方”cookie之间的区别——后者跟踪用户及其跨多个站点的广告点击:GAcookie特定于特定用户正在访问的网站域(称为“第一方cookie”),而DoubleClickcookie通常与通用第三方域(例如doubleclick.net)相关联。谷歌使用这些cookie来跟踪用户在多个第三方网站上的互动。当用户与网站上的广告互动时,DoubleClick的转化跟踪工具(例如Floodlight)会在用户的计算机上放置一个cookie并生成一个唯一的客户ID。此后,如果用户访问广告网站,DoubleClick服务器将访问存储的cookie信息,将访问记录为有效转换。由于大量网站使用Google广告产品和GoogleAnalyticsGA,它可以了解很多网站中大多数用户的浏览历史。简而言之,Google非常了解您喜欢什么、您在哪里以及您购买什么。谷歌确实提供了关闭定向广告和位置跟踪等功能的方法,以及删除与帐户关联的个性化配置文件的方法。然而,这些功能几乎完全是可选的,大多数用户要么不知道它们,要么根本懒得将它们关闭。当然,简单地选择退出GA并不能消除所有这些隐私问题(例如,它不能阻止Android位置跟踪或搜索跟踪),但这是减少Google收集的数据量的一种方法。此外,对于使用GA替代方案的网站所有者,Google不会在幕后查看网站的流量模式——这些数据可能会在未来用于构建竞争工具。LWN读者可能倾向于关注隐私:使用Firefox而不是GoogleChrome。然而,他们建立网站的用户可能并不那么注重隐私。对于网络开发人员来说,他们选择的分析工具有助于尊重用户的隐私,并防止谷歌过多地了解用户的浏览方式。1.GoatCounterGoatCounter是2019年8月推出的最新一款网络分析工具,由MartinTournoij创建,相比其他工具更有“个人开发者制作”的感觉。它的功能比其他的要少一些,但它对开发人员友好且易于设置。该工具支持所有基本分析:包括页面浏览量和URL访问、浏览器和操作系统统计数据、设备屏幕尺寸、位置和引荐来源信息。默认情况下,GoatCounter显示过去7天按小时细分的计数,但网站所有者可以使用简单的控件调整日期范围。GoatCounter有一个不同寻常的定价模型,其源代码是根据保留版权的欧盟公共许可证(EUPL)获得许可的。公司可以自己托管软件,或支付少量费用使用GoatCounter的托管版本。在一篇长篇文章中,Tournoij讨论了他选择EUPL的原因,他说:我仍然不太关心人们如何使用我的代码,但我确实关心我的谋生能力是否受到不合理的影响。使用我的麻省理工学院代码并全职从事未发送给我的增强功能意味着我的竞争对手的工作量加倍:我(从他们的角度来看是免费的)和他们。他们总是比我有优势。GoatCounter是用Go编写的,并使用JavaScript在其UI中进行一些轻量级交互。JavaScript框架经常妨碍Web可访问性,而GoatCounter优先考虑可访问性(在其首页上提到)。除了计算页面浏览量外,GoatCounter还使用浏览器用户代理和IP地址的哈希值来跟踪对话,以在不存储任何个人信息的情况下识别客户端。用于生成这些哈希值的Salt每4小时使用一个滑动窗口轮换一次。Tournoij详细介绍了会话跟踪的技术方面,包括与具有类似目标的其他解决方案的比较。对于希望避免使用JavaScript或希望为用户的网站分析禁用JavaScript的网站所有者,GoatCounter支持非JavaScript跟踪方案。它在要统计的页面的“”标签中使用了一张1x1的透明GIF图片,尽管这种方法不记录原始URL或屏幕尺寸。GoatCounter的托管版本很容易设置——设置一个帐户并向我的网站添加一行JavaScript大约需要五分钟。几秒钟后,分析数据开始出现。即使使用托管版本,网站所有者也完全拥有数据并且可以随时导出完整转储或删除他们的帐户。自托管版本也可以直接使用Linux二进制文件或通过从源代码构建来设置-从源代码构建并使用默认的SQLite数据库配置在本地进行设置只需不到10分钟。与Plausible相比,它的安装要轻得多,无需下载,而且几乎可以立即启动。2.PlausiblePlausible是2019年初推出的另一款相对较新的分析工具,推出后不久就转为开源,代码采用MIT许可。该公司的商业模式是对托管收费,定价针对小型企业。从技术角度来看,Plausible的独特之处在于它的服务器代码是用Elixir编写的,Elixir是一种运行在Erlang虚拟机上的函数式编程语言。它的前端UI在交互部分使用了少量纯JavaScript代码,而不是像React这样的渲染框架。它还具有最小的分析脚本之一,plausible.js在撰写本文时为781字节(1.2KB未压缩)。相比之下,GA的analytics.js几乎是18KB(未压缩的46KB),而GoatCounter的count.js是2.3KB(未压缩的6.3KB)。这个大小可以产生有意义的差异,因为为站点上的每个页面加载脚本。值得注意的是,目前没有明确支持自托管“Pluusible”。该项目仍在快速开发中,维护自托管解决方案会大大减慢产品开发速度。待产品和业务更加稳定后,我会提供自托管方案。也就是说,就在几周前,Plausible添加了一份文档,描述了使用Docker进行自托管系统的实验方法。按照这些建议,我尝试使用docker-compose使其在本地运行。在几分钟的安装过程中,它下载了多少Docker和npm包,这有点令人不安。即使完成后,PostgreSQL迁移也有一个难以理解的错误阻止它开始——“实验”标签绝对是合适的。在用户界面方面,Plausible绝对比GoatCounter更精致。然而,它非常简单,甚至比GoatCounter更简单,它提供总访问者计数、每个路径的页面浏览量、引荐来源信息、地图位置和设备(按屏幕尺寸、浏览器和操作系统分类)。该工具还提供了一个“跳出率”指标,但具体定义尚不清楚。Plausible的主页声明它提供“100%的数据所有权”,并且可以为单个图表导出CSV数据(以及删除Plausible.io帐户)。然而,数据转储比GoatCounter的完整数据转储有用得多,后者包括每个事件的详细信息。就在几周前,Plausible添加了一份文档,描述了使用Docker进行自托管系统的实验方法。按照这些建议,我尝试使用docker-compose让它在本地运行。安装的几分钟,下载了好几个Docker和npm包,有点纳闷。即使完成后,PostgreSQL迁移仍然存在无法理解的错误。Short的专有选项还有一些值得一提的注重隐私的轻量级专有工具。显然,这些不具备开放开发或自托管的优势,但仍提供了一种低成本的方式来逃避谷歌的数据收集网。一种是极简主义的SimpleAnalytics产品,这是一种基于云的工具,由单人开发人员AdriaanvanRossum创建;它有一个干净的界面,只包含少数关键指标,类似于Plausible。另一个是Fathom,本来是开源的,但是现在的版本是私有的(据说公司希望以后再开始维护一个开源的代码库)。总结在过去的几年里,GoogleAnalytics有很多很棒的选择,特别是对于那些只需要一些基本功能的人来说。许多最近的替代方案都是开源和注重隐私的,这意味着项目和企业继续使用专业分析系统的理由越来越少。对于只需要基本流量的网站所有者来说,GoatCounter和Plausible似乎都是不错的选择。那些喜欢更多视觉修饰和文档的人可能更喜欢Plausible;那些重视对开发人员更友好且更易于托管的工具的人可能更喜欢GoatCounter,每个人都有自己的方式。
