Перен началом настройки убедитесь, что у вас установлена опция CloudFlare - Always Use HTTPS
SSl\TLS - Edge Certificates
Вторым шагом, переходим в раздел Security - Bots и включаем: Bot Fight Mode
Далее, переходим в раздел Security - WAF, здесь нам понадобиться создать несколько политик.
Создаем политику pre-filter она у нас будет первой в списке, с действием block. Так как CloudFlare не позволяет добавить пустые политики, добавим одно правило, блокирующее пользователей с пустым User-Agent.
(http.user_agent eq "")
Второе правило позволит исключить из проверки всех хороших ботов (в основном поисковые системы). Назовем его: Known Bots.
Выбираем поле Known Bots в состоянии включен и добавляем дополнительно Mail.ru следующим образом, так как CloudFlare не считает их ботов "полезными", если они не нужны просто оставляем первую часть правила.
(cf.client.bot) or (http.user_agent contains "Mail.RU_Bot")
В качестве действия выбираем Skip и в разделе "WAF components to skip" устанавливаем все галки.
Это позволит работать ботам поисковых машин без ограничений, к сожалению эта политика пропускает еще часть SEO ботов, которые нам не очень нужны, по этому мы сможем вернуться в правило pre-filter и заблокировать их по user-agent.
И создаем третье правило: Score. Это основное правило блокировки ботов, нам понадобиться несколько полей.
Полностью правило выглядит следующим образом:
(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 это позволит легитимным пользователям пройти проверку и получить доступ к сайту.
Прописываем такие правила, можно нажать Edit expression и вписать вручную:
(ip.src in {::/0}) or (not ssl)
Это правило можно объединить с предыдущим, если не хотите отслеживать количество прошедших/не прошедших испытание.
В данном правиле фильтруем всех, кто использует 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 (Циклическое перенаправление на странице) или redirect loop (цикл перенаправлений, петля перенаправлений) возникает в случае, когда сервер поочередно перенаправляет клиента на разные адреса, последний из которых делает перенаправление на первый адрес, таким образом создавая бесконечный цикл перенаправлений. Чаще всего цикл не содержит большое количество адресов - обычно это 2 адреса которые перенаправляют клиента друг на друга, например https://www.example.com -> редирект -> https://example.com -> редирект -> https://www.example.com и так до бесконечности.
Если вы столкнулись с подобной ошибкой, вам необходимо проверить использование редиректов в настройках сервера, в файле .htaccess (если он используется), а также в самом веб приложении. При этом очень важно определить откуда и куда происходят редиректы. Для этого можно использовать специализированные плагины для браузеров.
Чаще всего подобная ситуация возникает из-за настроек 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