Как определить посетителя на основе характеристик браузера?
Я делаю простое приложение, в котором пользователи могут оценивать элементы.
Я хочу сделать приложение очень простым в использовании и хотел бы избежать входа в систему, даже если это означает менее точные оценки.
Я нашел эту статью о признании пользователя на основе характеристик браузера:
http://www.mediapost.com/publications/?fa=Articles.showArticle&art_aid=128563
Как я могу реализовать что-то подобное в JS/ Node.js?
Ответы
Ответ 1
Вместо того, чтобы делать много трюков, основанных на характеристиках браузера, которые могут быть или не быть доступны, вы можете просто использовать файл cookie. Браузеры могут меняться/обновляться с течением времени. Вы не сможете избежать изменения браузера, вызвав нового пользователя в любом случае. Но cookie будет поддерживаться при обновлении браузера. Просто установите cookie для некоторого (полу) уникального значения (например, времени, включая миллисекунды + IP-адрес), и все будет настроено. В тот момент, когда у вас так много пользователей, что (полу) уникальные значения имеют проблемы, вы все равно будете перестраивать свой сайт (и, вероятно, у вас будет команда людей, работающих на вас).
Ответ 2
Если по какой-то причине вы хотите избежать куки файлов, вы можете использовать PHP для получения IP-адреса клиента:
<?php
echo ' Client IP: ';
if ( isset($_SERVER["REMOTE_ADDR"]) ) {
echo '' . $_SERVER["REMOTE_ADDR"] . ' ';
} else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) {
echo '' . $_SERVER["HTTP_X_FORWARDED_FOR"] . ' ';
} else if ( isset($_SERVER["HTTP_CLIENT_IP"]) ) {
echo '' . $_SERVER["HTTP_CLIENT_IP"] . ' ';
}
?>
Вы можете добавить функцию, запрашивающую имя пользователя, если ip-адрес не находится в файле, и связать новый IP со старыми именами пользователей и т.д. Файлы cookie работают намного лучше:)
Другой вариант, более простой, чем файлы cookie, будет localStorage:
Дайте клиенту UUID:
localStorage.setItem('user',UUID);
Получить UUID клиента:
localStorage.getItem('user');
Это немного лучше, чем использование файлов cookie, например, в Firefox (в соответствии с MDC):
- Хранилище DOM можно очистить с помощью "Инструменты → Очистить недавнюю историю → Cookies ", когда диапазон времени" Все "(через
nsICookieManager:: RemoveAll)
- Но если не указан другой временной диапазон: (ошибка 527667)
- Не отображается в Инструменты → Параметры → Конфиденциальность → Удалить отдельные
cookie (ошибка 506692)
- Хранилище DOM не очищается с помощью Tools → Options → Advanced → Сеть → Автономные данные → Очистить сейчас.
- Не отображается в "Инструменты → Параметры → Дополнительно → Сеть → Offline data ", если сайт не использует автономный кеш.
сайт появляется в этом списке, данные хранилища DOM удаляются
наряду с автономным кешем при нажатии кнопки "Удалить".
но он работает только с HTML 5.
Ответ 3
Я согласен с evan, гораздо проще сделать это с помощью файлов cookie.
если вы хотите написать что-то подобное, вам нужно будет получать данные с сервера и из браузера (ip, браузер, flash, java, cookies...): весовые данные, создание правил изменений, таких как обновления браузера обновляются, чтобы увеличить или уменьшить вес, чем создать нейронную сеть нейронов, собрать массу учебных данных и научить вашу сеть. (Вы можете использовать другой подход, не используя нейронные сети)
Это хороший проект, но похоже, что он использует танк или линкор, чтобы убить мышь.
Я думаю, что разница между использованием простых файлов cookie и этим набором характеристик браузера будет составлять около 10%, поэтому переходим на файлы cookie.
Ответ 4
Вы можете посмотреть здесь:
http://www.w3schools.com/js/js_browser.asp
Но я настоятельно рекомендую использовать файлы cookie для этой цели.
Также имейте в виду, что файлы cookie могут быть изменены пользователем.
Если вы можете - просто используйте что-то вроде PHP $_SESSION
Ответ 5
Я бы искал обнаружение определенного объекта в js вместо браунинга sniffing... проверить эту ссылку