Автоматизация упирается либо в 403, либо в виджет с проверкой — это два разных продукта Cloudflare.
Коротко: в чём разница
- Turnstile — бесплатный JS-виджет на конкретной форме, работает без Cloudflare DNS и есть на любом тарифе.
- Bot Management — часть Enterprise-тарифа, оценивает на уровне сети вообще каждый запрос к домену.
- Для Turnstile автоматизации достаточно решить виджет; для Bot Management сначала нужно пройти сетевую проверку, и только потом при необходимости — CAPTCHA-компонент.
Пример из практики: почему Managed Challenge чаще ловят команды из СНГ
QA-команды, которые гоняют тесты с серверов в европейских дата-центрах (Франкфурт, Амстердам) — стандартный выбор для компаний из России, Беларуси и Казахстана, — регулярно получают Managed Challenge там, где обычный пользователь прошёл бы незаметно.
Причина не в стране, а в диапазоне IP:
- адреса облачных дата-центров получают более низкий Bot Score, чем адреса домашних провайдеров;
- решение Turnstile или Cloudflare Challenge стоит закладывать в пайплайн заранее, а не чинить постфактум.
При автоматизированной проверке чужого сайта разумно собирать только данные, которые вы вправе обрабатывать — от 152-ФЗ для российских проектов до должной проверки на соответствие GDPR для кросс-граничных команд.
Turnstile или Bot Management: сравнение по цене и развёртыванию
| Параметр | Bot Management | Cloudflare Turnstile |
|---|---|---|
| Что это | Платформа защиты от ботов в составе Enterprise-тарифа | Бесплатный виджет вместо капчи |
| Стоимость | Только Enterprise-тариф Cloudflare ($$$) | Бесплатно на любом тарифе |
| Уровень развёртывания | Сеть (прокси Cloudflare перед origin) | JavaScript-виджет на странице |
| Нужен ли Cloudflare DNS | Да | Нет — работает на любом сайте |
| Когда показывается вызов | Иногда (Managed Challenge) | Редко, обычно проходит незаметно |
А вот что каждый продукт видит и на что реагирует:
| Параметр | Bot Management | Cloudflare Turnstile |
|---|---|---|
| Что проверяется | Каждый запрос к домену | Конкретное действие: отправка формы и т. п. |
| Оценка | Bot Score от 1 до 99 на запрос | Pass / fail на один вызов |
| Связь с WAF | Да, правила триггерятся по Bot Score | Нет |
| JS-проверка | Да, «Checking your browser», ~5 секунд | Да, proof-of-work в фоне |
| Rate limiting | Да | Нет |
| Что решает CaptchaAI | Managed Challenge — методами turnstile / cloudflare_challenge | Да, с высокой долей успешных решений |
Как работает Cloudflare Bot Management
Bot Management — часть Enterprise-тарифа Cloudflare: сеть оценивает каждый запрос к домену до того, как он попадёт на origin-сервер.
Из чего складывается Bot Score
Такую цепочку проходит каждый запрос до вынесения оценки:
Request arrives at Cloudflare edge
↓
Bot Management engine evaluates:
├─ Machine learning model (behavioral сигналы браузера)
├─ Heuristics (known bot patterns)
├─ JavaScript сигналы браузераing (if JS challenge triggered)
├─ JA3/JA4 TLS сигналы браузера
├─ HTTP header analysis
└─ IP reputation (Cloudflare sees ~20% of internet traffic)
↓
Bot score assigned: 1 (definitely bot) to 99 (definitely human)
↓
WAF rules act on the score:
- Score > 50 → Allow
- Score 30-50 → Managed challenge
- Score < 30 → Block or JavaScript challenge
Из каких модулей состоит Bot Management
- Bot Score — ML-оценка для каждого запроса.
- Managed Challenge (управляемый вызов) — адаптивно показывает JS-вызов или виджет Turnstile.
- Super Bot Fight Mode — упрощённый режим для тарифов Pro/Business.
- Bot Analytics — дашборд с ботовым и человеческим трафиком.
- WAF Custom Rules — правила, которые срабатывают по порогу Bot Score.
- Rate Limiting — пороги частоты запросов на IP или сессию.
- JavaScript Detection — определение headless-браузеров и инструментов автоматизации.
Что видит автоматизация, если сайт защищён Bot Management
| Что происходит | Что это значит |
|---|---|
| Жёсткая блокировка (403) | Bot Score слишком низкий, сработало правило WAF |
| JS-страница проверки | «Checking your browser», обычно около 5 секунд |
| Managed Challenge | Показан виджет Cloudflare Turnstile или JS-вызов |
| Невидимый проход | Запрос пропущен, Bot Score оказался достаточно высоким |
Cloudflare Turnstile: бесплатный виджет вместо капчи
Turnstile — самостоятельный продукт, а не модуль Bot Management: виджет работает на любом сайте, даже без Cloudflare DNS.
Как Turnstile проверяет пользователя
Проверка укладывается в фоновую цепочку без участия пользователя:
Page loads Turnstile widget
↓
Widget runs background checks:
├─ Browser proof-of-work challenge (cryptographic puzzle)
├─ Private Access Token (Apple devices)
├─ Browser environment validation
└─ Cloudflare threat intelligence
↓
Result: cf-turnstile-response token generated
↓
Token submitted with form data
↓
Server validates token via Cloudflare API (siteverify)
Режимы виджета
- Managed — Cloudflare сам решает: невидимо или интерактивно; подходит большинству форм по умолчанию.
- Non-interactive — всегда невидим, только proof-of-work; для форм с минимумом трения.
- Invisible — виджет не отображается и запускается при загрузке страницы; для фоновой проверки.
Как встраивается Turnstile
Минимальная разметка виджета:
<!-- Simple Turnstile integration -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
Решаем Turnstile и Bot Management через CaptchaAI
Turnstile: решение напрямую
Turnstile решается методом turnstile CaptchaAI без дополнительных шагов, с высокой долей успешных решений:
import requests
import time
API_KEY = "YOUR_API_KEY"
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
"pageurl": "https://example.com/signup",
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
print(f"Turnstile token: {token[:50]}...")
break
Bot Management: решение по слоям
Bot Management объединяет несколько уровней защиты, и решение CAPTCHA — только последний из них:
- корректные заголовки запроса и TLS-отпечаток клиента;
- ротация IP-адресов при высокой частоте запросов;
- решение managed challenge, который обычно рендерится виджетом Turnstile.
# Bot Management flow for automation:
# 1. Make initial request
response = requests.get("https://protected-site.com/api/data")
# 2. Check if challenged
if response.status_code == 403:
# Hard block — need to adjust headers, proxy, or approach
pass
elif "challenge" in response.text.lower() or response.status_code == 503:
# JavaScript challenge or managed challenge
# If it contains a Turnstile widget, solve it:
if "cf-turnstile" in response.text or "challenges.cloudflare.com" in response.text:
# Extract sitekey and solve via CaptchaAI
sitekey = extract_turnstile_sitekey(response.text)
token = solve_turnstile(sitekey, "https://protected-site.com/api/data")
Если сетевая проверка уже пройдена, дальше остаётся только виджет.
Cloudflare Challenge — это не Turnstile
«Checking your browser» — это JS-вызов Cloudflare Challenge, отдельный от Turnstile. CaptchaAI решает его тем же вызовом API:
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "managed",
"pageurl": "https://protected-site.com/login",
"json": 1,
})
Как отличить Bot Management от Turnstile по признакам
Пять сигналов ниже отличают Bot Management от Turnstile без разбора исходного кода:
- 5-секундная страница «Checking your browser» → Bot Management, JS-вызов (
jschl_vc, challenge-маркеры в коде). - Виджет с проверкой на форме → Turnstile отдельно (класс
cf-turnstile, доменchallenges.cloudflare.com/turnstile). - 403 на странице ошибки Cloudflare → Bot Management, жёсткий блок (заголовок
cf-ray, шаблон ошибки). - Интерактивный чекбокс на странице Cloudflare → Managed Challenge (домен
challenges.cloudflare.com). - Видимых проверок нет, но выставлены cookie → Bot Management, запрос пройден (cookie
cf_clearance).
Скрипт для автоматической проверки
Логика из таблицы выше укладывается в одну функцию:
import requests
def identify_cloudflare_protection(url):
"""Identify which Cloudflare protection a URL uses."""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/120.0.0.0",
}
response = requests.get(url, headers=headers, timeout=15, allow_redirects=False)
html = response.text
result = {
"cloudflare_protected": "cf-ray" in response.headers.get("cf-ray", "")
or "cloudflare" in response.headers.get("server", "").lower(),
"bot_management_challenge": False,
"turnstile_widget": False,
"hard_block": False,
"passed": False,
}
if response.status_code == 403:
result["hard_block"] = True
elif response.status_code == 503 and "jschl" in html:
result["bot_management_challenge"] = True
elif "cf-turnstile" in html:
result["turnstile_widget"] = True
elif response.status_code == 200:
result["passed"] = True
return result
Часто задаваемые вопросы
Как быстро понять, что передо мной — Turnstile или Bot Management?
Смотрите на область защиты:
- DNS через Cloudflare и оценка всех запросов к домену — это Bot Management;
- проверка внутри одной формы, независимо от того, кто держит DNS, — это Turnstile.
Нужен ли сайту Enterprise-тариф Cloudflare, чтобы моя автоматизация встретила Bot Management?
Тариф выбирает владелец сайта, а не ваша автоматизация:
- если целевой сайт на Cloudflare Enterprise, ваши запросы получат Bot Score;
- это не зависит от того, чем вы пользуетесь на своей стороне.
Может ли Turnstile стоять на сайте вообще без Bot Management?
Да, и это самый частый случай:
- Turnstile доступен на любом тарифе Cloudflare, включая бесплатный;
- большинство сайтов ставит его на формы входа и регистрации, вообще не подключая Enterprise-защиту.
Что делать, если автоматизация вместо CAPTCHA получает 403?
403 — это жёсткая сетевая блокировка, а не задача CAPTCHA, и метод CaptchaAI её не решит. Порядок действий:
- Проверьте заголовки запроса и TLS-отпечаток клиента.
- Настройте ротацию IP-адресов.
- Только когда запрос перестанет блокироваться на входе, решайте managed challenge или виджет через CaptchaAI.
CaptchaAI решает обе проверки?
CaptchaAI решает виджет Turnstile и связанный с ним Managed Challenge с высокой долей успешных решений. Жёсткая блокировка Bot Management на сетевом уровне (403) — это не CAPTCHA-задача: тут нужна корректная настройка запроса на вашей стороне, а CaptchaAI подключается уже на этапе решения самой проверки.
Главное
- Bot Management — Enterprise-защита сети: ML-оценка, WAF и поведенческий анализ на каждый запрос к домену.
- Turnstile — бесплатный виджет, проверяющий конкретное действие через proof-of-work в браузере.
- Виджет Turnstile решается напрямую через CaptchaAI с высокой долей успешных решений.
- Для Bot Management сначала нужна корректная имитация браузера, а CaptchaAI решает уже CAPTCHA-компонент.