Устранение неполадок

Ошибки Cloudflare Turnstile Cloudflare и их устранение

Большинство сбоев Cloudflare Turnstile не случайны. Они делятся на три категории: ошибки на этапе запроса (ваша отправка в API отклонена), ошибки на этапе результата (сбой опроса или тайм-аут) и сбои проверки целевой страницы (API возвращает действительный токен, но страница по-прежнему его отклоняет).

Три самые большие проблемы, связанные с турникетами:

  1. Неправильный точный URL-адрес страницы — особенно на страницах заданий Cloudflare, где контекст более строгий.
  2. Неправильный ключ сайта — получено из неправильного элемента или другого экземпляра виджета.
  3. Токен применен по неправильному пути — страница ожидает cf-turnstile-response, обратный вызов или и то, и другое.

CaptchaAI решает Cloudflare Turnstile с помощью100% вероятность успехаменее чем за 10 секунд. Когда ваша интеграция не удалась, проблема почти всегда заключается в отправляемых вами параметрах или в том, как вы применяете возвращенный токен.


Точки отказа Cloudflare Turnstile

Прежде чем углубляться в коды ошибок, поймите три вещи, которые отличают Turnstile от других типов капчи:

1. Точный URL-адрес страницы имеет большее значение

Токены Cloudflare Turnstile тесно привязаны к контексту страницы. На страницах запроса Cloudflare (полностраничный экран проверки) использование неправильного URL-адреса — даже немного другого пути — приведет к отклонению токена.

2. Два пути применения токенов

Возвращенный токен можно применить двумя способами, и использование неправильного приведет к неудаче:

Метод Когда использовать
Скрытое поле — вставьте в cf-turnstile-response (а иногда и в g-recaptcha-response) Когда на странице используется стандартная форма со скрытым вводом
Функция обратного вызова — вызов функции, определенной в turnstile.render() или data-callback. Когда на странице вместо формы используется программная проверка

3. Токены одноразовые.

токен Cloudflare Turnstile можно проверить только один раз. Если ваша система автоматизации случайно отправит его дважды или возникнет состояние гонки, вторая попытка завершится неудачей.


Ошибки на этапе запроса

Это происходит при отправке задачи в https://ocr.captchaai.com/in.php.

ERROR_WRONG_USER_KEY

Причина: неправильный формат ключа API (должен быть 32 символа).

Исправление: проверьте ключ отcaptchaai.com/api.php.

ERROR_KEY_DOES_NOT_EXIST

Причина: Ключ отформатирован правильно, но не привязан к активной учетной записи.

Исправление. Проверьте панель управления. Убедитесь, что учетная запись активна и ключ правильный.

ERROR_ZERO_BALANCE

Причина: в вашем плане нет бесплатных тем.

Исправление. Подождите, пока потоки освободятся, уменьшите параллелизм или обновите их.

ERROR_PAGEURL

Причина: Параметр pageurl отсутствует.

Исправление: Добавьте полный URL — протокол, домен и путь:

pageurl=https://https://staging.example.com/qa-login

ERROR_BAD_PARAMETERS

Причина: Обязательные параметры отсутствуют или имеют неправильный формат. Для Cloudflare Turnstile обязательные параметры:

Параметр Тип Необходимый Описание
key Нить Да Ваш API-ключ CaptchaAI
method Нить Да Должно быть turnstile
sitekey Нить Да Виджет Cloudflare Turnstile sitekey
pageurl Нить Да Полный URL-адрес страницы

Необязательно, но полезно:

Параметр Тип Описание
action Нить Значение data-action или параметра action из turnstile.render().
proxy Нить Формат: login:password@IP:PORT
proxytype Нить HTTP, HTTPS, SOCKS4, SOCKS5

Исправление. Убедитесь, что все обязательные поля присутствуют и правильно введены.

HTML или 500/502 ответы

Причина: Временная ошибка на стороне сервера.

Исправление. Подождите 5–10 секунд и повторите попытку.


Как найти ключ от Cloudflare Turnstile

Ключ сайта — наиболее часто неправильный параметр. Вот где его найти:

Вариант 1 — атрибут data-sitekey:

