如何不使用cookie追踪用户?【欢乐向】
译者 kokdemo
(以下凡是有括号的地方都是译者的注解,不代表作者本人的观点)上周我和 AlexanderDutton 先生聊到一个观点,那就是我们使用浏览器缓存的时候必须使用类似cookie的方法。我想到最近,欧盟的一条新法律就要开始生效了,这条法律要就网站需要在用户同意的情况下才能在用户的电脑上储存cookie。不管这法律是不是必要的,但它确实是缺少严谨的考虑的,它也确实缺少信息去帮助网站的管理者理解它并实现改变。
英国电讯已经开始执行了该法律(上图是他们对用户询问的窗口,具体内容……就不翻译了吧……)。令人好奇的是,如果用户使用Opera浏览器,那么它将会直接默许你同意,哪怕你点了no。
(如果是国内的无良商人……估计用什么浏览器都会默许吧…… )
为了解释这个法律中的一个歧义,我使用了一个可以像cookie和别的比如Flash方法和本地存储类似工具,但是这可能会有一个很大的灰色区域。我的工具使用浏览器缓存的时候滥用了“permanent”方法重定向,也叫做HTTP 301方法。
实例站点→ See Demo Site
你可以尝试一下我的方法。点击那个按钮你就可以看看那个样本站点,然后关了你的浏览器或者重启一下你的电脑,之后再重新访问一次:这个站点会辨认出你,并显示出和你第一次访问这个站点的时候同样的随机数,还能确认你什么时候第一次访问。
以下就是工作的步骤,简而言之:
- 一个用户访问网站
- 网站源码中包括一个“”的标签,告诉浏览器从哪个网址能够找到一些javascript。
- 用户的浏览器会请求javascript文件。
- 服务器会为这个用户生成一个随机且独一无二的标示。
- 服务器会使用一个HTTP 301响应告诉浏览器“这个javascript可以在一个独特的网址找到”,然后会提供一个包括那个独一无二标示的地址。
- 用户的浏览器会请求一个新的文件,比如 /javascripts/tracking/123456789.js,这样那个标示就是123456789。
- 这个动态生成的javascript会把标示当做一个值保存,这样子就可以起到追踪的目的。
- 随后哪怕你关了浏览器依然会受到请求,不过这样会跳过步骤3和步骤5,因为用户的浏览器会缓存301方法并重新使用那个地址来标示用户。
上图标示了301方法的用法。
和传统的基于cookie的追踪方法比如谷歌分析相比,这个方法有如下特点:
这个方法不强健,清除缓存比清除cookies更常用,在很多浏览器中,使用一次强制刷新会导致产生一个新的追踪标示。
这个方法不容易被一些隐私工具所屏蔽,包括W3C标准提议的:他不会被任何cookie清理或者别的隐私过滤工具所发现,因此我意识到它不会被匿名模式或者别的浏览器的私人模式发现。
总之,这个技术可能会陷入一个灰色领域。它用于追踪目的肯定会与这个法律原本的精神所相悖,哪怕这个“代理”请求技术是个微不足道的实现甚至是个先进的解决方案,通过谷歌分析或者类似的方案使用一个数据库在储存有独一无二标示的cookies。
然而通过立法来反对使用HTTP 301方法是很难的,因为这是一个比cookie还要基本的必要部分。同样的还有一些类似的原因,想要分析并屏蔽这个技术相比传统的cookie方法明显更难。因此,这项技术确实是有点脆弱了,如果你真的要使用它的话,你可能需要去忍耐一个cookie使用时限减少的事实。
下载代码→ Download Code
请尝试一下这个示例,或者下载源码(Ruby/Sinatra格式)然后你自己就可以看看这项工作是怎么工作的了。
我自己不是一个律师,因此我无法给出一个这项追踪技术是否合法的说明。我怀疑如果你没有征得用户的同意,使用新方法和传统的方法应该是有问题的。然而这确实是一个有意思的技术进步,可能什么时候也就合法了吧。