web-dev-qa-db-fra.com

Identifiant unique du navigateur JavaScript

est-il possible de créer un identifiant unique pour un navigateur en javascript?

Je ne parle pas d'un ID aléatoire à chaque fois qu'il est généré, mais d'un ID unique au navigateur dans lequel il est généré, mais prend également en compte l'ordinateur sur lequel il fonctionne.

Exemple:

Windows 7 Chrome pourrait générer: asdh128hakj4gh

Windows 7 Opera pourrait générer: 23hjad823hjakk

Windows 7 Chrome, matériel diff, peut générer: asd238881jaal

etc...

Y a-t-il un moyen de faire ça?

27
Ozzy

Utilisez cookies et un hachage unique dans son. (Chaque navigateur possède son propre cookie, même si sur l'ordinateur il y a plusieurs navigateurs)

7
IProblemFactory

Ce que vous recherchez s'appelle empreinte digitale du navigateur.

Vous pouvez google pour certaines bibliothèques open source. Ex: fingerprintjs2

Découvrez démo d'EFF

26
Makubex

Qu'en est-il du MD5 de UserAgent + ClientIP + 'extrasalt'?

Cela vous rapprochera mais n'est pas parfait car il est possible pour 2 clients d'avoir la même IP (en utilisant NAT) et exactement le même UserAgent (département informatique étroitement contrôlé = même déploiement, ou tout simplement de la chance).

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

Avec ce code, vous pouvez obtenir le type et la version du navigateur, et la valeur doit être unique en fonction du navigateur, si vous souhaitez générer une autre base d'ID unique dessus, puis l'utiliser

1
Jaycee

Qu'est-ce que vous essayez de faire, c'est une sorte de licence? Pour que seulement autant de navigateurs puissent être enregistrés pour utiliser votre application?

Malheureusement, il n'y a aucun moyen de lire la configuration matérielle de l'ordinateur des utilisateurs. Comme le dit une réponse, vous pouvez stocker un cookie sur la machine, mais il peut facilement disparaître.

Si vous étiez limité à utiliser d'anciens navigateurs IE vous pouvez utiliser ActiveX pour lire le matériel informatique: http://www.devarticles.com/c/a/JavaScript/How-to -Utiliser JavaScript pour la connaissance du matériel /

0
Brady