Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript生成客户端指纹_Javascript_Unique - Fatal编程技术网

使用javascript生成客户端指纹

使用javascript生成客户端指纹,javascript,unique,Javascript,Unique,如何生成每个客户端的唯一指纹 我知道必须使用navigator对象,但一些属性,如navigator.battery不能用于此方法 // battery included and unique may change. var uniqueHash = exampleHash(JSON.stringify(navigator)); 如何仅使用JavaScript而不使用cookie为每个用户生成正确的唯一指纹 还必须包括跨平台和较旧的浏览器 我需要navigator.X 注意: 我不想生成随机散

如何生成每个客户端的唯一指纹

我知道必须使用
navigator
对象,但一些属性,如
navigator.battery
不能用于此方法

// battery included and unique may change.
var uniqueHash = exampleHash(JSON.stringify(navigator));
如何仅使用JavaScript而不使用cookie为每个用户生成正确的唯一指纹

还必须包括跨平台和较旧的浏览器

我需要
navigator.X

注意:
我不想生成随机散列。我想为每个用户生成基于系统的哈希,但我不想保存在Cookie或存储器上。

不使用Cookie而保持会话的最简单方法是在页面中的URL上附加一个唯一的哈希(可能是UUID或类似的东西)作为get参数:

/my/fancy/url
变成

/my/fancy/url?HASHCODE
每当服务器收到请求时,它都会捕获哈希代码(如果存在),否则会生成一个哈希代码,然后将其附加到服务页面上的所有链接

请记住,用户可以操作HASHCODE,在设计应用程序时应该考虑到这一点

无论如何,请注意,在花式url时代,它是相当丑陋的。还要注意,用户跟踪是一个微妙的主题,如果您没有在TOS中正确声明,您可能会遇到法律问题

编辑:如果不在多个网站的任何变体(闪存、会话存储等)和网站之间共享的域中使用Cookie,则无法跨多个网站跟踪一个人。不可能,您不能从一个域中设置变量或cookie,也不能在任何合适的浏览器中从另一个域访问它,否则这将是一个很大的安全漏洞

编辑:Panoptick不能像您建议的那样用作跟踪方法,因为它基于统计匹配,而且在这方面也非常糟糕(请尝试从美国以外的地方浏览或使用刚刚发布的Chrome/Firefox更新)。这是一个很好的证明概念,但没有什么可以用于此目的。此外,您需要大量样本才能获得统计相关的结果


编辑:浏览器指纹识别能力较弱:许多浏览器都在自动更新(如Chrome或Firefox),官方版本很少(20?40?如果算上Linux发行版编译的版本,可能会多一点),因此您会发现使用相同用户代理的用户比例是一致的。添加一个类似配置的消费者PC的集合。

不使用cookies保持会话的最简单方法是在页面的URL中附加一个唯一的哈希(可能是UUID或类似的东西)作为get参数:

/my/fancy/url
变成

/my/fancy/url?HASHCODE
每当服务器收到请求时,它都会捕获哈希代码(如果存在),否则会生成一个哈希代码,然后将其附加到服务页面上的所有链接

请记住,用户可以操作HASHCODE,在设计应用程序时应该考虑到这一点

无论如何,请注意,在花式url时代,它是相当丑陋的。还要注意,用户跟踪是一个微妙的主题,如果您没有在TOS中正确声明,您可能会遇到法律问题

编辑:如果不在多个网站的任何变体(闪存、会话存储等)和网站之间共享的域中使用Cookie,则无法跨多个网站跟踪一个人。不可能,您不能从一个域中设置变量或cookie,也不能在任何合适的浏览器中从另一个域访问它,否则这将是一个很大的安全漏洞

编辑:Panoptick不能像您建议的那样用作跟踪方法,因为它基于统计匹配,而且在这方面也非常糟糕(请尝试从美国以外的地方浏览或使用刚刚发布的Chrome/Firefox更新)。这是一个很好的证明概念,但没有什么可以用于此目的。此外,您需要大量样本才能获得统计相关的结果


编辑:浏览器指纹识别能力较弱:许多浏览器都在自动更新(如Chrome或Firefox),官方版本很少(20?40?如果算上Linux发行版编译的版本,可能会多一点),因此您会发现使用相同用户代理的用户比例是一致的。此外,还有许多配置类似的消费类PC。

一个值得研究的途径是使用。它公开一个
navigator.id
属性供使用。从用户处获取唯一id非常简单

navigator.id.get(function(unique_id) {
    alert("this is your unique id: " + unique_id);
})
这样做的缺点是需要用户授权


示例:

一条值得研究的路线是使用。它公开一个
navigator.id
属性供使用。从用户处获取唯一id非常简单

navigator.id.get(function(unique_id) {
    alert("this is your unique id: " + unique_id);
})
这样做的缺点是需要用户授权

例如:

如何生成每个客户端的唯一指纹

简而言之,你不能。不可能对每个客户都这样做。您可以近距离地使用客户机,但在大约90-95%的情况下,您可能只能获得唯一标识符

我不想节省饼干或存储空间

您不想在客户端存储数据有什么原因吗?如果你告诉我们你想要实现什么,也许我们可以建议一个更好的方法来解决这个问题

如何生成每个客户端的唯一指纹

简而言之,你不能。不可能对每个客户都这样做。您可以近距离地使用客户机,但在大约90-95%的情况下,您可能只能获得唯一标识符

我不想节省饼干或存储空间


您不想在客户端存储数据有什么原因吗?如果您告诉我们您试图实现的目标,那么也许我们可以建议一种更好的解决问题的方法。

您的意思是唯一地识别冲浪用户,即使他/她删除cookies等?@esseks问题更新。请重新措辞这个问题,我不明白你在问什么。你的意思是生成一个散列