Как заблокировать ботов на сайте через Cloudflare и ничего не сломать

В своём Телеграм канале я пишу про сайты, ИИ и программирование - https://t.me/webmasta_ru - подписывайся!

Автор: webmasta | Опубликовано:
Обновлено:
боты накрутчики пф - как их блокировать

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

Блокировка ботов - занятие более рискованное, чем кажется на первый взгляд.
Делайте это ИСКЛЮЧИТЕЛЬНО в тех случаях, когда Вы на 146% уверены, что по-другому никак и количество ботов превышает хотя бы 20% от общего трафика

Внимание! Статья потеряла свою актуальность из-за блокировки Cloudflare в России.

▲

Что за боты такие?

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

Им нужно "нахаживать" свои сетевые профили, то есть создавать цифровой отпечаток активности, иллюзию реального человека.

Их глобальные цели впоследствии:

  • накручивать поведенческие факторы сайтам,
  • скликивать конкурентов в выдаче,
  • сливать бюджет в Директе или портить ПФ.

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

Плюс от них нет никакой пользы в плане показов рекламы, так как отдельный счетчик РСЯ показывает статистику без учёта бот трафика. Скорее всего эти боты используют AdBlock.

Действительно ли они портят позиции сайтов сказать сложно. Кто-то забивает на них, а другие борятся до последнего выжившего посетителя.

Метрика РСЯ ботов не учитывает, но обычный счетчик видит. Но тут, возможно, дело в том, что у ботов стоят адблоки для экономии трафика и ресурсов.

Liveinternet счетчик, на удивление, с отсеиванием ботов справляется гораздо лучше и показывает более "чистую" статистику.

▲

Когда надо блокировать ботов?

  • Если доля роботных визитов приближается или переваливает за 50%.
  • Если есть подозрения, что боты сильно портят ПФ сайта или начались просадки по позициям и трафику.
  • Блокировать ботов можно на прокладках (прелендингах) для отсеивания ботов, чтобы получать более "чистый" трафик.

Не надо блокировать ботов исключительно в целях профилактики.

Прежде чем банить любой трафик, стоит 100 раз подумать!

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

▲

В чем опасность блокировки ботов

Прежде чем отладить и довести до совершенства свой фильтр мне пришлось наломать дров.

Первая опасность - можно случайно забанить "хороших" ботов.

Не все помнят, но я напомню, что у каждой поисковой системы не один и не два бота, а с десяток, а то и с два. Основной индексирующий бот, бот для получения картинок, рекламный бот, бот для фидов, блогов, новостной бот и так далее. И у каждого свой юзер агент и, возможно, IP.

Второй риск - под фильтр могут попасть обычные пользователи. Но это менее страшно, так как те, кто не смог нажать на галочку "я не бот", возможно слишком ленивые и от них и так было бы мало пользы )))

Третье - лишняя логика. Я всегда стремлюсь выполнять правило: чем проще - тем лучше. Дополнительные фильтры усложняют логику работы сайта. О них можно легко забыть, а потом встретить непредвиденные, неочевидные проблемы. И эти проблемы не сразу можно будет связать с фильтрацией трафика. Самый простой пример - какие-то верификации сайта на сервисах (подтверждение владением).

▲

Как заблокировать ботов?

Есть очень большое количество сопобов блокировки. Можно блочить по IP, маскам, провайдерам и прочим параметрам, но все эти способы подразумевают знание того, что Вы делаете. И тут риск ошибки возрастает в разы.

Поэтому пойдём моим любимым путём, выбрав самое простое и действенное решение.

Для этого нам понадобится подключить сайт к Cloudflare.

Статья в тему: как обойти блокировку ECH от Cloudflare.

Далее порядок действий следующий:

  1. Выбираем добавленный домен в Cloudflare.
  2. В панели слева выбираем Security > Security rules.
  3. Нажимаем кнопку Create rule > Custom rule.

WAF расшифровывается, как Web Application Firewall, что переводится, как Брандмауэр веб-приложения.

Примечание: клауд немного изменил интерфейс в одном из своих последних обновлений, теперь некоторые кнопки, формы и заголовки немного по другому называются. Например вместо WAF сейчас в заголовке страницы написано "New Custom Rule". Возможны и другие изменения, но сам принцип остался прежним, а мне, если честно, очень влом переделывать все скриншоты.

Откроется вот такая страница:

