无论如何都要在javascript中为浏览器创建一个唯一的ID?
我不是在谈论每次生成时随机生成的ID,而是生成的浏览器所特有的ID,但也会考虑其运行的计算机。
示例:
Windows 7 Chrome可能会生成:asdh128hakj4gh
Windows 7 Opera可能会生成:23hjad823hjakk
Windows 7 Chrome,差异硬件,可能会生成:asd238881jaal
等...
有没有这样做?
答案 0 :(得分:24)
答案 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/