2011-02-08 45 views
17

とにかくjavascript内のブラウザ用に一意のIDを作成するにはどうしますか?JavaScriptユニークブラウザID

私は、生成されるたびにランダムなIDについては言及しませんが、それが生成されるブラウザに固有のIDだけでなく、実行中のコンピュータも考慮に入れます。

例:

Windows 7のクロム生成することがあります:Operaは生成される可能性があります

Windows 7のasdh128hakj4gh:23hjad823hjakk

のWindows 7クローム、diffのハードウェアは、生成することがあります:asd238881jaal

など。

どうすればよいですか?

+1

は、IDは、Windows 7上でChromeを実行しているすべてのコンピュータで同じであるべきである、またはあなたがセッションIDに似たIDを考えているの? –

+2

'userAgent'誰ですか? – Raynos

+0

OS、ハードウェア、ブラウザによってIDが異なることがありますが、同じOSのハードウェアとブラウザで2回生成されたIDは同じである可能性があります。 – Ozzy

答えて

5

cookiesとそれにユニークなハッシュを使用してください。 (各ブラウザには、コンピュータ上に多数のブラウザがあっても、独自のCookie jarファイルがあります)

+0

私はFireFoxを開いて、それにクッキーの中にランダムなIDを与え、2nd FireFoxを開き、同じクッキーを読みます。 –

+5

ええ、各ブラウザのインス​​トールには、それぞれのブラウザインスタンスではなく、独自のCookie jarがあります。 – IProblemFactory

0

何かのライセンスはありますか?あなたのアプリを使うために非常に多くのブラウザしか登録できないのですか?

不幸にも、ユーザーのコンピュータのハードウェア設定を読む方法はありません。一つの答えは、あなたはマシンにクッキーを保存することができますが、それは簡単に行方不明になることができると言う。

あなたがコンピュータのハードウェアを読み取るために、あなたがたActiveXを使用することができ、古いIEブラウザを使用するように制限していた場合:http://www.devarticles.com/c/a/JavaScript/How-to-Use-JavaScript-for-Hardware-Knowledge/

2

どの程度のUserAgent +たClientIP +「extrasalt」のMD5?

2人のクライアントが同じIP(NATを使用)と全く同じUserAgent(緊密に管理されているIT部門=同じ展開、または運が良い)が可能であるため、完璧ではありません。これらのコードで

+0

-1:ほとんどのクライアントには動的IPがあります。だから、IPが変わったら、新しいハッシュを新しいブラウザのインス​​タンスとして間違って考えることになります。 – 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);

あなたはタイプとブラウザのバージョンを取得することができ、そしてあなたがそれに他のユニークなIDベースを生成する場合値は、別のブラウザに応じて一意である必要がありますそれを使用してください

15

あなたが探しているものは、ブラウザ指紋と呼ばれています。

一部のオープンソースライブラリについては、Googleを使用できます。 例:fingerprintjs2

チェックアウトEFF's demo

+2

現在のdjangoプロジェクトでfingerprintjs2 javascriptライブラリを使用すると、実際にうまくいきます... – dave4jr