Cloudflare Challenge
и CapMonster Cloud

Решение капчи, установка на сайт и тестирование.

Стоимость решения Cloudflare Challenge

Тип капчи
Цена (РУБ)
Руб. arrow
₽ 101.44
1000 токенов
₽ 101.44
1000 токенов
Вам достался «по наследству» сайт с подключённой капчей или другой защитой, но доступа к исходному коду нет? В такой ситуации возникают вопросы: какую именно систему защиты использует сайт, правильно ли она установлена и как проверить её работу?

В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.

Если вы обнаружили, что на вашем сайте используется Cloudflare Challenge, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы Cloudflare Challenge, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.

Что такое Cloudflare Challenge
Что такое Cloudflare Challenge
Cloudflare Challenge (или Interstitial Challenge Pages) — это система проверки от компании Cloudflare, предназначенная для защиты сайтов от ботов, спама и вредоносного трафика. Когда Cloudflare подозревает, что запрос идёт не от реального посетителя сайта (например, из-за подозрительного IP или отсутствия JavaScript), он показывает Challenge — то есть «вызов», который нужно пройти, чтобы подтвердить, что вы человек. Этот тип проверки отличается от Turnstile тем, что при переходе на сайт пользователь сначала видит промежуточную страницу с сообщением “Just a moment…” и текстом “Verifying you are human. This may take a few seconds”.

Как решить Cloudflare Challenge через CapMonster Cloud

При тестировании защиты с Cloudflare Challenge важно убедиться, что проверка работает корректно и правильно отсекает подозрительный трафик.
Вы можете вручную протестировать установленный на вашу страницу challenge:
  • В режиме инкогнито откройте страницу сайта, где предполагается проверка Challenge и убедитесь, что капча отображается.
  • Попробуйте подставить в браузер неверные куки cf_clearance (см. информацию более подробно ниже) — сервер должен выдать ошибку.
  • После успешного решения капчи — должна открыться сама страница сайта уже без проверки.
Для автоматического тестирования и распознавания капчи можно использовать специализированные сервисы, например, CapMonster Cloud — инструмент, который принимает параметры капчи, обрабатывает их на своих серверах и возвращает готовое решение. Это решение (токен или куки) можно подставить в форму или браузер, чтобы пройти проверку без участия пользователя.

Работа с CapMonster Cloud через API обычно включает следующие шаги:

Создание задачи (Task)Создание задачи (Task)
arrow
Отправка запроса к APIОтправка запроса к API
arrow
Получение результатаПолучение результата
arrow
Подстановка cf_clearance Подстановка cf_clearance
arrow
Распознавание Cloudflare Challenge с использованием готовых библиотек
Сервис CapMonster Cloud предоставляет готовые библиотеки для удобной работы на языках Python, JavaScript (Node.js) и C#.
Python
JavaScript
C#
Решение Challenge и подстановка куки
Пример на Node.js для полного цикла распознавания капчи на вашей веб-странице. Возможные подходы: использовать HTTP-запросы для получения HTML и параметров системы защиты, отправить ответ и обработать результат. Или с помощью инструментов для автоматизации (например, Playwright) — открыть страницу, дождаться проверки, отправить параметры через клиент CapMonster Cloud, получить результат, подставить куки в браузер (для тестирования вы можете использовать как правильные, так и некорректные данные) и увидеть результат.

  // npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from 'playwright';
import {
  CapMonsterCloudClientFactory,
  ClientOptions,
  TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';

// Настройки -- замените на свои значения
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // можно передать любую строку
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36';

// Настройки прокси
const proxy = {
  proxyType: 'http',
  proxyAddress: '8.8.8.8',
  proxyPort: 8080,
  proxyLogin: 'proxyLogin',
  proxyPassword: 'proxyPassword'
};

async function main() {

  const cmcClient = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  // Запускаем браузер
  const browser = await chromium.launch({
    headless: false,
    proxy: proxy.proxyAddress ? {
      server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
      username: proxy.proxyLogin,
      password: proxy.proxyPassword
    } : undefined
  });

  // Создаём контекст с нужным User-Agent и размером окна (опционально)
  const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });

  // Создаём страницу и загружаем целевой URL
  const page = await context.newPage();
  const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Статус первоначального запроса:', resp?.status());

  // Получаем HTML страницы и конвертируем в Base64 для CapMonster
  const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');

  // Создаём задачу Turnstile для получения cf_clearance
  const solveResult = await cmcClient.Solve(new TurnstileRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    cloudflareTaskType: 'cf_clearance',
    htmlPageBase64: htmlBase64,
    userAgent: USER_AGENT,
    proxy: proxy.proxyAddress ? proxy : undefined
  }));

  const cf_clearance = solveResult?.solution?.cf_clearance;
  if (!cf_clearance) {
    console.error('Не удалось получить cf_clearance из CapMonster:', solveResult);
    await browser.close();
    return;
  }
  console.log('Получен cf_clearance:', cf_clearance);

  // Добавляем cf_clearance cookie в контекст браузера
  await context.addCookies([{
    name: 'cf_clearance',
    value: cf_clearance,
    domain: '.' + new URL(TARGET_URL).hostname,
    path: '/',
    httpOnly: true,
    secure: true
  }]);
  console.log('Cookie cf_clearance успешно добавлен в браузер.');

  // Повторно открываем страницу с установленным cf_clearance
  const page2 = await context.newPage();
  const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
  console.log('Статус запроса после установки cf_clearance:', resp2?.status());

  await browser.close();
  console.log('Скрипт завершил работу.');
}