<div class="cf-turnstile" data-sitekey="0x4AAAAAAAB1example"></div>

Вариант 2 — вызов turnstile.render():

turnstile.render('#captcha-container', {
  sitekey: '0x4AAAAAAAB1example',
  callback: function(token) {
    document.getElementById('cf-turnstile-response').value = token;
  }
});

Вариант 3 — перехват вызова рендеринга (дополнительный):

Если ключ сайта загружается динамически, вы можете переопределить turnstile.render перед инициализацией виджета для захвата параметров:

// Inject this before the Turnstile script loads
const originalRender = window.turnstile.render;
window.turnstile.render = function(container, params) {
  console.log('Sitekey:', params.sitekey);
  console.log('Action:', params.action);
  return originalRender.call(this, container, params);
};

Ошибки на этапе результата

Это происходит при опросе https://ocr.captchaai.com/res.php.

CAPCHA_NOT_READY

Это не ошибка. Решение еще продолжается. Решение Cloudflare Turnstile на CaptchaAI обычно занимает менее 10 секунд.

Исправление: подождите 5 секунд и повторите опрос.

ERROR_WRONG_ID_FORMAT

Причина: Идентификатор капчи содержит нечисловые символы.

Исправление: Используйте точный идентификатор, возвращаемый in.php, без изменений.

ERROR_WRONG_CAPTCHA_ID

Причина: Идентификатор не соответствует ни одной отправленной задаче.

Исправление. Убедитесь, что вы запрашиваете правильный идентификатор из ответа на отправку.

ERROR_EMPTY_ACTION

Причина: В вашем запросе на опрос отсутствует параметр action.

Исправление: Всегда включайте action=get:

https://ocr.captchaai.com/res.php?key=YOUR_KEY&action=get&id=CAPTCHA_ID&json=1

Примечание. Для Cloudflare Turnstile всегда используйте json=1 в запросе на опрос. Ответ JSON может включать user_agent решателя, который требуется некоторым страницам, защищенным Cloudflare, для успешной проверки токена.

ERROR_CAPTCHA_UNSOLVABLE

Причина: Не удалось решить проблему — возможно, неправильный ключ сайта или неподдерживаемая конфигурация страницы.

Исправление. Проверьте ключ сайта, обновите запрос и повторите попытку.

ERROR_INTERNAL_SERVER_ERROR

Причина: Проблема на стороне сервера.

Исправление: подождите 10 секунд и повторите попытку.


Сбои проверки целевой страницы

Их труднее всего отладить, поскольку API успешно возвращает токен, но целевая страница его отклоняет.

Ошибка 1: токен вставлен в неправильное поле.

Симптом: Форма отправляется, но страница возвращает ошибку проверки или обновляется.

Страницы Cloudflare Turnstile могут ожидать токен в разных полях:

  • cf-turnstile-response — основной скрытый вход Cloudflare Turnstile
  • g-recaptcha-response — некоторые страницы используют это как запасной вариант.

Исправление. Проверьте форму страницы на наличие обоих полей. В автоматизации браузера:

# Selenium — inject into both fields for safety
driver.execute_script("""
    var cfField = document.querySelector('[name="cf-turnstile-response"]');
    var gField = document.querySelector('[name="g-recaptcha-response"]');
    if (cfField) cfField.value = arguments[0];
    if (gField) gField.value = arguments[0];
""", token)

Ошибка 2: обратный вызов не запущен.

Симптом: Токен указан в поле, но форма по-прежнему блокирует отправку.

Причина: На странице используется функция обратного вызова вместо скрытого поля (или в дополнение к нему). Обратный вызов обрабатывает дополнительную логику, например включение кнопки отправки или отправку запроса AJAX.

Исправление. Найдите и вызовите обратный вызов:

// Check data-callback attribute
const callbackName = document.querySelector('.cf-turnstile').getAttribute('data-callback');
if (callbackName && window[callbackName]) {
  window[callbackName](token);
}

// Or if it was passed in turnstile.render()
// You may need to intercept the render call to capture it

Ошибка 3: неверный точный контекст страницы.

