Мы принципиально не хотим быть чёрным ящиком: каждая пометка «бот» в Трафло объяснима. Вот шесть сигналов, из которых складывается оценка визита, и логика каждого из них.
1. User-agent известного бота
Самый простой случай: краулеры и утилиты вроде python-requests или Scrapy честно представляются. Такой визит получает максимальный вес сразу. Ловит только «честных» ботов, поэтому дальше начинается интересное.
2. IP из дата-центра
Живые люди сидят за домашними и мобильными провайдерами. Если визит пришёл с адреса AWS, Hetzner или другого облака, почти наверняка это скрипт: обычный человек не ходит в интернет с арендованного сервера.
3. Нет движения мыши
Человек шевелит мышью или скроллит уже в первые секунды, даже просто читая. Скрипт загружает страницу и молчит. Отсутствие каких-либо событий ввода за пять секунд активной страницы - сильный поведенческий сигнал.
4. Подозрительный canvas-отпечаток
Сниппет рисует небольшую картинку и хэширует результат. Настоящие браузеры дают разнообразные отпечатки, зависящие от системы и видеокарты. Headless-окружения выдают характерные или пустые значения.
5. Таймзона не совпадает с географией
Браузер сообщает таймзону, IP даёт примерную географию. У человека из Новосибирска они согласованы. У бота, который ходит через прокси, часто нет: сервер в Европе, таймзона по умолчанию UTC.
6. Мгновенный уход
Уход со страницы быстрее чем за секунду при наличии контента: человек столько не успевает даже прочитать заголовок. Слабый сигнал сам по себе, но в сумме с другими добавляет уверенности.
Почему это сумма, а не одно правило
Каждый сигнал по отдельности даёт ложные срабатывания: бывает человек без мыши на тачскрине, бывает корпоративный VPN из дата-центра. Поэтому сигналы складываются в score от 0 до 100, а порог вы настраиваете сами под специфику своего трафика. И главное: к каждому визиту прилагается список сработавших правил, так что любой вердикт можно проверить руками.
Попробуйте сами на интерактивном калькуляторе скоринга: включайте сигналы и смотрите, в какой момент визит превращается в бота.
