JavaScript唯一浏览器Id

JavaScript唯一浏览器Id,javascript,unique,generator,uniqueidentifier,Javascript,Unique,Generator,Uniqueidentifier,在javascript中是否有为浏览器创建唯一ID的方法 我说的不是一个每次生成时都是随机的ID,而是一个对生成它的浏览器来说是唯一的ID,但同时也考虑到它运行的计算机 例如: Windows 7 Chrome可能会生成:asdh128hakj4gh Windows 7 Opera可能生成:23hjad823hjakk Windows 7 Chrome、diff硬件可能会生成:asd238881jaal 等等 还有其他方法可以这样做吗?使用cookies和一些独特的散列到其内部。(每个浏览器都有

在javascript中是否有为浏览器创建唯一ID的方法

我说的不是一个每次生成时都是随机的ID,而是一个对生成它的浏览器来说是唯一的ID,但同时也考虑到它运行的计算机

例如:

Windows 7 Chrome可能会生成:asdh128hakj4gh

Windows 7 Opera可能生成:23hjad823hjakk

Windows 7 Chrome、diff硬件可能会生成:asd238881jaal

等等


还有其他方法可以这样做吗?

使用
cookies
和一些独特的散列到其内部。(每个浏览器都有自己的cookie jar,即使在计算机上有许多浏览器)

看起来您试图做的是某种授权?所以只有这么多浏览器可以注册使用你的应用

不幸的是,无法读取用户的计算机硬件设置。正如一个答案所说,你可以在机器上储存一块饼干,但它很容易丢失


如果您仅限于使用旧的IE浏览器,则可以使用ActiveX读取计算机硬件:

UserAgent+ClientIP+extrasalt'的MD5如何

这将使您接近但并不完美,因为两个客户端可能拥有相同的IP(使用NAT)和完全相同的UserAgent(严格控制的it部门=相同的部署,或者只是运气好)。

var Sys={};
var ua=navigator.userAgent.toLowerCase();
var s;
(s=ua.match(/msie([\d.]+)/)?Sys.ie=s[1]:
(s=ua.match(/firefox\/([\d.]+)/)?Sys.firefox=s[1]:
(s=ua.match(/chrome\/([\d.]+)/)?Sys.chrome=s[1]:
(s=ua.match(/opera.([\d.]+)/)?Sys.opera=s[1]:
(s=ua.match(/version\/([\d.]+).*safari/)?Sys.safari=s[1]:0;
if(Sys.ie)document.write('ie:'+Sys.ie);
if(Sys.firefox)document.write('firefox:'+Sys.firefox);
if(Sys.chrome)document.write('chrome:'+Sys.chrome);
if(Sys.opera)document.write('opera:'+Sys.opera);

if(Sys.safari)document.write('safari:'+Sys.safari)您要查找的内容称为浏览器指纹

你可以在谷歌上搜索一些开源库。 例:

查看您可以使用的


ID是每台计算机生成的,除非计算机的MAC地址发生变化,否则不会发生变化。

在Windows 7上运行Chrome的所有计算机的ID应该是相同的,还是您正在考虑一个类似于会话ID的ID?ID会因操作系统的不同而不同,硬件和浏览器,但如果在同一操作系统硬件和浏览器上生成两次,则id将是相同的。可能不是真的。我打开了一个FireFox,在cookie中给它一个随机ID,打开了第二个FireFox,它读取相同的cookie。是的,每个浏览器安装都有自己的cookie jar,而不是每个浏览器实例…在当前的django项目中使用fingerprintjs2 javascript库,它工作得非常好…它似乎在最新版本的FireFox中不起作用。获取Fingerprin2未定义错误。检查相同版本的浏览器,即使在不同的机器上,也会有相同的指纹。-1:大多数客户端都有动态IP,如果客户端保持相同的IP数天,你就幸运了。因此,当IP改变时,你错误地将新的哈希视为一个新的浏览器实例。好的解决方案。但是这是在GPL许可下的。当我们从一个网络切换到另一个网络时,id也会有所不同。所以不总是一样的