Технические разборы

Как работает страница Cloudflare-защиты в staging

Когда Cloudflare подозревает, что посетитель — бот, он показывает межстраничное межстраничное объявление с сообщением «Проверка браузера перед доступом...» или «Подтвердите, что вы человек». Это называется страница Cloudflare-защиты в staging — не путать с Turnstile, который представляет собой виджет, встроенный в страницу.

Вызов блокирует доступ ко всей странице до тех пор, пока браузер не пройдет проверку. После прохождения Cloudflare устанавливает файл cookie qa_validation_cookie, который предоставляет доступ к последующим запросам.


Как работает поток задач

Request → Cloudflare proxy → Suspicious? → Challenge page
                                              ↓
                                    Browser verification
                                              ↓
                                    qa_validation_cookie cookie set
                                              ↓
                                    Original page loads
  1. Запрос перехвачен — обратный прокси-сервер Cloudflare оценивает входящий запрос.
  2. Оценка рисков — анализируются репутация IP-адреса, заголовки запросов, TLS-сигналы и поведение.
  3. Запрос выполнен — в случае подозрений страница запроса заменяет предполагаемый ответ.
  4. Проверка браузера — вызовы JavaScript выполняются в браузере.
  5. Набор файлов cookie — в случае успеха для файла cookie qa_validation_cookie устанавливается настраиваемый срок жизни.
  6. Доступ предоставлен — браузер перезагружается и получает исходное содержимое страницы.

Что вызывает страница Cloudflare-защиты в staging

Курок Описание
IP-адрес центра обработки данных Запрос от известных хостинг-провайдеров
Отсутствуют заголовки Отсутствующие или необычные HTTP-заголовки
TLS-сигналы Сигналы среды JA3/JA4 соответствует известным подписям ботов
Высокая частота запросов Слишком много запросов с одного IP
Настройка уровня безопасности Владелец сайта установил высокий порог проверки
Правила на основе страны Правила географической блокировки или вызова
Оценка бота Оценка бота ML Cloudflare слишком низкая
Известная угроза IP появляется в списках разведки об угрозах

После прохождения вызова браузер получает:

qa_validation_cookie=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None

Основные свойства:

  • Продолжительность: от 15 минут до 24 часов (настраивается владельцем сайта)
  • Объем: привязан к конкретному домену.
  • Привязка. Привязывается к пользовательскому агенту и IP-адресу, использованному при проверке.
  • Применение: необходимо включать во все последующие запросы, чтобы избежать повторного запроса.

Важно! Файл cookie qa_validation_cookie привязан к конкретному Агенту пользователя и IP-адресу, используемому во время проверки. Изменение любого из них приведет к аннулированию файла cookie.


страница Cloudflare-защиты в staging против Cloudflare Turnstile против JS Challenge

Особенность CF вызов Cloudflare Turnstile JS-вызов
Тип Полностраничное межстраничное объявление Виджет на странице Тихая проверка
Пользователь видит Страница «Проверка браузера» Флажок или ничего Ничего
Блокирует доступ к странице Да Нет Кратко
Устанавливает qa_validation_cookie Да Иногда Да
Для решения требуется прокси Да Нет PLACEHOLDER_TOKEN
Сайт использует Cloudflare CDN Необходимый Необязательный Необходимый

Решение страница Cloudflare-защиты в staging с помощью CaptchaAI

Для решения страница Cloudflare-защиты в staging требуется прокси, поскольку файл cookie qa_validation_cookie привязан к IP-адресу.

Питон

import requests
import time

API_KEY = "YOUR_API_KEY"

# Submit task — proxy is REQUIRED
response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY,
    "method": "turnstile",
    "pageurl": "https://example.com/protected-page",
    "proxy": "username:password@proxy.example.com:8080",
    "proxytype": "HTTP",
    "json": 1
})

task_id = response.json()["request"]

# Poll for result
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:
        solution = result["request"]
        # solution contains qa_validation_cookie cookie + user_agent
        print(f"qa_validation_cookie: {solution}")
        break

Node.js

const axios = require('axios');

async function solveCloudflareChallenge(pageurl, proxy) {
  const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
    params: {
      key: 'YOUR_API_KEY',
      method: 'turnstile',
      pageurl,
      proxy,
      proxytype: 'HTTP',
      json: 1
    }
  });

  const taskId = data.request;

  for (let i = 0; i < 60; i++) {
    await new Promise(r => setTimeout(r, 5000));
    const res = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
    });
    if (res.data.status === 1) return res.data.request;
  }
  throw new Error('Timeout');
}
# After getting the solution
qa_validation_cookie = solution["qa_validation_cookie"]
user_agent = solution["user_agent"]

# Use the SAME proxy and user agent for subsequent requests
session = requests.Session()
session.cookies.set("qa_validation_cookie", qa_validation_cookie, domain=".example.com")
session.headers["User-Agent"] = user_agent
session.proxies = {"https": "http://username:password@proxy.example.com:8080"}

# Now access the protected page
page = session.get("https://example.com/protected-page")
print(f"Status: {page.status_code}")

Зачем нужен прокси

Файл cookie qa_validation_cookie криптографически связан с:

  1. IP-адрес — решение должно происходить с того же IP-адреса, который вы будете использовать.
  2. User-Agent — пользовательский агент решения должен соответствовать вашим запросам.
  3. TLS-сигналы — некоторые конфигурации также проверяют характеристики TLS.

Если какие-либо из них отличаются между решением и вашими последующими запросами, файл cookie недействителен.


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

Владельцы сайтов настраивают продолжительность, обычно от 15 минут до 24 часов. По истечении срока необходимо решить новую задачу.

Нет. Файл cookie привязан к IP-адресу, использованному во время проверки. Изменение IP-адресов требует нового решения.

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

страница Cloudflare-защиты в staging – это полностраничное межстраничное объявление, блокирующее доступ к странице. Cloudflare Turnstile — это встроенный в страницу виджет, аналог reCAPTCHA. Задача требует, чтобы сайт использовал Cloudflare в качестве прокси; Cloudflare Turnstile можно использовать на любой площадке.

Сколько времени занимает решение?

Решение страница Cloudflare-защиты в staging занимает 20–60 секунд, дольше, чем Turnstile или reCAPTCHA, из-за полной проверки браузера.

Что, если на странице есть и Cloudflare, и reCAPTCHA?

Сначала решите страница Cloudflare-защиты в staging, чтобы получить доступ к странице, затем решите reCAPTCHA на загруженной странице.


Связанные руководства

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