Как заблокировать ботов с помощью Cloudflare
- Что нужно
- Этапы
- Регистрация
- Метрика
- Лог-файл
- Текстовый редактор
- WHOIS-сервис
- CleanTalk-сервис
- Настройка Cloudflare
- Правило №1: Хорошие боты
- Правило №2: Плохие боты
- Правило №3: Referer/As num (Соцсети и/или ASN-сети)
- Правило №4: SSL/HTTPS
- Правило №5: HTTP Version
- Итог
В последние несколько лет (с весны 2020) нашествие ботов на сайты стало носить массовый характер, обратившись бедой для вебмастеров, да и просто обычных людей, имеющих свой сайт (блог, канал) — некий ресурс данных. Как правило, подобные обстоятельства особо не беспокоят, пока на сайте всё хорошо и никто не заглядывает в его аналитику. Но как только об этом становится известно, страх и сомнения не дают покоя, особенно когда в интернете в последнее время только и разговоров, что о ботах да о накрутках.
Не буду вдаваться в природу возникновения и существования ботов — в сети этой информации довольно много. Подойду сразу к сути — к их блокировке.
Что нужно
Для выполнения данной миссии необходимо:
- доступ к платформе Cloudflare — нужна регистрация (бесплатно);
- доступ к хостинг-панели сайта;
- доступ к метрике (Я.Метрика или Google Analytics);
- текстовый редактор (крайне желателен Notepad++);
- сервис для определения WHOIS данных по IP-адресу (https://2ip.ru/asn-by-ip/) — без регистрации;
- облачный сервис защиты Web-сайтов от спам-ботов (https://cleantalk.org/blacklists) — без регистрации.
Главный, безусловно, во всем этом списке — Cloudflare. Это мегаплатформа, которая при умелом использовании способна на очень многое. Остальные способы (удаление кода метрики с сайта, блокировка по IP-адресам через конфигурационные файлы веб-сервера (Apache/Nginx), указание «запрещающих» директив в файле robots.txt) рассматривать не буду, так как помог только тот, о котором речь пойдет в данной статье. Ну что ж, хватит лирики, поехали...
Этапы
Перед настройкой Cloudflare необходимо пройти подготовительные 6 этапов, строго следуя указанным там рекомендациям.
Регистрация
Регистрируемся на сайте Cloudflare. Прописываем NS-серверы и ждемс... в теории примерно 1-8 часов, но на деле всё намного быстрее — 15-20 минут. Многие советуют делать это ночью, чтобы возможные перебои в работе сайта несильно влияли на трафик. Однако практика показала, что и в разгар рабочего дня никаких перебоев не происходит.
ВНИМАНИЕ! Очень важно обратить внимание на следующий момент. Смена NS-серверов — отчаянная мера, которая в некоторых случаях может привести к потере работоспособности всевозможных сервисов, подключенных к сайту. Например, почта, которая сразу же перестанет работать. К счастью, есть подробная видеоинструкция для решения этой проблемы. Тем не менее этот список может быть более длинным, поэтому взвесьте все за и против, прежде чем браться за это дело.
Метрика
Подключаем (регистрируем) метрику. Подойдет любая: Я.Метрика или Google Analytics. Я чаще всего пользуюсь метрикой от Яндекса, по привычке, хотя метрика от Google наиболее продвинутая. Находим там искомый тип ботного трафика (соцсети, прямые заходы), который нас интересует, и определяем масштабы трагедии. А именно ищем URL-адреса тех ресурсов, на которые прут боты. Как правило, это определенные материалы или директории, причем иногда совершенно абсурдные — непопулярные.
Немного про продвинутость Гугла. Есть в его аналитике такой шикарный инструмент, как «Отчет в реальном времени». Так вот, при явном наплыве ботов достаточно просто найти контент, куда идут прямые заходы — всё. Не нужно составлять сложных отчетов с фильтрами, как в Я.Метрике. Просто слов не хватает, насколько полезен и информативен этот отчет от Google, и не только для этой задачи!
Лог-файл
Скачиваем лог-файл сервера (хостинга) хотя бы за последние сутки, потренироваться. Вообще нужен файл за тот день (период), в который атаки ботов были особенно явными, но это уже когда набьем руку.
Текстовый редактор
Скачиваем и устанавливаем легендарный текстовый редактор Notepad++, если его ещё нет. Копируем в него (открываем) данный лог-файл сервера и находим там необходимые URL-ы. Отфильтровываем эти строки и смотрим на IP-адреса и User-Agent-ы, по которым шли заходы. IP-адреса нам пригодятся на следующем шаге, а вот по User-Agent-ам предварительно можно определить, где «хорошие» боты (краулеры поисковых систем), которые категорически нельзя блокировать (см. ниже Правило №5 «HTTP Version»).
WHOIS-сервис
Заходим на сервис для определения WHOIS данных по IP-адресу (https://2ip.ru/asn-by-ip/) и вбиваем туда подозрительные IP-адреса. Результатом проверки будет ASN (Autonomous System Number) сеть, к которой относится проверяемый адрес, и ещё много чего. Но нам нужен только номер в формате ASxxxxx, где ххххх — числовое значение. Именно это значение мы будем использовать в одном из правил Cloudflare.
CleanTalk-сервис
Использование сервиса защиты от спам-ботов (https://cleantalk.org/blacklists) в контексте данной задачи — только для совсем спорных моментов. Здесь можно увидеть заспамленность ASN-сети. Но как показала практика, даже совершенно «белые и пушистые» сети в итоге оказываются источником ботов.
Настройка Cloudflare
Приступаем к самому главному и ответственному — настройке Cloudflare. Первое (во многих случаях необходимое и достаточное), что надо сделать, это включить режим Bot Fight Mode. Иногда достаточно только этого пункта, чтобы избавиться от ботов и даже от DDoS-атак. Но боты бывают разные, и ниже мы рассмотрим создание более строгих правил файервола.
Итак, заходим в раздел Firewall, переходим на вкладку Bots, свайпим переключатель в положение «On»:
В сети достаточно скептически относятся к данной настройке Cloudflare, заявляя о том, что она совершенно бесполезна. Хотя опыт её использования говорит об обратном: вещь нужная и многим помогла. Надо пробовать.
Теперь приступим непосредственно к настройке правил файервола. В бесплатной версии, к сожалению, можно создать всего 5 правил, но этого минимума нам для начала хватит.
Заходим в раздел Firewall и переходим на вкладку Firewall Rules, нажимаем на кнопку Create a Firewall Rule. Далее по порядку создаем правила:
Правило №1: Хорошие боты
Данное правило разрешает всем «хорошим» ботам доступ к сайту. Cloudflare знает о всех таких ботах (весь список тут), поэтому здесь не надо что-то искать и прописывать дополнительно.
Правило №2: Плохие боты
Здесь все запросы к HTTP переадресовываются на HTTPS при условии, что на сайте есть SSL-сертификат. Думаю, что сегодня с этим проблем ни у кого нет.
Правило №3: Referer/As num (Соцсети и/или ASN-сети)
Обычно боты идут либо из соцсетей либо через прямые заходы. В первом случае данный фильтр блокирует ботов по рефереру, во втором — по номеру сети.
Следовательно, нужно будет указать необходимый тип фильтрации. Но если будут и те и другие — придется чем-то жертвовать. В таком случае можно пожертвовать следующим пунктом (Правило №4): практика использования этого правила показывает нулевую активность ботов.
Список ASN-сетей: AS21453 AS50241 AS35807 AS15640 AS42116 AS41344 AS47395 AS3216 AS42437 AS48190 AS41330 AS39655 AS15378 AS12714 AS41733 AS29497 AS16345 AS25159 AS8359 AS31213 AS31133 AS12958 AS12389 AS201123 AS31224 AS48092 AS56407 AS6697 AS31163 AS47524 AS34411 AS64432 AS43761. Данный список взят в сети и проверен. Подключать сразу весь его не стоит — он избыточен. Происходит «блокирование» большого числа сетей, пусть по большей части и плохих, но судя по онлайн-статистике Google (Отчет в реальном времени), Captcha выдается всем подряд. Поэтому для начала нужно основательно проанализировать лог-файл сервера, и те значения, которые совпадут с этим списком, в первую очередь вносить в правило Cloudflare (у меня совпало только 9 из 33).
Также будут ASN-сети не из этого списка — ребята не сидят без дела. Вообще, по-правильному, выбор «паразитной» сети для каждого сайта индивидуален. Нужно внимательно смотреть лог-файл сервера на предмет активности тех или иных ботов. Если, к примеру, какой-то бот заходит достаточно часто и только на те страницы сайта, по которым у Вас проблемный трафик (соцсети, прямые заходы), то скорее всего это Ваш клиент. Самый простой способ проверить — добавить эту сеть в правило файервола и посмотреть онлайн-статистику или свежескаченный лог-файл. По таким заходам ботам сразу же начнет выдаваться Captcha, в подтверждение чего в URL-аресах будет такой код «?__cf_chl_captcha_tk». Это хорошо, когда Captcha будет выдаваться именно на проблемных страницах — значит Вы попали в точку. А вот если на других, не подверженных наплыву ботов и в большом количестве, — плохо. Значит Вы «заблокировали» и обычных пользователей: заставили их разгадывать капчу, которая всех бесит. Последствия не заставят себя долго ждать, и Вы сразу увидите в метрике увеличение отказов и падение посещаемости. Так что будьте внимательнее!
Кстати, совместно с ASN-сетями в правило можно добавить URL-адреса страниц, на какие прут боты. Тем самым мы ограничиваем доступ из ASN-сетей только на эти страницы. Плюс такого способа в том, что если ASN-сеть только частично «плохая» либо она была внесена в правило ошибочно, то Captcha будет выдаваться не всем подряд из этой сети, а только тем, кто ломится на эти страницы. Чтобы правило работало так, как мы хотим, между полями (строками) самого правила должны стоять операторы «And». Если же Вы поставите оператор «Or», то эта логика работать не будет: независимо друг от друга будут блокироваться и сети, и заходы на указанные страницы:
Правило №4: SSL/HTTPS
Данное правило запрещает доступ с HTTP-ресурсов (без SSL). Таким ботам ставится 5-секундная задержка, чтобы уж наверняка.
Правило №5: HTTP Version
Данное правило запрещает доступ ботам с устаревшими протоколами HTTP/1.0 и HTTP/1.1. Эти протоколы присущи откровенно «зашкварным» ботам, которых не жалко. Однако, как показала практика, есть и очень важные боты с этими протоколами. Выяснилось, что как минимум это боты Яндекса (AS13238) и Гугла (AS15169), которые обязательно нужно поставить в исключения:
Учитывая это, а также большую массу заблокированных ботов, есть основания полагать, что поисковые боты не последние из заслуживающих «право на жизнь»:
Итак, в итоге всех манипуляций у Вас должен получится такой список на главной странице настроек файервола:
Кстати, если Ваша ASN-сеть случайно попала под блокировку (Captcha) или Вы намеренно заблокировали всё и вся, можно добавить её в исключения — всю целиком или только IP-адрес:
Это очень полезно, особенно когда Вы или разработчик активно работаете со своим сайтом.
Итог
Учитывая тот факт, что поставленная в статье задача требует постоянного анализа и изучения, а все настройки указаны на основе личного опыта и могут быть неполными, есть уверенность в том, что они будут ещё неоднократно корректироваться и дополняться, а где-то (возможно) и противоречить чужой практике. Но уже на этом этапе со 100%-ой уверенностью можно сказать, что всего этого вполне достаточно для блокировки основной массы «плохих» ботов.
Всем Мир!
Оцените публикацию
Вы должны авторизоваться, чтобы оставлять комментарии