Роботы (боты) просматривают контент на сайте?

Добрый вечер, есть сайт-галерея dota.gallery на Yii2 ( ~150 посетителей в неделю), раньше при просмотре какой-либо картинки при каждом обновлении страницы кол-во просмотров этой картинки увеличивалось на единицу. Я решил это исправить и сделал таблицу, которая хранит информацию о том, кто и какую картинку смотрел.

Изначально идентификатором для пользователей ( user_id ) я решил делать случайное число, которое записывалось в переменную сессии $_SESSION (да, решение не идеальное, но при такой посещаемости - оптимальное). На всякий случай проверил работоспособность системы в браузере Тор. Только после этого я обнаружил, что сайт находится под круглосуточной "атакой" и после этого добавил в таблицу ip и дату просмотра картинки.

На скриншоте 5f85ddb39158e456489551.jpeg
видно, что запросы невероятно частые и что не менее важно, даже при одинаковом ip у запросов разные user_id то есть у каждого запроса новая сессия. На условную тысячу запросов на просмотр картинок приходится условные 200 разных ip-адресов и тысяча разных сессий. В сутки таких запросов не менее трёх тысяч, при этом Яндекс.Метрика показывает 20-25 посетителей.

Пока что я сделал заглушку из условия, мол если у user_id нет в истории хотя бы двух просмотров, то его просмотры не учитываются, но на этом мои способности всё.

Как с этим бороться? Откуда взялись эти роботы в таком количестве и что они вообще у меня забыли?
И самое главное: как сделать систему, которая будет учитывать только просмотры реальных людей хотя бы в большинстве своём?
  • Вопрос задан
  • 224 просмотра
Решения вопроса 1
nokimaro
@nokimaro
- 1 запрос раз в 5 секунд, это не является "невероятно частыми" запросами. Невероятно частые это когда приходит GoogleBot или YandexBot и сканирует сайт со скорость 5-10 запросов в секунду.
- боты как правило не поддерживают cookies и соотв-но каждое открытие страницы для них стартует новая сессия
- я бы на вашем месте логировал так же user agent который бы подсказал что по этому ip - user agent
Mozilla/5.0 (compatible; Adsbot/3.1)

- как правило легитимные боты и сканеры не пытаются маскироваться под реальных людей и их можно определять по user agent и не стартовать им сессию, а так же не учитывать просмотры. Можно использовать готовую библиотеку для детекта ботов и краулеров, например https://github.com/JayBizzle/Crawler-Detect
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы