web-dev-qa-db-ja.com

JavaScriptの一意のブラウザID

とにかくjavascript内でブラウザーの一意のIDを作成する方法はありますか?

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

例:

Windows 7 Chrome生成される可能性がある:asdh128hakj4gh

Windows 7 Opera生成される可能性があります:23hjad823hjakk

Windows 7 Chrome、差分ハードウェア、生成される可能性があります:asd238881jaal

等...

とにかくこれを行うにはありますか?

27
Ozzy

cookiesとそれに固有のハッシュを使用します。 (コンピューター上に多くのブラウザーがある場合でも、各ブラウザーには独自のCookie jarがあります)

7
IProblemFactory

あなたが探しているものはブラウザフィンガープリントと呼ばれています。

いくつかのオープンソースライブラリをグーグルできます。例: fingerprintjs2

チェックアウト EFFのデモ

26
Makubex

UserAgent + ClientIP + 'extrasalt'のMD5はどうですか?

2つのクライアントが同じIP(NATを使用)と完全に同じUserAgent(厳密に管理されたIT部門=同一のデプロイメント、または単に運)を持つ可能性があるため、これは近づきますが完全ではありません。

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

これらのコードを使用すると、ブラウザのタイプとバージョンを取得できます。値に基づいて他の一意のIDを生成したい場合は、ブラウザごとに一意にする必要があります。

1
Jaycee

あなたがやろうとしているように見えるのは、ある種のライセンスです。アプリを使用するために登録できるブラウザは非常に多くなりますか?

残念ながら、ユーザーのコンピューターのハードウェア設定を読み取る方法はありません。答えの1つとして、マシンにCookieを保存することはできますが、簡単に失われる可能性があります。

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

0
Brady