cloudflare waf rule

  • Rule name - название правила, ни на что не влияет, можно написать любое, например "Bot fight".
     
  • Ниже расположен конструктор правил. При желании можно воспользоваться им и настроить правила вручную.
    Но я же знаю, насколько ты ленивая жопа, поэтому список правил можно будет импортировать списком. О правилах будет ниже.
     
  • Choose action - здесь можно выбрать действие, которое будет применяться к трафику, который будет соответствовать критериям указанных правил.
    Чтобы оставить возможность обычным пользователям посещать сайт, если их визит будет похож на ботовый, лучше выбрать тут Managed challenge - это ввод каптчи.
    Либо, если на 100% уверены в своих правилах, можно выбрать Block, но я крайне не рекомендую это делать.
     
  • Place at. Select order - каким по счету будет выполнено это правило (целиком). Если у Вас нет других правил, то не важно, что тут выбирать. Если есть другие правила, то борьбу с ботами можно выполнить на первом месте.

Правила WAF фильтра

Это универсальные и самые "лёгкие" правила. При желании там можно накрутить разного и ужесточить фильтрацию ботов.

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

Но чаще этим никто не заморачивается и ботоводы просто забивают на Ваш сайт. Если это не конкуренты, конечно.

Нажимаем кнопку Edit expression, откроется текстовое поле, в которое вставляем следующее содержимое (ниже пояснение, что это всё означает):

(not http.user_agent contains "yandex.com/bots" and not http.user_agent contains "google.com/bot" and not http.user_agent contains "google.com/mobile/adsbot" and not http.user_agent contains "Google-Site-Verification" and not http.user_agent contains "Google-Read-Aloud" and not http.user_agent contains "Googlebot" and not http.user_agent contains "Storebot-Google" and not http.user_agent contains "Google-InspectionTool" and not http.user_agent contains "GoogleOther" and not http.user_agent contains "Google-CloudVertexBot " and not http.user_agent contains "Google-Extended" and not http.user_agent contains "APIs-Google" and not http.user_agent contains "AdsBot-Google" and not http.user_agent contains "Mediapartners-Google" and not http.user_agent contains "Google-Safety" and not http.user_agent contains "FeedFetcher-Google" and not http.user_agent contains "GoogleProducer" and not http.user_agent contains "bing.com/bingbot" and not http.user_agent contains "MicrosoftPreview" and http.referer eq "")

Переключившись обратно, нажав на Use expression builder, должны увидеть такую картину:

cloudflare waf expression builder

Что означают эти правила

Проанализировав десятки тысяч посещений ботов я выявил паттерн их поведения - в 90% случаев они заходят на сайт без реферера, то есть из закладок.

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

Поэтому нужно исключить хороших ботов, а сделать это проще всего, указав их User-agent.

Списки юзер агентов:

Перечисленные боты НЕ будут блокироваться моими правилами.

Если нужны какие-то более специфические боты, нужно будет добавить их в список самостоятельно.

▲

Как понять, что блокировка работает?

После создания правила в WAF, через некоторое время будет отображаться статистика за последние сутки:

waf статистика срабатываний

  • CSR - Challenge solved rate, коэффициент решения каптчи, чем меньше - тем лучше (значит, что правила работают). Формула: (решенных каптч) \ (всего показанных каптч).
  • Activity last 24 hours - активность за последние 24 часа. По клику можно попасть на страницу Security > Events со списков всех событий, связанных с безопасностью, где можно в частности посмотреть подробности по каждому срабатыванию WAF фильтров (ip, user agent, страницу входа и тд).
▲

Результаты

Правила блокировок проходили несколько итераций. Для каждого сайта возможен индивидуальный подход.

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

Прямые заходы на сайт с 2000 до 500, а затем и до 20:

прямые заходы

 

Доля визитов с роботами с 50-80% до 5%:

доля визитов с роботами

 

Время на сайте выросло с 15-20 секунд до 30-50 секунд в среднем и в пике до 1,5 минут:

время на сайте

 

Отказы с 70% до 50%, а после последних правок до рекордных 15-20%:

отказы

 

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

Картина ДО:

вебвизор до блокировки ботов

 

После блокировки ботов выросла, как активность, так и время на сайте:

вебвизор и поведение пользователей после блокировки ботов

Повлияло ли на позиции и трафик?

Прошло мало времени, результатов еще нет.

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

 

▲

Комментарии

Серж (гость) 19.06.2025 - 19:39

К сожалению все меняется... Как и боты....

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href> <b> <i>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

Об авторе: меня зовут Иван, в сайтах с 2006 года, я программист и SEO'шник. Помимо этого сайта недавно начал вести Телеграм канал, в котором публикую свои мысли, планы, результаты опытов и прочую, иногда даже годную ерунду про сайты, ИИ и программирование - https://t.me/webmasta_ru - подписывайся!