JavaScript唯一浏览器ID

时间:2011-02-08 17:02:19

标签: javascript unique generator uniqueidentifier

无论如何都要在javascript中为浏览器创建一个唯一的ID?

我不是在谈论每次生成时随机生成的ID,而是生成的浏览器所特有的ID,但也会考虑其运行的计算机。

示例:

Windows 7 Chrome可能会生成:asdh128hakj4gh

Windows 7 Opera可能会生成:23hjad823hjakk

Windows 7 Chrome,差异硬件,可能会生成:asd238881jaal

等...

有没有这样做?

6 个答案:

答案 0 :(得分:24)

您正在寻找的是浏览器指纹识别。

您可以谷歌搜索一些开源库。 例如:fingerprintjs2

查看EFF's demo

答案 1 :(得分:6)

使用cookies和一些独特的哈希值。 (每个浏览器都有自己的cookie jar,即使在计算机上有很多浏览器)

答案 2 :(得分:3)

您可以使用biri library。 该ID是每台计算机生成的,除非计算机的MAC地址发生更改,否则该ID不会更改。

答案 3 :(得分:2)

UserAgent + ClientIP +'extrasalt'的MD5怎么样?

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

答案 4 :(得分:1)

     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,则使用它

答案 5 :(得分:0)

您尝试做的是什么样的许可?那么只有这么多浏览器才能注册才能使用你的应用程序?

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

如果您被限制使用旧的IE浏览器,则可以使用activeX来读取计算机硬件:http://www.devarticles.com/c/a/JavaScript/How-to-Use-JavaScript-for-Hardware-Knowledge/