Признак: Токен отклонен, несмотря на правильный ключ сайта и новое решение.

Причина: pageurl, используемый в запросе API, не соответствует фактическому контексту страницы. Это особенно характерно для:

  • Страницы задач Cloudflare — URL-адрес может включать важные параметры запроса или компоненты пути.
  • Одностраничные приложения — видимый URL-адрес может отличаться от URL-адреса, по которому был загружен виджет «Cloudflare Turnstile».

Исправление. Используйте вкладку «Сеть» DevTools, чтобы найти точный URL-адрес, с которого загружается виджет «Cloudflare Turnstile». Используйте этот URL как pageurl.

Ошибка 4: повторное использование токена

Симптом: Первое решение работает, последующие не работают.

Причина: токены Cloudflare Turnstile одноразовые. После проверки сервером Cloudflare токен становится недействительным.

Исправление: запрашивайте новое решение для каждой отправки формы. Не кэшируйте и не используйте токены повторно.


Краткий справочник по устранению ошибок

Ошибка/симптом Этап Вероятная причина Исправить
ERROR_WRONG_USER_KEY Представлять на рассмотрение Неверный ключ API Проверьте 32-значный ключ
ERROR_KEY_DOES_NOT_EXIST Представлять на рассмотрение Неверный ключ Проверьте панель управления
ERROR_ZERO_BALANCE Представлять на рассмотрение Нет бесплатных тем Подождите или обновите план
ERROR_PAGEURL Представлять на рассмотрение Отсутствует pageurl Добавить полный URL
ERROR_BAD_PARAMETERS Представлять на рассмотрение Отсутствует ключ сайта, метод или URL-адрес страницы. Проверьте все обязательные поля
CAPCHA_NOT_READY Голосование Решение в процессе Подождите 5 секунд, повторите попытку.
ERROR_WRONG_ID_FORMAT Голосование Нечисловой идентификатор капчи Используйте точный идентификатор из in.php.
ERROR_WRONG_CAPTCHA_ID Голосование Неверный идентификатор капчи Проверьте идентификатор отправки
ERROR_EMPTY_ACTION Голосование Отсутствует action=get Добавить параметр действия
Токен отклонен страницей Валидация Неверное поле, обратный вызов не запущен, неверный URL. Проверьте имя поля, выполните обратный вызов, проверьте точный URL-адрес страницы.
Второе решение не удалось Валидация Повторное использование токенов Запросить новый токен для каждой отправки

Python: полное решение Cloudflare Turnstile

import time
import requests

API_KEY = "YOUR_CAPTCHAAI_API_KEY"
SITEKEY = "0x4AAAAAAAB1example"
PAGE_URL = "https://https://staging.example.com/qa-login"

SUBMIT_URL = "https://ocr.captchaai.com/in.php"
RESULT_URL = "https://ocr.captchaai.com/res.php"


