2011-02-08 13 views
17

c'è comunque la possibilità di creare un ID univoco per un browser in javascript?ID browser univoco JavaScript

Non sto parlando di un ID casuale ogni volta che viene generato ma un ID che è univoco per il browser in cui viene generato ma tiene anche conto del computer su cui è in esecuzione.

Esempio:

Windows 7 Chrome potrebbe generare: asdh128hakj4gh

Windows 7 Opera potrebbe generare: 23hjad823hjakk

Windows 7 Chrome, hardware diff, potrebbe generare: asd238881jaal

ecc ..

Esiste comunque?

+1

Qualora l'ID essere lo stesso per tutti i computer che eseguono Chrome su Windows 7, o stai pensando di un ID di simile a un ID di sessione? –

+2

'userAgent' qualcuno? – Raynos

+0

l'id sarebbe diverso a seconda di os, hardware e browser ma l'id sarebbe lo stesso se generato due volte sullo stesso hardware e browser dello stesso – Ozzy

risposta

5

Utilizzare cookies e alcuni hash univoci nel suo. (Ogni browser ha un cookie jar personale, anche se sul computer ci sono molti browser)

+0

Forse non è vero. Ho aperto un FireFox, gli ho dato un ID casuale in un cookie, aperto 2nd FireFox e legge lo stesso cookie. –

+5

Sì, ogni installazione del browser ha il proprio cookie jar, non ogni istanza del browser ... – IProblemFactory

0

Quello che sembra si stia tentando di fare è un qualche tipo di licenza? In modo che solo tanti browser possano essere registrati per utilizzare la tua app?

Purtroppo non c'è modo di leggere l'installazione dell'hardware del computer dell'utente. Come una risposta dice che è possibile memorizzare un cookie sulla macchina ma può facilmente scomparire.

Se sono stati costretti ad usare i vecchi browser IE è possibile utilizzare ActiveX per leggere l'hardware del computer: http://www.devarticles.com/c/a/JavaScript/How-to-Use-JavaScript-for-Hardware-Knowledge/

2

Come circa l'MD5 del UserAgent + ClientIP + 'extrasalt'?

Ciò ti porterà vicino ma non perfetto perché è possibile che 2 client abbiano lo stesso IP (utilizzando NAT) e lo stesso stesso UserAgent (reparto IT strettamente controllato = stessa distribuzione o solo fortuna).

+0

-1: la maggior parte dei client ha IP dinamici e si è fortunati se un client mantiene lo stesso IP per alcuni giorni.Quindi, quando l'IP cambia, stai erroneamente considerando il nuovo hash come una nuova istanza del browser. – 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);

Con questi codice è possibile ottenere il tipo e la versione del browser, e il valore deve essere univoco in base alle diverse del browser, se si desidera generare altra base ID univoco su di esso , quindi usalo

15

Quello che stai cercando si chiama Browser Fingerprinting.

Puoi google per alcune librerie open source. Es: fingerprintjs2

Partenza EFF's demo

+2

Utilizzare la libreria javascript fingerprintjs2 in un progetto django corrente e funziona davvero bene ... – dave4jr