Справочники, инструменты, документация

Cloudflare: Как убрать боты и спам на сайте

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

Настройка политики CloudFlare

Перен началом настройки убедитесь, что у вас установлена опция CloudFlare - Always Use HTTPS

SSl\TLS - Edge Certificates

Edge Certificates

Вторым шагом, переходим в раздел Security - Bots и включаем: Bot Fight Mode

Bot Fight Mode

Далее, переходим в раздел Security - WAF, здесь нам понадобиться создать несколько политик.

Политика pre-filter

Создаем политику pre-filter она у нас будет первой в списке, с действием block. Так как CloudFlare не позволяет добавить пустые политики, добавим одно правило, блокирующее пользователей с пустым User-Agent.

(http.user_agent eq "")
filter

Исключение хороших ботов

Второе правило позволит исключить из проверки всех хороших ботов (в основном поисковые системы). Назовем его: Known Bots.

Выбираем поле Known Bots в состоянии включен и добавляем дополнительно Mail.ru следующим образом, так как CloudFlare не считает их ботов "полезными", если они не нужны просто оставляем первую часть правила.

(cf.client.bot) or (http.user_agent contains "Mail.RU_Bot")

В качестве действия выбираем Skip и в разделе "WAF components to skip" устанавливаем все галки.

Skip

Это позволит работать ботам поисковых машин без ограничений, к сожалению эта политика пропускает еще часть SEO ботов, которые нам не очень нужны, по этому мы сможем вернуться в правило pre-filter и заблокировать их по user-agent.

Основной фильтр

И создаем третье правило: Score. Это основное правило блокировки ботов, нам понадобиться несколько полей.

  • Первым в списке выбираем [Country] - TOR.
  • Вторым [Threat Score ] Greater than 0 - Для всех адресов у которых есть не положительная репутация.
  • Далее, необходимо создать список IP адресов и добавить его в правило.
  • Следующие параметр [SSL/HTTPS] в режиме OFF - что пользователь к нам пришел по HTTP, так как сайт настроен на работу по HTTPS по HTTP к нам будут приходить боты.
  • Так же добавляем [HTTP Version] в формате is not in и перечисляем "HTTP/2" "HTTP/3" "SPDY/3.1" "HTTP/1.2" - боты в большинстве случаев, используют HTTP 1.1 и соответственно не смогут пройти дальше.
  • И бонусом настраиваем поле URL, где добавляем URL страницы авторизации вашей CMS, к примеру для WordPress это будет /wp-login.php.

Полностью правило выглядит следующим образом:

(ip.geoip.country eq "T1") or (cf.threat_score gt 0) or (ip.src in $bad_ip) or (not ssl) or (not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1" "HTTP/1.2"}) or (http.request.uri contains "/wp-login.php")
Manage Challenge

В качестве действия выбираем Manage Challenge это позволит легитимным пользователям пройти проверку и получить доступ к сайту.

Manage Challenge

Managed Challenge для тех, кто заходит через Ipv6, либо по http

Прописываем такие правила, можно нажать Edit expression и вписать вручную:

(ip.src in {::/0}) or (not ssl)
Ipv6

Managed Challenge или JS проверка для прямых заходов и обращений с протоколом ниже HTTP/2

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

В данном правиле фильтруем всех, кто использует HTTP 1 и HTTP 1.1 протоколы. Чаще всего это боты. Тут же фильтруем ПФ ботов, которые прогревают профили через прямые заходы на различные сайты.

(not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1"}) or (http.referer eq "")
проверка для прямых заходов

Как исправить ошибку ERR_TOO_MANY_REDIRECTS (циклическое перенаправление) при использовании Cloudflare

Что такое ошибка ERR_TOO_MANY_REDIRECTS

Ошибка ERR_TOO_MANY_REDIRECTS (Циклическое перенаправление на странице) или redirect loop (цикл перенаправлений, петля перенаправлений) возникает в случае, когда сервер поочередно перенаправляет клиента на разные адреса, последний из которых делает перенаправление на первый адрес, таким образом создавая бесконечный цикл перенаправлений. Чаще всего цикл не содержит большое количество адресов - обычно это 2 адреса которые перенаправляют клиента друг на друга, например https://www.example.com -> редирект -> https://example.com -> редирект -> https://www.example.com и так до бесконечности.

Как исправить ошибку ERR_TOO_MANY_REDIRECTS

Если вы столкнулись с подобной ошибкой, вам необходимо проверить использование редиректов в настройках сервера, в файле .htaccess (если он используется), а также в самом веб приложении. При этом очень важно определить откуда и куда происходят редиректы. Для этого можно использовать специализированные плагины для браузеров.

Но что делать, если вебсайт работает нормально, и только при включении сервиса Cloudflare возникает ошибка ERR_TOO_MANY_REDIRECTS

Чаще всего подобная ситуация возникает из-за настроек SSL/TLS в Cloudflare, а именно из-за режима шифрования. Дело в том, что в Cloudflare по умолчанию устанавливается так называемый гибкий режим (Flexible mode) шифрования SSL/TLS. Это означает, что траффик между клиентом и Cloudflare будет шифроваться (будет использовано https соединение), а траффик между Cloudflare и вашим сервером нет (будет использовано обычное http соединение). Если же у вас на сервере настроено перенаправление http траффика на https, возникает бесконечный цикл перенаправлений https -> http -> https -> http ...

Чтобы решить эту проблему, вам необходимо изменить режим шифрования SSL/TLS в настройках Cloudflare на "Full" или "Full (strict)" (разница между ними только в том, что режим Full позволяет использовать на сервере самоподписные сертификаты).

cloudflare.com -> SSL/TLS -> Overview

Как исправить ошибку ERR_TOO_MANY_REDIRECTS