如何使用 javascript 识别唯一设备?

How to identify unique devices using javascript?

我想知道当我在我的 labtop 上使用网络浏览器登录时,Netflix、Hulu、Sling 等流媒体服务提供商如何识别我的设备。
我找不到任何 Javascript API 来获取 GUID 左右。

您也可以在您的项目中使用 fingerprintJS2 库。

https://fingerprintjs.com/

这个库如何获取指纹

Fingerprint.js collects all the unique features from a device/browser passing them through a hash function to provide a unique identifier.

例子

还有许多其他方法可以获得唯一的浏览器指纹。

最新的获取浏览器信息的方法叫做“Canvas指纹识别。”简单来说,网站都是用HTML5代码写的,里面就是代码,有一小段代码会获取您浏览器的指纹。

那么,网站究竟是如何做到这一点的呢?让我解释一下。

HTML5 中的新编码功能启用了网站用于获取浏览器指纹的这种新跟踪方法。

HTML5 是用于构建网站的编码语言。这是每个网站的核心基础。在 HTML5 编码语言中,有一个名为“canvas”的元素。

最初,HTML 元素用于在网页上绘制图形。

维基百科对how exploiting the HTML5 canvas element generates browser fingerprinting的解释如下:

“When a user visits a page, the fingerprinting script first draws text with the font and size of its choice and adds background colors. Next, the script calls Canvas API’s ToDataURL method to get the canvas pixel data in dataURL format, which is basically a Base64 encoded representation of the binary pixel data. Finally, the script takes the hash of the text-encoded pixel data, which serves as the fingerprint."

用简单的英语来说,这意味着 HTML5 canvas 元素在网站上生成某些数据,例如访问者浏览器的字体大小和活动背景颜色设置。此信息作为每个访问者的唯一指纹。

与 cookie 的工作方式相反,canvas 指纹识别不会将任何内容加载到您的计算机上,因此您将无法删除任何数据,因为它没有存储在您的计算机或设备上,但是别处。

来源和进一步阅读:https://pixelprivacy.com/resources/browser-fingerprinting/

https://multilogin.com/everything-you-need-to-know-about-canvas-fingerprinting/

顺便说一句,您可以自己通过谷歌搜索获得更多信息。

我正在使用 fingerprintjs.library 创建浏览器指纹,它适用于所有设备,但是当我在精确配置的设备(如具有精确配置的笔记本电脑)中测试指纹时,它会生成相同的指纹。 在实施之前,我读过很多博客说 canvas 指纹生成唯一的 base64 字符串,但是当我在具有相同配置的设备上测试时,它生成相同的 canvas 指纹。 canvas 指纹在完全相同或相似的设备中不是唯一的。

在使用 fingerprint.Js 库时,我禁用了一些选项,如插件、枚举设备、浏览器版本,因为在设备指纹中添加耳机时,这在本质上是动态的,将读取耳机信息或相应地生成指纹或与浏览器版本。如果将来有任何变化,指纹会有所不同。 我的要求是创建一个独特且恒定的指纹,即使在几天后打开浏览器后也不会改变。

我建议使用 localStorage 并存储一个唯一的 white-listed ID,每次登录尝试时都会验证该 ID。

localStorage.setItem('laazaz_id', '4587ff526d');

localStorage.getItem('laazaz_id'); //returns 4587ff526d

文档:https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage