В последнее время многие сайты всё чаще сталкиваются с проблемой некачественного трафика. В Яндекс.Метрике можно увидеть значительное количество "прямых заходов" с высоким уровнем отказов и низким временем пребывания на страницах. Со временем это начинает негативно сказываться на SEO-продвижении, снижая позиции сайта и его посещаемость из поисковых систем.В современном интернете защита от ботов и нежелательного трафика становится всё более важной. Прямые переходы и автоматизированные боты могут негативно влиять на работу сайта, увеличивая нагрузку на сервер и снижая производительность. Одним из эффективных методов защиты является настройка капчи через Cloudflare. В этой статье я расскажу, как это сделать.Что такое боты и чем опасен бот-трафик?Боты — это программы, которые автоматически сканируют и взаимодействуют с вашим сайтом. Существуют полезные боты, такие как поисковые роботы Google и Яндекс, которые индексируют ваш сайт для поиска. Однако существует множество вредоносных ботов, которые могут:· Увеличивать нагрузку на сервер, замедляя работу сайта;· Красть контент для использования на других ресурсах;· Совершать спам-атаки, оставляя ненужные комментарии или заполняя формы;· Имитировать посещения сайта, что затрудняет анализ реальной активности пользователей.Передача NS-записей домена в сервис CloudflareПрежде чем перейти к настройкам следует передать NS записи в Cloudflare. Для этого нужно перейти в управление DNS-серверами домена и указать сервера, выданные Cloudflare, такие как:eva.ns.cloudflare.comeverton.ns.cloudflare.comС этого момента сайт становится недоступен, так как необходимо, чтобы NS записи разошлись по DNS серверам — это обычно занимает от 5 до 24 часов.После репликации записей сайт или сразу заработает, или браузер выдаст ошибку Too many redirects:В таком случае в настройках Cloudflare переходим в раздел SSL/TLS:Заходим в Configure:И выбираем Full:Теперь сайт доступен и можно переходить к настройкам защиты от ботов.Настройка Cloudflare для сайтаШаг 1. Настройка HTTPSСначала настраиваем переадресацию на HTTPS:1. В панели Cloudflare переходим в раздел SSL/TLS и выбираем Edge Certificates.2. Включаем опцию Always Use HTTPS.Шаг 2. Открываем доступ для полезных ботовДля начала важно создать разрешающее правило для полезных ботов и сервисов, таких как Яндекс, Google и тд. Так как правила имеют приоритетность относительно друг друга, данное правило лучше создать первым.Настраиваем доступ для полезных ботов:1. В панели Cloudflare заходим в раздел Security => WAF и выбираем Custom Rules.2. Создаем новое правило для полезных ботов.3. Для быстрой настройки правила проще использовать код, который вводим в поле Edit expression:(cf.client.bot) or (http.user_agent contains "+http://yandex.com/bots") or (http.user_agent contains "Google") or (http.user_agent contains "Telegram") or (http.user_agent contains "Twitter") or (http.user_agent contains "WhatsApp") or (http.user_agent contains "msnbot") or (http.user_agent contains "Mail") or (http.user_agent contains "Applebot") or (http.user_agent contains "Screaming Frog") or (http.user_agent contains "WordPress") or (http.user_agent contains "w3.org") or (http.user_agent contains "vkShare") or (http.user_agent contains "bingbot") or (http.user_agent contains "pingdom") or (http.user_agent contains "SemrushBot") or (http.user_agent contains "Pinterestbot") or (http.user_agent contains "Chrome-Lighthouse") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "bitrix") or (http.user_agent contains "Bitrix") or (http.user_agent contains "bing") or (http.user_agent contains "facebook") or (http.user_agent contains "ChatGPT") or (http.user_agent contains "1C") or (http.user_agent contains "1c") or (http.request.uri.query contains "doing_wp_cron") or (ip.src eq 213.159.210.11) or (ip.geoip.asnum eq 13238) or (ip.geoip.asnum eq 208722) or (http.user_agent contains "SeznamBot")4. В блоке Take action выбераем Skip.Это правило будет исполняться первым из всех и позволит таким ботам, как Google, Яндекс, Telegram, WhatsApp и другим полезным сервисам, взаимодействовать с вашим сайтом без ограничений.Шаг 3. Блокировка старых версий HTTP-протоколаМногие вредоносные боты используют устаревшие версии HTTP-протокола (ниже версии 2, например: HTTP/1.1.) Настраиваем блокировку устаревших версий HTTP:1. Создаем новое правило в Custom Rules.2. Для быстрой настройки правила используем следующий код:(not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1"} and not ip.geoip.asnum in {13238 208722}) or (http.referer eq "" and not ip.geoip.asnum in {13238 208722})3. В действиях выбираем: Interactive Challenge (капча, по которой надо кликать) и не забываем про приоритетность правил — это правило должно быть вторым по списку.Правило отсечет многих ботов, а также покажет капчу всем пользователям, кто заходит на сайт по прямой ссылке.Шаг 4. Фильтруем IPv6 трафикТакже боты могут использовать IPv6-адреса — это связано с их низкой стоимостью. Чтобы защититься от спамного трафика по IPv6, следует настроить правило, которое будет показывать капчу попроще (JS Challenge) для всех таких переходов.Как настроить защиту для IPv6 трафика:1. Создаем новое правило в Custom Rules.2. Вставляем код:(ip.src in {::/0})3. Выбираем действие JS Challenge (капча, которая секунду крутится и пускает на сайт) и сверяемся с приоритетом на скрине:Это правило заставит всех пользователей с IPv6-адресами проходить минимальную проверку, что помогает остановить ботов.ЗаключениеВажно! После применения всех настроек сайт может быть неактивен в течении 24 часов — это нужно учитывать и выбирать подходящее время чтобы не терять заказы и заявки. Порядок правил должен быть как на скрине, так как в сервисе работает приоритетность правил.Справа на скрине видим количество показанных капч, а в столбце CSR % решенных.В итоге: Благодаря правильным настройкам нам удалось полностью избавиться от бесполезного спам-трафика. Важно уточнить, что http запросы с User-agent’ами 1С, битрикс и планировщика cron добавлены в исключения, а значит сервисные задачи CMS/синхронизация с 1С пройдут без проблем.