Обход Cloudflare Turnstile: как пройти капчу Cloudflare автоматически

Капча Cloudflare Turnstile незаметно стала одним из самых частых препятствий в автоматизации. В отличие от старых капч, где нужно кликать по пожарным гидрантам, Turnstile работает тихо в фоновом режиме и зачастую не требует от пользователя вообще никаких действий. Для обычных посетителей это удобно, а вот для тех, кто строит парсеры, инструменты тестирования или любую автоматизацию на сайтах под защитой Cloudflare, это головная боль. В этом руководстве разбираем, как turnstile captcha устроена изнутри, почему она блокирует ваши скрипты и как обойти её через API решения токенов.
Как решить Cloudflare Turnstile пошагово
Процесс простой. Вы извлекаете два параметра со страницы, отправляете их на сервис решения, получаете токен и вставляете его в форму. Никакого распознавания изображений.
Как решить?
Что вам понадобится (нажмите для подробностей)
Решение аналогично hCaptcha. Параметры, необходимые для распознавания, можно получить через режим разработчика в браузере:
- Найдите sitekey в исходном коде страницы или js файле. Обычно он находится в div элементе с атрибутом "data-sitekey" или в свойстве sitekey. Он также может быть внутри iframe.
https://challenges.cloudflare.com/cdn-cgi/challenge-platform/h/b/turnstile/if/ov2/av0/rcv0/0/iqiy3/1x00000000000000000000AA/light/normal
Нам нужно Ссылка на страницу, где находится Cloudflare Turnstile: https://react-turnstile.vercel.app/basic Ключ (site-key): 1x00000000000000000000AA
Отправка задачи
http://api.cap.guru/in.php
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| key | String | Да | Получить ключ можно здесь |
| method | String | Да | turnstile — указывает, что вы решаете Cloudflare Turnstile |
| sitekey | String | Да | Значение параметра data-sitekey, найденное в коде страницы. Например 1x00000000000000000000AA |
| pageurl | String | Да | URL страницы, на которой вы решаете Cloudflare Turnstile. Например https://react-turnstile.vercel.app/basic |
| json | Number, По умолчанию: 0 | Нет | 0 — сервер вернёт ответ в виде обычного текста. 1 — сервер вернёт ответ в формате JSON |
Пример запроса
http://api.cap.guru/in.php?key=YOUR_APIKEY&method=turnstile&sitekey=1x00000000000000000000AA&pageurl=https://react-turnstile.vercel.app/basicПример ответа
После отправки задачи вы должны получить ответ в случае успешного запроса:
'OK|65787087' and {"status":1,"request":"65787087"}Вариант json:
{
"status":1,
"request":"65787087"
}Ознакомьтесь с полным списком возможных ошибок, если вы не получили номер задачи.
Получение результата
Подождите 10–15 секунд, затем отправьте GET запрос для получения токена.
Пример запроса:
https://api.cap.guru/res.php?key=key&action=get&id=idЕсли задача решена, вы получите токен Turnstile в ответе. Если нет, вы получите CAPCHA_NOT_READY — подождите 5 секунд и повторите запрос. Среднее время решения turnstile captcha составляет от 10 до 30 секунд.
Подстановка токена
Найдите скрытый input или textarea с именем cf-turnstile-response на странице и установите его значение равным полученному токену. Если вы используете инструмент автоматизации браузера, выполните JavaScript для вставки токена и вызова callback функции Turnstile. Если вы работаете с прямыми HTTP запросами, включите токен как параметр формы в вашем POST запросе.
Что такое капча Cloudflare Turnstile
Turnstile — это замена традиционным капчам от Cloudflare. Компания запустила её в конце 2022 года с простой идеей: подтверждать, что посетитель человек, не заставляя его решать головоломки. Вместо сеток с изображениями или текстовых проверок, turnstile captcha запускает серию тихих проверок внутри браузера. Система собирает отпечатки canvas и WebGL, проверяет сигнатуру TLS рукопожатия, выполняет proof of work вычисления, прощупывает API браузера и отслеживает поведенческие сигналы. Всё это происходит в фоне, пока пользователь ничего не видит, или в лучшем случае видит кратковременный крутящийся виджет.
Существует три режима развёртывания, и вы столкнётесь со всеми в зависимости от сайта:
| Режим | Что видит пользователь | Что происходит под капотом |
|---|---|---|
| Managed | Ничего или кратковременный виджет | Turnstile автоматически решает, пропустить посетителя, проверить скрыто или усложнить задачу |
| Non-Interactive | Кратковременный индикатор проверки | Верификация на стороне браузера выполняется без действий пользователя |
| Interactive | Чекбокс для нажатия | Переход к кликабельному заданию, когда тихие проверки не дали однозначного результата |
Главное, что нужно понимать: независимо от режима, конечный результат один — подписанный токен, который сервер валидирует. Если ваша автоматизация не может получить этот токен, запрос будет заблокирован. Именно поэтому обход Cloudflare Turnstile всегда сводится к получению валидного токена.
Почему ваши скрипты блокируются
Если вы пробовали обратиться к странице с Turnstile через requests или базовую настройку Selenium, вы уже знаете, что это не работает. Вот почему.
Turnstile требует реального выполнения JavaScript. Это не просто проверка заголовков или cookies. Виджет запускает настоящий код в браузере, выполняет криптографический proof of work и строит отпечаток из десятков сигналов, которые существуют только в реальном движке рендеринга. Обычный HTTP запрос ничего из этого сделать не может.
Даже headless браузеры справляются с трудом. Turnstile проверяет сигналы автоматизации вроде navigator.webdriver, инспектирует строку WebGL рендерера (headless Chrome на VPS возвращает llvmpipe вместо реального GPU) и сравнивает отпечаток canvas с известными паттернами. Если хоть что-то не сходится, проверка тихо провалится, и токен не будет выдан.
Вдобавок, Cloudflare оценивает IP адрес. IP из дата центров AWS, Hetzner, DigitalOcean и подобных провайдеров несут высокий рейтинг риска ещё до того, как ваш код загрузится. Капча Cloudflare усложняется или вовсе не проходит для трафика из этих диапазонов.
Именно здесь API решения становится практичным выходом. Вместо попыток заставить ваш headless браузер пройти все проверки отпечатков, вы передаёте генерацию токена сервису, который делает это надёжно.
TIP
Токены Turnstile одноразовые и истекают в течение нескольких минут. Всегда используйте токен сразу после получения. Устаревшие токены — причина номер один провальных отправок форм.
Turnstile vs страница проверки Cloudflare
Это две разные вещи, и люди постоянно их путают.
Turnstile — это виджет, который владельцы сайтов встраивают прямо в свои страницы. Он сидит внутри формы, валидирует пользователя и генерирует токен. Вы можете встретить его на любом сайте, включая те, которые даже не находятся в сети Cloudflare. Sitekey находится в HTML страницы, и описанный выше метод решения работает для него.
Страница проверки Cloudflare (Challenge Page) — это полностраничная интерстициальная страница, которую Cloudflare показывает перед допуском на сайт. Это экран «Checking your browser...». Он использует ту же технологию, что и Turnstile, но работает иначе с точки зрения автоматизации. Challenge Page устанавливает cookie cf_clearance, который нужно передавать в последующих запросах, и он привязан к конкретной комбинации IP, User Agent и TLS отпечатка.
Оба варианта можно решить через API, но параметры и процесс отличаются. Убедитесь, что вы понимаете, с чем имеете дело, прежде чем писать код интеграции.
Интеграция с Selenium, Puppeteer и Playwright
Когда вы получили токен от API, вставить его в страницу — самая лёгкая часть.
В Selenium переключитесь на фрейм с виджетом Turnstile, если он внутри iframe, затем используйте execute_script для установки значения поля cf-turnstile-response и вызова callback:
driver.execute_script('document.querySelector("[name=cf-turnstile-response]").value = "TOKEN"')В Puppeteer или Playwright используйте page.evaluate() для того же. Если сайт использует JavaScript callback при успешной верификации, вам нужно будет вызвать эту функцию после вставки токена. Проверьте вкладку Network в DevTools, чтобы определить имя callback функции.
Для серверных сценариев, где вы отправляете формы через прямые HTTP запросы, просто включите параметр cf-turnstile-response в данные вашего POST запроса вместе с остальными полями формы. Браузер не нужен.
Ключевая деталь: используйте один и тот же IP адрес и User Agent как для запроса решения, так и для отправки токена. Cloudflare перепроверяет эти значения при валидации. Если токен был сгенерирован с одного IP, а отправлен с другого, он может быть отклонён.
Ошибки, которые стоят времени и денег
При работе с интеграциями Turnstile одни и те же проблемы повторяются снова и снова. Вот те, из за которых впустую тратится больше всего токенов и запросов.
Просроченные токены. Токены Turnstile живут недолго, обычно несколько минут. Если в вашем пайплайне есть задержка между получением токена и отправкой формы, токен может умереть до того, как дойдёт до сервера. Решайте и отправляйте максимально быстро.
Неправильный sitekey. Некоторые сайты загружают sitekey динамически через JavaScript, поэтому он не появляется в статическом HTML. В таких случаях проверяйте вкладку Network на наличие запросов к challenges.cloudflare.com, содержащих sitekey, или сначала отрендерите страницу и извлеките его из DOM.
Отсутствие action или cdata. Эти опциональные параметры нужны не всегда, но когда они нужны, токен, сгенерированный без них, каждый раз будет проваливать серверную валидацию. Всегда проверяйте, передаёт ли сайт атрибуты data-action или data-cdata виджету Turnstile.
Несовпадение IP. Как уже сказано выше, если вы решаете с одного IP, а отправляете с другого, ждите отказов. Используйте проксирование или убедитесь, что ваш солвер и отправка запросов проходят через один и тот же IP.
IP дата центров. Cloudflare присваивает рейтинги риска диапазонам IP. Свежий IP из облачного провайдера стартует с невыгодной позиции. Резидентные или мобильные прокси дают значительно лучшие результаты при обходе Cloudflare Turnstile.
WARNING
Если токены постоянно отклоняются после отправки, проверьте три вещи: свежесть токена (используйте сразу), совпадение IP (решение и отправка с одного IP), и требует ли сайт параметры action или cdata.
Масштабирование
Для решения капчи Cloudflare в больших объёмах несколько оптимизаций реально помогают.
Конвейеризируйте запросы. Не ждите одного токена перед запросом следующего. Cap.Guru поддерживает параллельную отправку задач, так что вы можете ставить в очередь несколько запросов на решение и обрабатывать токены по мере поступления. Это кардинально сокращает время ожидания при работе с параллельными сессиями.
Ротируйте резидентные прокси. Cloudflare отслеживает репутацию IP со временем. Постоянные обращения к одному сайту с одного IP будут постепенно увеличивать сложность и процент отказов. Ротируйте IP из резидентного пула и используйте sticky сессии достаточной длительности для завершения каждой отдельной отправки формы.
Кэшируйте sitekey. Он редко меняется для конкретного сайта. Извлечение один раз и повторное использование в разных сессиях избавляет от необходимости каждый раз загружать полную страницу.
Следите за процентом успеха. Если он начинает падать, наиболее вероятная причина — либо обновление логики валидации Cloudflare, либо изменение конфигурации Turnstile на сайте. Проверьте, не изменились ли значения sitekey, action или cdata, прежде чем отлаживать что-то ещё.
Почему Cap.Guru для Cloudflare Turnstile
Turnstile принципиально отличается от капч на основе изображений. Тут нет картинок для классификации, нет плиток для кликов, нет объектов для вращения. Всё сводится к генерации валидного токена, который пройдёт серверную верификацию Cloudflare. Cap.Guru решает эту задачу через API, который выдаёт рабочие токены Turnstile, совместимые со всеми тремя режимами: managed, non-interactive и interactive.
API работает по стандартной схеме «запрос — опрос», которая интегрируется с любым языком или фреймворком. Python, Node.js, PHP, Go, Java — что бы вы ни использовали. Поддерживаются опциональные параметры action и cdata для сайтов, которые их требуют, а также обработка как отдельных виджетов Turnstile, так и страниц проверки Cloudflare. Время решения обычно составляет от 10 до 30 секунд, а цены остаются конкурентными даже при больших объёмах.
Если ваш парсер, инструмент тестирования или пайплайн автоматизации блокируется капчей Cloudflare, это простой способ пройти её без борьбы с детекцией отпечатков или содержания собственной фермы браузеров.