JavaScript уникальный идентификатор браузера - PullRequest
22 голосов
/ 08 февраля 2011

есть ли способ создать уникальный идентификатор для браузера в javascript?

Я не говорю об идентификаторе, который является случайным каждый раз, когда он генерируется, но идентификатор, который уникален для браузера, в котором он генерируется, нотакже учитывает, на каком компьютере он работает.

Пример:

Windows 7 Chrome может генерировать: asdh128hakj4gh

Windows 7 Opera может генерировать: 23hjad823hjakk

Windows 7 Chrome, другое аппаратное обеспечение, может генерировать: asd238881jaal

и т. Д. *

Есть ли способ сделать это?

Ответы [ 5 ]

26 голосов
/ 24 декабря 2015

То, что вы ищете, называется отпечатками пальцев браузера.

Вы можете поискать в некоторых библиотеках с открытым исходным кодом.Пример: fingerprintjs2

Ознакомьтесь с Демоверсия EFF

6 голосов
/ 08 февраля 2011

Используйте cookies и некоторый уникальный хеш в его. (У каждого браузера есть свой файл cookie, даже если на компьютере установлено много браузеров)

2 голосов
/ 19 ноября 2013

Как насчет MD5 UserAgent + ClientIP + «extrasalt»?

Это сблизит вас, но не идеально, потому что 2 клиента могут иметь один и тот же IP-адрес (используя NAT) и точно такой же UserAgent (строго контролируемый ИТ-отдел = одинаковое развертывание или просто удача).

1 голос
/ 24 декабря 2015

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

С помощью этого кода вы можете получить тип и версию браузера, и значение должно быть уникальным в зависимости от другого браузера, если вы хотите сгенерировать другую уникальную идентификационную базу на его основе, используйте его

0 голосов
/ 08 февраля 2011

Похоже, вы пытаетесь сделать что-то вроде лицензирования?Таким образом, только одно количество браузеров может быть зарегистрировано для использования вашего приложения?

К сожалению, нет способа прочитать настройки компьютерного оборудования пользователя.Как говорится в одном ответе, вы можете сохранить cookie на компьютере, но он может легко пропасть.

Если вы ограничены в использовании старых браузеров IE, вы можете использовать activeX для чтения аппаратного обеспечения компьютера: http://www.devarticles.com/c/a/JavaScript/How-to-Use-JavaScript-for-Hardware-Knowledge/

...