无 Cookie/无 IP 跟踪访问者

No Cookie / No IP Tracking a Visitor

问题陈述:跟踪匿名用户以在访问过网站的设备上保持状态(或在计时器后锁定功能)。这需要跨浏览器禁用 cookie,包括以隐身模式访问。这也需要特定于设备,家庭网络中的 2 台计算机将有 2 个独立的计时器。

我已经看到这在一些场景中得到了应用,最近的场景是带有流计时器的 NBC 奥运会。这在“免费无注册试用”方面有很多用途,同时不会在“购买前试用”中放弃所有内容或限制功能。任何想法将不胜感激!

为此,您需要使用跨浏览器指纹识别(或 设备指纹识别)技术。

相关研究

我建议您阅读论文 (Cross-)Browser Fingerprinting via OS and Hardware Level Features by Yinzhi Cao, Song Li, and Erik Wijmans, which has an associated demo implementation,了解其中描述的 2 种技术。

我发现的另一篇关于 Web 指纹识别技术的好论文,如果您有兴趣,应该阅读 Web-based Fingerprinting Techniques,作者是 Vítor Bernardo 和 Dulce Domingos。

设备指纹识别的(不)安全

设备指纹识别的基础是从客户端设备收集各种指示设备 device/OS 的特征,并且在浏览器中保持稳定。收集足够多,一个用户的这些特征的组合很可能在所有用户中都是独一无二的。

大多数对设备指纹识别有用的功能只能在客户端测量(使用 JavaScript),然后需要传回服务器,无论是原始的还是作为散列。因此,作为一种安全措施的设备指纹识别还依赖于您混淆执行指纹识别的 JS 和传输指纹的相应网络流量的能力。如果用户可以弄清楚指纹的收集方式 and/or 将其发送回服务器,那么他们就可以对其进行欺骗,以绕过您基于它实施的任何保护措施。

可以指纹识别的特征

要衡量的有用特征包括(但不限于)

  • GPU 渲染伪像
    • 抗锯齿方法
    • OpenGL 驱动程序varying 插值
    • 纹理采样
  • 已安装的字体和书写系统
  • 文本渲染细节
    • 抗锯齿
    • 亚像素渲染
    • 特定字体的字距调整、字距调整和行距可以指示由于安装版本不同而产生的细微变化

就轻而易举的成果而言,有 Navigator.hardwareConcurrency 等 Web API 可以直接公开有关底层硬件的详细信息,但是现在许多浏览器禁用或欺骗此功能以避免将其用于指纹识别。

您收集的特征越多,您的指纹就越可靠,只要它们在同一设备上的浏览器之间没有差异。

结论

最终,设备指纹识别并没有包罗万象,因为它是一个非常复杂的话题,有许多潜在的方法,而且浏览器供应商试图阻止指纹识别技术,而开发人员则试图寻找新的技术,因此持续不断的军备竞赛.

如果您正在寻找开箱即用的解决方案,目前有少量开源和商业浏览器以及用户指纹识别服务,例如 FingerprintJS (which is both). Though it does seem that many device fingerprinting solutions are not sold as standalone functionality but instead as a part of a fraud prevention system (such as SEON) 或类似服务。

(以下仅供参考)

总的来说,我认为设备指纹识别是锁定功能的一个不确定的解决方案,更好的解决方案是使帐户的注册过程尽可能快速和简单(尽管免费帐户可能用于结合设备或浏览器指纹识别来缓和对免费试用系统的滥用)