def solve_turnstile(api_key, sitekey, pageurl):
    """Submit a Turnstile challenge and return the solved token."""

    # Submit
    submit_resp = requests.post(
        SUBMIT_URL,
        data={
            "key": api_key,
            "method": "turnstile",
            "sitekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        },
        timeout=30,
    )
    submit_resp.raise_for_status()
    submit_data = submit_resp.json()

    if submit_data.get("status") != 1:
        raise RuntimeError(f"Submit failed: {submit_data}")

    captcha_id = submit_data["request"]
    print(f"Task created — captcha ID: {captcha_id}")

    # Wait before first poll (Turnstile is fast — 10 seconds is usually enough)
    time.sleep(10)

    # Poll for result
    for _ in range(60):
        result_resp = requests.get(
            RESULT_URL,
            params={
                "key": api_key,
                "action": "get",
                "id": captcha_id,
                "json": 1,
            },
            timeout=30,
        )
        result_resp.raise_for_status()
        result_data = result_resp.json()

        if result_data.get("request") == "CAPCHA_NOT_READY":
            time.sleep(5)
            continue

        if result_data.get("status") == 1:
            return result_data["request"]

        raise RuntimeError(f"Polling error: {result_data}")

    raise TimeoutError("Turnstile solve timed out")


# Usage
token = solve_turnstile(API_KEY, SITEKEY, PAGE_URL)
print(f"Solved token: {token[:80]}...")

# Inject into cf-turnstile-response and/or g-recaptcha-response
# Then submit the form

Node.js: полное решение проблемы Cloudflare Turnstile

const API_KEY = "YOUR_CAPTCHAAI_API_KEY";
const SITEKEY = "0x4AAAAAAAB1example";
const PAGE_URL = "https://https://staging.example.com/qa-login";

const SUBMIT_URL = "https://ocr.captchaai.com/in.php";
const RESULT_URL = "https://ocr.captchaai.com/res.php";

function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function solveTurnstile(apiKey, sitekey, pageurl) {
  // Submit
  const submitResp = await fetch(SUBMIT_URL, {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({
      key: apiKey,
      method: "turnstile",
      sitekey: sitekey,
      pageurl: pageurl,
      json: "1",
    }),
  });

  const submitData = await submitResp.json();
  if (submitData.status !== 1) {
    throw new Error(`Submit failed: ${JSON.stringify(submitData)}`);
  }

  const captchaId = submitData.request;
  console.log(`Task created — captcha ID: ${captchaId}`);

  // Turnstile is fast — wait 10 seconds before first poll
  await sleep(10_000);

  // Poll for result
  for (let i = 0; i < 60; i++) {
    const resultResp = await fetch(
      `${RESULT_URL}?${new URLSearchParams({
        key: apiKey,
        action: "get",
        id: captchaId,
        json: "1",
      })}`
    );

    const resultData = await resultResp.json();

    if (resultData.request === "CAPCHA_NOT_READY") {
      await sleep(5_000);
      continue;
    }

    if (resultData.status === 1) {
      return resultData.request;
    }

    throw new Error(`Polling error: ${JSON.stringify(resultData)}`);
  }

  throw new Error("Turnstile solve timed out");
}

// Usage
solveTurnstile(API_KEY, SITEKEY, PAGE_URL)
  .then((token) => {
    console.log(`Solved token: ${token.slice(0, 80)}...`);
    // Inject into cf-turnstile-response and/or g-recaptcha-response
  })
  .catch(console.error);

Cloudflare Turnstile против страница Cloudflare-защиты в staging: с чем вы столкнулись?

Сигнал Cloudflare Turnstile страница Cloudflare-защиты в staging
Что вы видите Встроенный виджет на странице (флажок или невидимый) Полностраничный экран проверки Cloudflare
Что возвращает CaptchaAI Токен для внедрения в форму Файл cookie qa_validation_cookie
Метод API turnstile turnstile
Требуется прокси? Необязательный Да (обязательно)

Если вы выполняете полностраничный вызов Cloudflare (а не встроенный виджет), вам понадобитсястраница Cloudflare-защиты в staging Решательвместо этого он возвращает файл cookie qa_validation_cookie и требует прокси-сервера.


Часто задаваемые вопросы

Почему Turnstile терпит неудачу, даже если запрос выглядит правильно?

Три наиболее распространенные причины: (1) pageurl немного неправильный — особенно на страницах задач Cloudflare, (2) ключ сайта был получен из неправильного элемента или (3) токен вводится в неправильное поле или путь обратного вызова.

Какая самая распространенная ошибка Cloudflare Turnstile?

Использование неправильного точного URL-адреса страницы. Токены Cloudflare Turnstile жестко привязаны к контексту страницы — даже другой путь или отсутствующий параметр запроса могут привести к отклонению.

Что означает CAPCHA_NOT_READY?

Решение все еще продолжается. Подождите 5 секунд и повторите опрос. Решение Cloudflare Turnstile обычно выполняется менее чем за 10 секунд.

Что делать, если API возвращает токен, но страница по-прежнему его отклоняет?

  1. Убедитесь, что pageurl соответствует точной странице, на которой загружается виджет.
  2. Проверьте, ожидает ли страница токен в cf-turnstile-response, g-recaptcha-response или в обоих.
  3. Проверьте, использует ли страница функцию обратного вызова вместо (или в дополнение) скрытого поля.
  4. Убедитесь, что токен используется только один раз — токены Cloudflare Turnstile одноразовые.

Поддерживает ли CaptchaAI прокси для Turnstile?

Да. Добавьте к вашему запросу proxy и proxytype. Прокси-серверы не являются обязательными для отдельных виджетов Cloudflare Turnstile, но рекомендуются на страницах задач Cloudflare.

В чем разница между Cloudflare Turnstile и страница Cloudflare-защиты в staging?

Cloudflare Turnstile — это встроенный виджет, который возвращает токен. страница Cloudflare-защиты в staging — это полностраничная проверка, которая возвращает файл cookie qa_validation_cookie. Они используют разные методы API и разные шаблоны интеграции, хотя оба являются продуктами Cloudflare.


Исправьте рабочий процесс вашего Cloudflare Turnstile

Если интеграция Cloudflare Turnstile не удалась:

  1. Проверьте ключ сайта — извлеките его из data-sitekey или turnstile.render().
  2. Проверьте URL-адрес страницы – используйте точный URL-адрес, включая протокол и путь.
  3. Проверьте путь токена — использует ли страница cf-turnstile-response, g-recaptcha-response или обратный вызов?
  4. Используйте json=1 — Всегда используйте ответы JSON при опросе результатов Cloudflare Turnstile.
  5. Не используйте токены повторно — запрашивайте новое решение для каждой отправки.

Начните сCaptchaAI Решатель Cloudflare Turnstile, сверьте свои параметры сДокументация по APIи читатьКак работает Cloudflare Turnstileесли вам нужен опыт работы с виджетами.


Журнал итераций

Итерация Фокус Изменения
Проект 1 Структура и содержание Первоначальный вариант устранения неполадок — 3 стадии ошибок, таблица ошибок, которые нужно исправить, часто задаваемые вопросы
Проект 2 Техническая точность Проверены коды ошибок, параметры Cloudflare Turnstile и пути токенов по captchaai.com/api-docs. Добавлены таблицы параметров. Подтверждены поля method=turnstile и оба поля cf-turnstile-response/g-recaptcha-response.
Проект 3 Код и глубина внедрения Добавлены примеры решения Python и Node.js. Добавлены методы извлечения ключа сайта (3 подхода). Добавлен код внедрения Selenium для обоих полей токена. Добавлен код обнаружения обратного вызова.
Проект 4 Содержание дифференциации Добавлена ​​сравнительная таблица Cloudflare Turnstile и страница Cloudflare-защиты в staging. Добавлено примечание к требованию json=1 для user_agent. Добавлена ​​техника перехвата рендеринга для динамических ключей сайта.
Проект 5 Финальная проверка качества Проверено, что все коды ошибок соответствуют официальным документам. Добавлена ​​краткая справочная таблица. Затянутое вступление. Добавлено предупреждение об одноразовом токене. Подтвержденные перекрестные ссылки на статьи кластера. Ответы на часто задаваемые вопросы готовы к использованию в виде схемы.

Краткое описание визуальных активов

Изображение героя

  • Замещающий текст: Устранение ошибок разработчиком Cloudflare Turnstile — поток запросов, передача токена во внутренний QA endpoint и сбои проверки.
  • Необходимо показать: Последовательность действий по устранению технических неполадок с указанием стадий ошибок и способов их устранения.
  • Имя файла: cloudflare-turnstile-errors-troubleshooting-hero.png

Визуализация в статье 1

  • Место размещения: После «Ошибок на этапе результата».
  • Тип: Дерево решений
  • Замещающий текст: Дерево решений для сбоев Cloudflare Turnstile — ошибки запроса, ошибки опроса и отклонение страницы.
  • Имя файла: cloudflare-turnstile-error-decision-tree.png

Визуализация в статье 2

  • Место размещения: После сообщения «Ошибки проверки целевой страницы».
  • Тип: Диаграмма причин и исправлений
  • Альтернативный текст: Диаграмма, показывающая, почему токены Cloudflare Turnstile отклоняются, и способы устранения каждой причины.
  • Имя файла: cloudflare-turnstile-validation-causes-fixes.png

Похожие статьи

Комментарии для этой статьи отключены.