main().catch(err => {
  console.error('Произошла ошибка:', err);
  process.exit(1);
});
  
Как подключить Cloudflare Challenge к своему сайту
Чтобы уверенно ориентироваться в работе капчи на вашем сайте, понимать логику её проверки, заново подключить или перенастроить, рекомендуем вам изучить этот раздел. В нём описан процесс подключения защиты — это поможет быстро разобраться во всех нюансах.
1. Зарегистрируйтесь или войдите в свой аккаунт и подключите домен к Cloudflare.
2. Включите Challenge через WAF Rule.
Перейдите: Security → Custom Rules → Create rule
HowTo Connect image 1

Пример условия (проверять всю страницу login):
http.request.uri.path contains "/login"
3. Выберите действие:
Managed Challenge (рекомендуется) — в этом случае система сама решает, нужно ли показывать пользователю челлендж, и какой именно. 
Задайте остальные нужные вам настройки и нажмите Deploy.
После прохождения проверки пользователю будет выдан cookie cf_clearance — он позволит не показывать Challenge повторно, если посетитель заходит на сайт с того же устройства и браузера.
Background
Возможные ошибки и отладка
Bug Icon
Неверный домен или настройка правила
Челлендж не отображается. Проверьте, что правило WAF привязано к правильному URI, пути или хосту.
Bug Icon
Таймаут загрузки страницы или челленджа
Браузер или клиент не дождался ответа Cloudflare. Увеличьте таймауты в тестах и мониторинге.
Bug Icon
Повторная проверка или просроченная cf_clearance
Eсли посетитель использует уже истёкший cf_clearance, система снова покажет Challenge.
Bug Icon
После Challenge следует другая проверка
Одновременное использование Challenge + кастомных правил может привести к циклическим проверкам. Следуйте рекомендациям Cloudflare по устранению таких ситуаций.
Проверка устойчивости защиты
Рекомендации по безопасности и оптимизации
Настройте правила WAF и Managed/JS/Interactive Challenge в соответствии с уровнем риска.
Логируйте события безопасности и статус прохождения Challenge, чтобы понимать причины блокировок и выявлять ложные срабатывания.
Для прозрачности и соответствия требованиям добавьте ссылки на <span class="font-bold">Политику конфиденциальности</span> и <span class="font-bold">Условия использования</span> Cloudflare/сайта на страницах с Challenge.
Заключение

Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.

В случае с Cloudflare Challenge — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить Cloudflare Challenge и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.

Conclusion

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

Cloudflare использует cookie cf_clearance для распознавания клиента, который уже прошёл проверку. CapMonster Cloud API возвращает его в ответе getTaskResult.

Для сырых HTTP-запросов: отправляйте его в заголовке Cookie: cf_clearance=<value> при последующих запросах к целевому сайту.

Для автоматизации браузера: внедрите его в контекст браузера перед перезагрузкой защищённого URL с помощью Playwright, Selenium, Puppeteer или любого другого headless-браузера для автоматизации решения страницы Cloudflare «Just a moment».

Если cookie cf_clearance больше не действителен, Cloudflare может снова показать challenge вместо предоставления доступа к защищённому контенту. В этом случае:

  1. Создайте новый запрос createTask, используя новое значение htmlPageBase64 (HTML-страница «Just a moment» в кодировке Base64, отображаемая с ответом 403) из ответа challenge
  2. Получите новое значение cf_clearance.
  3. Повторите запрос к целевому сайту с новым cookie cf_clearance.

Turnstile обычно встраивает виджет на страницу или в поток формы, а Cloudflare Bot Challenge прерывает запрос отдельной промежуточной страницей до загрузки целевого сайта.

Для Cloudflare Challenge CapMonster Cloud поддерживает два режима результата: можно вернуть либо токен, либо cookie cf_clearance.

  • При использовании варианта на основе токена задачу можно решить с прокси CapMonster Cloud. В некоторых случаях также можно использовать собственный прокси.
  • Если в результате нужен cookie cf_clearance, при создании задачи необходимо использовать собственный прокси.

Подробности использования прокси см. в документации по задаче.

CapMonster Cloud предоставляет готовые библиотеки для Python, JavaScript/Node.js и C#. Каждая библиотека охватывает полный цикл запросов: создание задачи на решение, опрос результата и возврат токена или cookie cf_clearance после успешного решения challenge.