2011-02-08 36 views
17

có cách nào để tạo ID duy nhất cho trình duyệt trong javascript không?Mã trình duyệt duy nhất JavaScript

Tôi không nói về ID là ngẫu nhiên mọi lúc được tạo nhưng ID duy nhất cho trình duyệt được tạo ra nhưng cũng tính đến máy tính đang chạy trên đó.

Ví dụ:

Windows 7 Chrome có thể tạo ra: asdh128hakj4gh

Windows 7 Opera có thể tạo ra: 23hjad823hjakk

Windows 7 Chrome, phần cứng khác, có thể tạo ra: asd238881jaal

vv .. .

Có cách nào để thực hiện việc này không?

+1

ID nên giống nhau cho tất cả các máy tính chạy Chrome trên Windows 7, hoặc bạn đang nghĩ đến một ID tương tự như một session ID? –

+2

'userAgent' là ai? – Raynos

+0

id sẽ khác nhau tùy thuộc vào os, phần cứng và trình duyệt nhưng id sẽ giống nhau nếu được tạo hai lần trên cùng một phần cứng hệ điều hành và trình duyệt – Ozzy

Trả lời

5

Sử dụng cookies và một số hàm băm duy nhất vào nó. (Mỗi trình duyệt có bình chứa cookie riêng, ngay cả khi trên máy tính có nhiều trình duyệt)

+0

Có thể không đúng sự thật. Tôi đã mở một FireFox, cho nó một ID ngẫu nhiên trong một cookie, mở FireFox thứ 2, và nó đọc cùng một cookie. –

+5

Vâng, mỗi lần cài đặt trình duyệt đều có bình chứa cookie riêng, không phải mỗi phiên bản trình duyệt ... – IProblemFactory

0

Có vẻ như bạn đang cố gắng thực hiện một số loại giấy phép? Vì vậy, chỉ có rất nhiều trình duyệt có thể được đăng ký để sử dụng ứng dụng của bạn?

Thật không may là không có cách nào để đọc thiết lập phần cứng máy tính của người dùng. Như một câu trả lời cho biết bạn có thể lưu trữ một cookie trên máy nhưng nó có thể dễ dàng bị mất tích.

Nếu bạn bị hạn chế việc sử dụng các trình duyệt IE cũ bạn có thể sử dụng activeX để đọc phần cứng máy tính: http://www.devarticles.com/c/a/JavaScript/How-to-Use-JavaScript-for-Hardware-Knowledge/

2

Làm thế nào về MD5 của UserAgent + ClientIP + 'extrasalt'?

Điều đó sẽ giúp bạn gần gũi nhưng không hoàn hảo vì có thể 2 khách hàng có cùng IP (sử dụng NAT) và chính xác UserAgent (bộ phận CNTT được kiểm soát chặt chẽ = cùng triển khai hoặc chỉ may mắn).

+0

-1: Hầu hết khách hàng đều có IP động và bạn may mắn nếu khách hàng giữ cùng IP trong một vài ngày.Vì vậy, khi IP thay đổi, bạn sẽ xem xét sai băm mới như một thể hiện trình duyệt mới. – reallynice

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);

Với những mã bạn có thể nhận được các loại và các phiên bản của trình duyệt, và giá trị phải là duy nhất theo trình duyệt khác nhau, nếu bạn muốn tạo ra khác cơ sở ID duy nhất trên đó , sau đó sử dụng nó

15

Điều bạn đang tìm kiếm được gọi là Ghi vân tay trình duyệt.

Bạn có thể google cho một số thư viện nguồn mở. Ex: fingerprintjs2

Check-out EFF's demo

+2

Sử dụng thư viện javascript fingerprintjs2 trong dự án django hiện tại và nó hoạt động thực sự tốt ... – dave4jr

Các vấn đề liên quan