Почти 40% интернет-трафика приходится на ботов. Часть этого трафика является законной, например, от индексаторов поисковых систем, а часть — нет, например, большие объемы от DDoS-атак.

Боты можно разделить на две категории: хорошие боты и плохие боты.

Хорошие боты предназначены для повышения производительности. К ним относятся чат-боты и индексаторы, необходимые для поисковых систем.

Плохие боты, однако, предназначены для выполнения таких задач, как сканирование, DDoS-атаки и атаки методом грубой силы на учетные записи клиентов.

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

Что такое бот?

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

Есть несколько причин, по которым онлайн-платформы хотят защитить себя от ботов:

· Защита данных от конкурентов

· Ограничение затрат на инфраструктуру

· Оптимизировать доступность сайта

· Улучшить работу в Интернете

Растущая доля трафика ботов

В последние годы доля бот-трафика в Интернете постоянно росла. Считается, что почти 40% интернет-трафика исходит от ботов, а 30% — от плохих ботов.

В дополнение к увеличению бот-трафика выделяется еще одна тенденция: боты становятся все более изощренными в стремлении перехитрить средства защиты от ботов.

Мы можем разделить плохих ботов на три категории: простые боты с одним IP-адресом, которые не могут запускать простой JavaScript.

Промежуточные боты, которые немного сложнее и могут запускать JavaScript в обычном веб-браузере.

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

ИИ в основе механизма

Чтобы бороться с появлением сложных вредоносных ботов, мы внедрили решения, основанные на искусственном интеллекте и машинном обучении, чтобы выявлять и блокировать их, чтобы защитить себя.

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

Благодаря этому мы смогли создать набор данных с миллионами примеров трафика людей и ботов. Затем этот набор данных был передан нашему ИИ для обучения. После обучения ИИ смог делать прогнозы для пользователей, которых он никогда раньше не видел:

Модель дает вероятность бота от 0 до 1. Затем мы можем установить порог для того, чтобы считать, что мы имеем дело с ботом. По умолчанию этот порог установлен на 0,5, но, увеличив его, например, до 0,9, мы можем настроить таргетинг на тех ботов, в отношении которых мы наиболее уверены, и ограничить количество ложных срабатываний.

Чем выше порог, тем меньше модель будет ложно ловить пользователей, снижая количество ложных срабатываний.

Визуализация нашего ИИ

Мы используем высокопроизводительную модель случайного леса, используя данные, собранные из поведения человека и бота в Интернете.

Модель случайного леса состоит из нескольких деревьев решений. Каждое дерево решений приводит к классификации. Затем эти классификации объединяются для получения окончательной классификации.

Для случайного леса со 100 деревьями решений каждое из деревьев решений возвращает свою классификацию. Если более половины деревьев решений (здесь 50 деревьев) возвращают классификацию «бот», то окончательная модель также вернет «бот».

Это также позволяет нам сделать вывод о вероятности бота. Например, если 95 деревьев возвращают «бот», то вероятность бота из итоговой модели составляет 95%.

Вот графическая иллюстрация одного из наших деревьев решений:

Чтобы классифицировать пользователя как бота или человека, мы начинаем с вершины дерева. В каждом узле дерева мы идем влево или вправо в зависимости от порогового значения.

Например, верхний узел содержит переменную «referer_empty». Пороговое значение для этого узла было установлено на уровне 1,50 во время обучения. Это приводит к двум случаям:

· referer_empty ‹ 1.50: последовательность продолжается вниз по левой ветке

· referer_empty › 1.50: последовательность продолжается вниз по правой ветке

Этот процесс продолжается до самого нижнего узла. Самый нижний узел называется «листом», потому что он не может иметь базового узла. Листья используются для возврата классификации дерева. Размер кругов листьев указывает на долю пользователей, которые были классифицированы во время обучения. Чем больше круг, тем выше вероятность того, что пользователь будет найден в этом конечном узле.

Пример классификации ИИ

Пользователь 1 считается ботом с вероятностью бота 90%, тогда как пользователь 2 считается человеком с вероятностью бота 4%. Эти классификации основаны на входных переменных. Мы видим, что пользователь 1 сделал много запросов, у него пустые куки, нет реферера и возникла ошибка 404.

Во время обучения ИИ мог видеть ботов с похожим поведением. Все эти параметры привели к тому, что ИИ идентифицировал бота.

Однако пользователь 2 сделал среднее количество запросов на Cdiscount.com, у него нет пустого файла cookie, есть реферер и нет ошибки 404. Все эти переменные привели к тому, что ИИ принял этого пользователя за человека.

Метод оценки эффективности

Есть несколько критериев, которые следует учитывать при оценке производительности нашего ИИ. Цель состоит в том, чтобы обнаружить как можно больше ботов и свести к минимуму количество ложных срабатываний.

Ложные срабатывания — это законные пользователи, которых ИИ классифицирует как ботов.

Существует несколько показателей для оценки производительности ИИ, таких как точность, точность, отзыв и оценка F1. Все эти показатели можно рассчитать с помощью матрицы путаницы.

Матрица путаницы представляет собой таблицу, в которой обобщаются характеристики классификации модели. Он показывает количество истинно положительных, ложноположительных, истинно отрицательных и ложноотрицательных результатов.

Точность — это показатель, обычно используемый в машинном обучении для оценки производительности модели классификации. Он представляет собой долю правильных прогнозов среди всех прогнозов, сделанных моделью.

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

Переобучение модели

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

Наши результаты

В 2022 году мы внесли улучшения, в том числе добавили новые данные, которые расширили возможности модели для принятия решений. Мы объединили данные сервера с данными браузера:

Благодаря этим новым данным количество обнаруженных ботов выросло в пять раз, а количество ложных срабатываний сократилось в пять раз. Можно сказать, что наше обнаружение ботов в 25 раз эффективнее.

Наша модель AI для обнаружения ботов в настоящее время имеет точность почти 99,9% в производстве, и мы решили предложить ее с моделью SaaS через продукт на https://baleen.cloud.

Мы знаем, что боты будут продолжать развиваться, чтобы избежать обнаружения, поэтому Baleen продолжит улучшать свой ИИ с течением времени, чтобы противостоять угрозам в будущем.