Как отличить ботов от реальных пользователей на сайте?
Есть простой сайт в админ панели которого необходимо выводить статистику: общее число уникальных пользователей посетивших сайт за день, месяц и тд
Реализовал проверку по IP, что бы каждый запрос к сайту, проверялся.
IP проверяю отправляя get запрос на http://ipinfo.io/{ip_address}/
В результате заметил, что к сайту очень много запросов из стран Европы и Америки:
...
'ip': 'ip_adr', 'hostname': 'keok5.agenciasego.com.br', 'city': 'Denver', 'country': 'US'...
'ip': 'ip_adr', 'hostname': 'bc.googleusercontent.com', 'city': 'Brussels', 'country': 'BE' ...
'ip': 'ip_adr', 'hostname': 'msnbot.search.msn.com', 'city': 'Boydton', 'country': 'US' ...
...
По hostname удалось определить некоторых ботов и не добавлять их в статистику, но не для всех адресов в ответе возвращается hostname.
Возник вопрос: Как отсортировать реальных пользователей от ботов, либо свести количество ботов для статистики к минимуму? Какие способы и варианты существуют?
Все зарубежные подключения принимать за ботов - не вариант, тк многие используют VPN.
Подключения показались подозрительными, тк за сутки несколько запросов поступило из Шанхая, Сингапура, из стран Латинской Америки и тд., на маленький региональный российский сайт.
Ответы (2 шт):
отдайте эту задачу тем, у кого давно нюх на ботов заточен, например яндекс.метрике
иначе придётся самостоятельно ставить ботам кукисы и проверять их или писать метки в session/LocalStorage
Я недавно столкнулся с такой же проблемой, когда реализовывал функционал для временной учётной записи гостя.
В моём случае, я просто привязал функционал создания гостевой учётной записи к некоторому действию. Боты делают чисто Get
запрос, не более. Вам нужно, что бы пользователь хотя бы какую-то кнопку нажал. Может быть пример с принятием куков
. Согласие либо отклонения политики куки уже свидетельствует о том, что это реальный пользователь
Если вам нужно считать именно переходы на страницы (или вообще на сайт), наверное лучшим способом будет просто смотреть по готовому списку всех известных ботов и методом перебора вычислять, является ли это бот, или нет.
Так же отличным вариантом может быть использования/проверка отпечатков сайта. Отлична библиотека для Js FingerprintJs
Кроме того, анализируя опыт работы с payment-провайдерами
, есть такая штука как Strong Customer Authentication
, которая требует (вроде как всегда) данных браузера пользователя, который делает оплату. Сюда входят такие штуки как:
- Browser Screen Height
- Browser Screen Width
- Browser Language
- Browser Time Zone
- Browser Enabled Js
- Browser Ebabled Java (deprecated)
- Browser Color Depth
- Browser User Agent
Это информацию вы можете просматривать при анализе ботов. Стоит учесть, что это информация браузера посетителя сайта, которой баты не обладают