【问题标题】:How to identify unique devices using javascript?如何使用 javascript 识别唯一设备?
【发布时间】:2019-12-05 22:40:59
【问题描述】:

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

【问题讨论】:

  • 可能使用了请求的用户代理头。
  • 他们可能会根据从Navigator interface、cookie 等中抓取的任何跨浏览器数据构建“指纹”。
  • 我在不同的设备上克隆了所有内容并得到了相同的结果

标签: javascript streaming drm


【解决方案1】:

您也可以为您的项目使用指纹JS2 库。

https://fingerprintjs.com/

这个库如何获取指纹

Fingerprint.js 收集来自设备/浏览器的所有独特功能,将它们通过哈希函数传递以提供唯一标识符。

示例

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

获取浏览器信息的最新方法称为“Canvas Fingerprinting”。简单地说,网站是用 HTML5 代码编写的,在该代码中,有一小段代码会获取您浏览器的指纹。

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

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

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

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

维基百科对how exploiting the HTML5 canvas element generates browser fingerprinting提供以下解释:

“当用户访问页面时,指纹识别脚本首先使用其选择的字体和大小绘制文本,并添加背景颜色。接下来,该脚本调用 Canvas API 的 ToDataURL 方法以获取 dataURL 格式的画布像素数据,这基本上是二进制像素数据的 Base64 编码表示。最后,脚本获取文本编码像素数据的哈希值,作为指纹。”

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

与 Cookie 的工作方式不同,画布指纹识别不会将任何内容加载到您的计算机上,因此您将无法删除任何数据,因为它不是存储在您的计算机或设备上,而是存储在其他地方。

来源及延伸阅读:https://pixelprivacy.com/resources/browser-fingerprinting/

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

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

【讨论】:

  • 问题是他们如何识别这个指纹?
  • 即使你得到了,使用fingerprintjs或canvas,如何确保每次访问都创建相同的指纹?
  • @Paulo 有很多方法可以识别设备,是的,你是对的,不能确保生成相同的指纹这个答案与他要求 JS API 的问题有关。通常他们在授权(登录/注册)他们的服务并相应地存储数据时就知道他们的客户。
  • 如果 "UNIQUE" 哈希是使用我的默认字体、背景颜色等创建的。他们如何确定没有其他访问者具有相同的字体、背景、.. 等并构建 SAME 哈希?
  • @Accountantم 我已经在之前的评论中回答了。
【解决方案2】:

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

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

【讨论】:

  • 能否分享一些示例代码来禁用插件和其他组件?
  • 你能分享你的解决方案吗?
【解决方案3】:

我建议使用 localStorage 并存储一个唯一的白名单 ID,该 ID 在每次登录尝试时都会得到验证。

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

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

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

【讨论】:

  • 如果是这种情况,用户可以删除其本地存储,他将获得另一个新项目。但指纹不会改变。因此,对于每个浏览器,都可以跟踪用户。但对于你的情况,我猜它不会发生。
  • 如果本地存储被删除,您无法确定这是否是唯一用户。或使用隐身模式。最好是使用浏览器指纹。
猜你喜欢
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
相关资源
最近更新 更多