Как стать автором
Обновить

Определение ботов на сайте с помощью нейронных сетей

Время на прочтение4 мин
Количество просмотров7.5K

Пару лет назад, многие владельцы сайтов в рунете столкнулись с ростом посетителей из социальных сетей. Как оказалось, радоваться этому не стоит, потому что это боты, которые могут испортить поведенческие факторы, что приводит к понижению позиции в выдаче поисковых систем. Возникает вопрос - а как от этого защититься?

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

Сбор базы

Первое, что нужно для обучения нейронной сети - достаточное количество обучающих примеров - визитов, о которых мы достоверно знаем, что это боты и визитов, о которых точно известно, что это реальные люди.  Для такого отбора было использовано три параметра:

  1. Скоринг Recapcha V3.

  2. Залогинен ли посетитель в сервисах Google, Yandex, VK.

  3. Уникальность Canvas Hash.

Суть  последнего параметра в том, что на элементе HTML “холст” рисуется картинка, далее вычисляется md5 хэш этого изображения. В зависимости от операционной системы, ее версии, версии браузера, устройства, изображение чуть отличается и хэш получается разным. Боты, как правило, накладывают случайный шум на изображение, чтобы затруднить их детектирование, и в результате у них хэш получается уникальным. У реальных людей уникальных хэшей не бывает. 

Итак, реальный посетитель, если:

  1. Скоринг  Recapcha V3 >=0.9.

  2. Залогинен в Яндексе и в одном из: Google либо VK.

  3. Canvas Hash неуникальный.

Бот, если:

  1. Скоринг  Recapcha V3<=0.3

  2. Нигде не залогинен, либо залогинен только в Яндекс. Боты для накрутки поведенческих факторов очень часто ходят под профилем Яндекса.

  3. Уникальный Canvas Hash.

Данные брались с трех информационных сайтов за период в 1 месяц. В базу попало чуть больше сорока тысяч визитов, 25% из которых это боты и 75% реальные люди. Что именно собиралось будет описано далее.

Определение бота по параметрам браузера

Хотя боты и работают на браузерных движках, но это далеко не полноценный Google Chrome, за который они себя хотят выдать. Многие параметры им приходится эмулировать, чтобы выглядеть как настоящий пользовательский браузер. Вот и попробуем обучить нейронную сеть находить несоответствия эмулированных параметров реальным. Для этого соберем максимальное количество информации о браузере, а именно:

  • ОС, версия ОС, название браузера, версия браузера, модель гаджета, если есть возможность ее получить.

  • Параметры соединения - тип сети, скорость.

  • Разрешение экрана, размер окна отображения, есть ли полоса прокрутки и другие параметры, связанные с отображением.

  • Параметры webGL (модель видеокарты, размер памяти и т.п.).

  • Виды медиа контента, который может воспроизвести браузер.

  • Какие шрифты поддерживает браузер (анализируются 300 самых распространенных шрифтов).

  • Параметры WebRTC.

Получилось несколько десятков параметров

Следующее, что нужно решить - какую архитектуру нейронной сети использовать. Поскольку база несколько не сбалансирована, первое, что пришло в голову - попробовать автокодировщик. Обучить его на реальных людях (их 75%), а выбросы трактовать как ботов. Была использована следующая архитектура:

Результат получился такой:

Суммарная ошибка великовата. Надо попробовать обычный классификатор на полносвязанных слоях. Была подобрана следующая архитектура:

Что получилось:

Результат отличный! И для отсеивания большинства ботов, которые используются для накрутки ПФ, такая нейронка подходит.

Но что если бюджет позволяет использовать ботов не просто на браузерном движке, а на реальном Google Chrome? Это требует значительно больше ресурсов, но технически легко реализуемо. Для такого случая эта нейронная сеть не подойдет. Но можно попробовать проанализировать поведение бота и сравнить с поведением реальных людей.

Определение бота по поведению на сайте

Хорошие боты эмулируют поведение реального человека - они кликают, скроллят, двигают мышкой по траектории, похожей на человеческую и т.п. Но наверняка где-то ошибаются - может быть у них немного другое распределение событий, другие задержки, места клика и т.д. Попробуем собрать как можно больше данных о поведении посетителей. Для этого проанализируем следующие события:

  1. Движение мыши.

  2. Прокрутка колесика.

  3. Нажатие на сенсорный экран.

  4. Прокрутка на странице.

Для каждого события соберем следующие параметры:

  1. Длительность.

  2. Изменения по оси X и Y.

  3. Скорость изменения по оси X и Y.

  4. Число элементарных событий, которые получил браузер.

События укладываются во временной ряд, а значит имеет смысл использовать одномерные сверточные сети. Оптимальной получилась такая архитектура:

А результат следующий:

Результат тоже вполне хороший. К минусам можно отнести то, что требуется не меньше 20-ти секунд нахождения на странице, чтобы произошло достаточное количество действий. Поэтому нельзя применять для фильтрации траффика на этапе загрузки.

Вывод

Плюсы и минусы каждого метода приведены на картинке:

Что дальше

В дальнейшем планируется все довести до "ума" и запустить в виде сервиса.

Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+6
Комментарии14

Публикации

Истории

Работа

Data Scientist
97 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн