Looking for international version of our service? Go to 2captcha.com

Логотип «RuCaptcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как решить Cloudflare Turnstile на сайте copilot.microsoft.com

Катя Пушкаренва

Технический специалист

Введение

Если вы интегрируете автоматическое решение капчи Cloudflare Turnstile для copilot.microsoft.com и получаете токены, которые сайт отклоняет, это руководство для вас.

Сервис RuCaptcha поддерживает решение Turnstile через API v2 с минимальным набором параметров. Для стандартной реализации на copilot.microsoft.com достаточно передать websiteKey и websiteURL, но критически важно синхронизировать User-Agent между запросами.

Материал содержит общие рекомендации по настройке задачи, анализу страницы и отладке интеграции.

Общие сведения

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

Особенности Turnstile на copilot.microsoft.com

Параметр Значение Примечание
websiteKey 0x4AAAAAAAg146IpY3lPNWte Извлекается из атрибута data-sitekey
websiteURL https://copilot.microsoft.com/chats/... Полная ссылка на страницу с капчей
Тип задачи TurnstileTask Стандартный режим, не Challenge
Дополнительные параметры Не требуются pagedata, action, data можно не передавать

Почему токен может не приниматься сайтом

Даже при корректно полученном токене сайт может отклонить запрос. Основные причины:

Причина Как проверить Решение
Несоответствие User-Agent Сравнить UA в запросе и в ответе API Использовать userAgent из ответа RuCaptcha
Рассинхрон сессии Проверить куки и заголовки Переиспользовать контекст браузера
Блокировка по IP Протестировать без прокси или с другим гео Использовать резидентный прокси
Преждевременная отправка Проверить, загружена ли форма Добавить ожидание элемента перед инъекцией
Неверный способ отправки токена Решите капчу вручную и изучите с помощью инструментов разработчика сетевые запросы Внедрите этот способ в ваше решение

Подготовка окружения

Перед началом работы убедитесь, что у вас есть:

  • Доступ к API RuCaptcha — API-ключ из личного кабинета
  • Инструменты для автоматизации браузера — Playwright, Puppeteer или Selenium
  • Актуальный User-Agent — строка из реального браузера, от имени которого идёт запрос
  • Прокси (опционально) — резидентный, с геолокацией, соответствующей целевому сайту

Требования к прокси (если используется)

Требование Описание
Тип Резидентный (residential) или мобильный
Протокол HTTP/HTTPS
Геолокация Соответствует целевому сайту (US, EU)
Аутентификация По логину/паролю или по IP
Стабильность Минимальное время отклика, отсутствие частых разрывов

Анализ страницы и извлечение параметров

Определение наличия капчи

На copilot.microsoft.com капча Turnstile отображается при отправке сообщения в чат. Визуально — это виджет с логотипом Cloudflare или невидимая проверка.

Поиск websiteKey

  1. Откройте DevTools (F12) на целевой странице
  2. Перейдите во вкладку "Elements"
  3. Найдите элемент с классом cf-turnstile или атрибутом data-sitekey

Пример тега:

html Copy
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAg146IpY3lPNWte"></div>

Значение атрибута data-sitekey — это ваш websiteKey.

Проверка типа виджета

Убедитесь, что используется стандартный виджет, а не Challenge-страница:

  • Стандартный режим: элемент .cf-turnstile присутствует, iframe с challenges.cloudflare.com отсутствует
  • Challenge-режим: присутствует iframe с эндпоинтом Cloudflare Challenges

Для copilot.microsoft.com в большинстве случаев используется стандартный режим, для которого не требуются дополнительные параметры.

Реализация

Структура задачи TurnstileTask

Задача отправляется методом createTask на эндпоинт https://api.rucaptcha.com/createTask.

Обязательные поля задачи:

Поле Тип Описание
type String TurnstileTask или TurnstileTaskProxyless
websiteURL String Полный URL страницы с капчей
websiteKey String Значение из атрибута data-sitekey

Рекомендуемые поля:

Поле Тип Описание
userAgent String Строка User-Agent браузера. Рекомендуется передавать для синхронизации сессии
proxyType String Тип прокси: http, https, socks4, socks5
proxyAddress String IP-адрес или хост прокси
proxyPort Integer Порт прокси
proxyLogin String Логин для аутентификации прокси (если требуется)
proxyPassword String Пароль для аутентификации прокси (если требуется)

Пример тела запроса (JSON)

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "TurnstileTaskProxyless",
    "websiteURL": "https://copilot.microsoft.com/chats/example",
    "websiteKey": "0x4AAAAAAAg146IpY3lPNWte",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
  }
}

Получение результата

После создания задачи используйте метод getTaskResult для опроса статуса:

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": 123456789
}

Возможные значения поля status:

Значение Описание
processing Задача в работе, продолжайте опрос
ready Решение готово, токен в поле solution.token
error Произошла ошибка, проверьте errorDescription

Инъекция токена в страницу

После получения токена:

  1. Дождитесь появления поля input[name="cf-turnstile-response"]
  2. Установите значение токена в это поле
  3. Вызовите события change и input для активации триггеров сайта
  4. При необходимости обновите User-Agent в сессии, если API вернул другое значение

Пример логики (псевдокод):

Copy
дождаться поля cf-turnstile-response
установить значение токена
вызвать события change и input
если API вернул userAgent:
    обновить заголовок User-Agent в сессии
отправить форму или продолжить взаимодействие

Пояснения к параметрам

Минимальный набор параметров

  • Для стандартного Turnstile на copilot.microsoft.com достаточно websiteKey и websiteURL
  • Параметр userAgent рекомендуется передавать для синхронизации сессии
  • pagedata, action, data можно не указывать, если сайт не требует их явно

Синхронизация User-Agent

  • API RuCaptcha может вернуть поле solution.userAgent с актуальной строкой агента
  • Используйте это значение в последующих запросах к целевому сайту
  • Несоответствие User-Agent — частая причина отклонения валидных токенов

Инъекция токена

  • Токен передаётся в поле cf-turnstile-response
  • После установки значения важно вызвать события change и input для триггеров сайта
  • Если сайт использует колбэк-функцию, её нужно вызвать отдельно (редко для стандартного режима)

Обратная связь по результатам решения

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

Если сайт отклонил решение

Отправьте POST-запрос на эндпоинт reportIncorrect:

Эндпоинт: https://api.rucaptcha.com/reportIncorrect

Метод: POST

Content-Type: application/json

Пример запроса:

json Copy
{
   "clientKey": "YOUR_API_KEY",
   "taskId": 74455221488
}

Пример ответа:

json Copy
{
    "errorId": 0,
    "status": "success"
}

Важно: не используйте этот метод, если ваш процент успеха близок к 0%. Это может указывать на ошибку в вашем коде, а не в решениях капчи.

Если сайт принял решение

Отправьте POST-запрос на эндпоинт reportCorrect:

Эндпоинт: https://api.rucaptcha.com/reportCorrect

Метод: POST

Content-Type: application/json

Пример запроса:

json Copy
{
   "clientKey": "YOUR_API_KEY",
   "taskId": 74455221488
}

Пример ответа:

json Copy
{
    "errorId": 0,
    "status": "success"
}

Политика возвратов

  • Каждый случай рассматривается индивидуально
  • Для стандартных капч проверяется корректность ответа
  • Для капч с токеном анализируется статистика исполнителя
  • Возврат средств не гарантируется по каждой жалобе
  • Итоговая сумма возвратов может отличаться от количества обращений

Отправляйте отчёты честно и только после реальной проверки на целевом сайте.

Типичные ошибки и способы их устранения

Ошибка Возможная причина Решение
Токен есть, но сайт не пускает Несоответствие User-Agent Используйте userAgent из ответа API в последующих запросах
Виджет не исчезает после инъекции Токен не принят или форма не обновилась Проверьте, что токен инжектирован до отправки формы, добавьте задержку

Рекомендации по отладке

  • Включите детальное логирование запросов и ответов
  • Сохраняйте taskId для каждого запроса — это упростит обращение в поддержку
  • Тестируйте интеграцию в не-headless режиме перед запуском в продакшене
  • Проверяйте ответ целевого сайта после отправки токена
  • Сравнивайте User-Agent в запросе к API и в браузере

Дополнительные ресурсы

Контрольный список

  • websiteKey извлечён из атрибута data-sitekey
  • websiteURL содержит полную ссылку на страницу с капчей
  • userAgent в запросе совпадает с реальным браузером
  • В ответе API используется возвращённый userAgent для последующих запросов
  • Токен инжектируется в поле cf-turnstile-response с триггерами событий
  • Прокси (если используется) резидентный и соответствует гео целевого сайта
  • Включено логирование для отладки параметров и ответов API
  • Реализована отправка отчётов reportIncorrect / reportCorrect

Заключение

Для стандартной реализации Cloudflare Turnstile на copilot.microsoft.com достаточно передать два обязательных параметра: websiteKey и websiteURL. Дополнительные параметры в данном случае не требуются.

Основная причина, по которой токен может не приниматься сайтом — несоответствие User-Agent между запросом к API и последующими запросами от браузера. Всегда используйте значение userAgent из ответа RuCaptcha для синхронизации сессии.

Корректная инъекция токена требует установки значения в поле cf-turnstile-response и вызова событий change и input для активации триггеров сайта.

Не забывайте отправлять обратную связь через reportIncorrect и reportCorrect — это помогает улучшать качество сервиса и возвращать средства за ошибочные решения.

Автоматизируйте любые капчи с помощью API RuCaptcha.