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

Туториалы по обходу капчи

Как обойти капчу Cloudflare

Как распознать, решить и обойти Cloudflare капчу (Turnstile, Challenge) с использованием API

Введение

Капча Turnstile от Cloudflare — это популярный механизм защиты, предназначенный для защиты веб-сайтов от ботов и вредоносного трафика. Cloudflare Turnstile может использоваться в связке с другими технологиями, такими как Cloudflare WAF (Web Application Firewall), который фильтрует подозрительный трафик на уровне запросов, обеспечивая дополнительный уровень защиты. Хотя он эффективен, он может создавать трудности для разработчиков, работающих над автоматизацией или ботами, которым необходимо взаимодействовать с такими защищенными веб-сайтами. Эта статья представляет собой четкое и краткое руководство по обходу капчи Cloudflare с использованием API v2 от сервиса обхода капч. Независимо от вашего уровня подготовки, это руководство облегчит процесс.

Есть два вида капчи Cloudflare, которые требуют разного подхода:

  • Standalone Captcha — виджет капчи размещен на странице веб-сайта, смотрите нашу демо страницу Turnstile.
  • Cloudflare Challenge page — капча отображается на странице проверки Cloudflare. При получении этого типа капчи, капча блокирует взаимодействие с сайтом, пока вы её не решите. Демо страница Cloudflare Challenge page.

В этой статье описано решение капчи Standalone Captcha.

В тех случаях, когда вам необходимо разгадать капчу Cloudflare Challenge page, методы обхода этого типа описаны в следующих статьях:

После прочтения этой статьи вы узнаете:

  • Почему решение капч важно для некоторых случаев.
  • Как использовать API v2 от 2Captcha для обхода капчи Cloudflare Turnstile.
  • Практические шаги и примеры кода для реализации этого решения.

Что такое капча Turnstile от Cloudflare?

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

Ключевые особенности капчи Turnstile:

  • Легкость и ориентация на конфиденциальность.
  • Эффективность в предотвращении автоматического доступа.
  • Частое использование на современных веб-сайтах.

Какие причины для обхода капчи Cloudflare Turnstile?

Разработчики и не только могут столкнуться с необходимостью обхода капч по следующим причинам:

  • Автоматизация рутинных задач.
  • Сбор данных или их анализ.
  • Тестирование веб-приложений.

Решение: Использование API v2 от 2Captcha

2Captcha — это сервис, в котором капчи решает команда работников. Использование сервиса 2Captcha позволит вам автоматизировать решение капчи Turnstile от Cloudflare. Сервис 2Captcha предоставляет удобный API v2 для интеграции в ваши приложения или код.

Необходимые условия

  1. Аккаунт на 2Captcha. Зарегистрироваться можно здесь.
  2. API-ключ из настроек аккаунта на 2Captcha.
  3. Базовые знания программирования (например, Python, JavaScript, Go или других языков).
    Если знаний программирования у вас нет, то советуем вам использовать наше расширение 2captcha-solver, подробнее об использовании расширения описано на странице captcha-bypass-extension.

Понимание работы API

API v2 от 2Captcha упрощает процесс решения капч с помощью структурированных конечных точек. Алгоритм взаимодействия с API можно разделить на два этапа:

  1. Отправка данных капчи: Передайте ключ сайта sitekey с помощью параметра websiteKey и URL страницы websiteURL, защищенной капчей, в API.
  2. Получение решения: Дождитесь решения капчи и получите токен (решение).

Конечные точки API (v2)

Для подробностей обратитесь к документации API v2.

Алгоритм процесса решения Cloudflare капчи:

  1. Создание аккаунта 2Captcha
  2. Отправка капчи в API: Отправьте найденные параметры Cloudflare Turnstile капчи в API.
  3. Получение результата решения в API: Используйте идентификатор задачи для получения ответа на капчу.
  4. Применение полученного решения: Примените полученный ответ на странице.

Ниже поэтапно разберем подробнее каждый шаг.


Шаг 1: Создание аккаунта 2Captcha

Регистрация и пополнение аккаунта:

  1. Создайте аккаунт на 2Captcha.
  2. Пополните баланс аккаунта, так как решение CAPTCHA является платной услугой.

Получение API ключа:

  1. Войдите в свой аккаунт.
  2. Скопируйте API ключ, который будет использоваться для аутентификации. API ключ расположен на странице Dashboard, либо на странице настроек.

Пример как выглядит API key: 1abc234de56fab7c89012d34e56fa7b8

Скриншот — получите свой API key:
apikey example


Шаг 2: Отправка капчи в API

Для отправки капчи в API v2 вам сначала необходимо определить параметры вашей капчи, а затем отправить запрос в API v2 с указанием найденных параметров.

2Captcha предоставляет демо-страницу, чтобы протестировать решения для капчи Turnstile от Cloudflare. Вы можете использовать ее для проверки своей реализации перед развертыванием в реальных условиях.

Определение параметров капчи

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

  1. Определите sitekey капчи:
    • Откройте веб-страницу, где отображается капча Cloudflare Turnstile.
    • Используйте инструменты разработчика в браузере (например, вкладку "Элементы" или "Сеть").
    • Найдите HTML-элемент, связанный с капчей. Обычно это тег <div> с атрибутом data-sitekey. Скопируйте значение атрибута data-sitekey — это и есть sitekey.
    • Этот параметр указывается в запросе в виде websiteKey.
      Пример: "websiteKey":"3x00000000000000000000FF",
  2. Определите pageurl:
    • Укажите URL страницы, на которой отображается капча. Этот параметр указывается в запросе в виде websiteURL.
      Пример: "websiteURL":"https://2captcha.com/demo/cloudflare-turnstile",

Когда все параметры найдены, перейдём к формированию JSON, необходимого для отправки запроса, с типом задания TurnstileTaskProxyless. В поле clientKey вставляем ваш API-ключ, полученный на шаге 1.

TurnstileTaskProxyless — это тип задания для обхода капчи Cloudflare Turnstile без использования прокси. В случаях, если вам необходимо использовать прокси, используйте тип задания TurnstileTask. Документация для двух типов заданий описана на странице cloudflare-turnstile.

Формируем JSON используя полученные данные согласно документации:

{
    "clientKey":"1abc234de56fab7c89012d34e56fa7b8",
    "task": {
        "type":"TurnstileTaskProxyless",
        "websiteURL":"https://2captcha.com/demo/cloudflare-turnstile",
        "websiteKey":"3x00000000000000000000FF"
    }
}

Отправляем сформированный JSON в API

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

Конечная точка API: https://api.2captcha.com/createTask
Метод: POST
Content-Type: application/json

{
    "clientKey":"1abc234de56fab7c89012d34e56fa7b8",
    "task": {
        "type":"TurnstileTaskProxyless",
        "websiteURL":"https://2captcha.com/demo/cloudflare-turnstile",
        "websiteKey":"3x00000000000000000000FF"
    }
}

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

{
  "errorId": 0,
  "taskId": "123456789"
}

На следующем шаге используем полученное значение taskId для получения результата решения капчи.


Шаг 3: Получение результата решения в API

Используйте конечную точку API https://api.2captcha.com/getTaskResult для получения решения CAPTCHA. Передайте taskId из предыдущего шага в запросе, чтобы получить результат решения.

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

Конечная точка API: https://api.2captcha.com/getTaskResult
Метод: POST
Content-Type: application/json

{
  "clientKey": "1abc234de56fab7c89012d34e56fa7b8",
  "taskId": "123456789"
}

Решение капчи занимает некоторое время, обычно от 3 до 15 секунд, в зависимости от нагрузки на сервис и количества доступных работников.

На этом этапе мы проверяем, была ли решена капча Cloudflare Turnstile. Для этого нужно отправить запрос getTaskResult с указанием значения taskId с интервалом около 3-5 секунд.

В зависимости от статуса CAPTCHA вы можете получить один из трех типов ответов: processing, ready или ERROR_CAPTCHA_UNSOLVABLE. Ниже приводится более подробное описание каждого статуса.

Примеры ответов

Пример ответа processing (в процессе):

Этот статус указывает, что капча пока еще не решена. Необходимо сделать паузу, а затем повторить запрос.

Пример ответа со статусом processing:

{
    "errorId": 0,
    "status": "processing"
}

Пример ответа ready (готовое решение):

Ваша CAPTCHA успешно решена. Ответ содержит объект solution, включающий два значения: token и userAgent. Значение token представляет результат решения CAPTCHA и должен быть использован позже. Значение userAgent содержит пользовательский User-Agent, используемый при решении капчи. Подробная информация о применении решения CAPTCHA представлена на следующем шаге.

{
    "errorId": 0,
    "status": "ready",
    "solution": {
        "token": "0.zrSnRHO7h0HwSjSCU8oyzbjEtD8p.d62306d4ee00c77dda697f959ebbd7bd97",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    },
    "cost": "0.00145",
    "ip": "1.2.3.4",
    "createTime": 1692863536,
    "endTime": 1692863556,
    "solveCount": 1
}

После получения ответа со статусом ready вы можете перейти к следующему шагу.

Пример ответа ERROR_CAPTCHA_UNSOLVABLE (не удалось решить капчу)

Ваша CAPTCHA не может быть решена. Это может произойти по различным причинам, например, если работник не смог справиться с вашей CAPTCHA. Когда вы получаете этот статус, следует отправить новую задачу для решения CAPTCHA.

Обычно статус ERROR_CAPTCHA_UNSOLVABLE не вызывает проблем, так как процент таких случаев невелик.

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

Пример ответа со статусом ERROR_CAPTCHA_UNSOLVABLE:

{
    "errorId": 12,
    "errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
    "errorDescription": "Workers could not solve the Captcha"
}

Шаг 4: Применение полученного решения (использование токена)

Используйте токен, полученный от API, для взаимодействия с целевым веб-сайтом.

Обычно токен отправляется через поле ввода с атрибутом name="cf-turnstile-response", а если включен режим совместимости с reCAPTCHA, также может использоваться поле с атрибутом name="g-recaptcha-response".
Кроме того, токен может обрабатываться с помощью callback-функции, заданной в вызове turnstile.render, или через атрибут data-callback.

На демо-странице используется поле ввода, которое можно изменить следующим образом:

document.querySelector('[name="cf-turnstile-response"]').value = 'TOKEN';

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

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

  1. Анализ сетевых запросов:
    Используйте инструменты разработчика браузера (например, вкладку "Сеть" в Chrome DevTools), чтобы отследить запросы, отправляемые после решения CAPTCHA. Это поможет определить, где используется токен.
  2. Анализ кода JavaScript:
    Ищите скрипты на странице, связанные с CAPTCHA. Токены часто вставляются в форму перед отправкой или включаются в заголовки HTTP-запросов. Изучите код, чтобы понять механизм.
  3. Проверка элементов страницы:
    Проверьте HTML-элементы, такие как скрытые поля формы (<input type="hidden">), где может храниться токен. Токен часто добавляется в эти поля после успешного решения CAPTCHA.
  4. Обращение к документации:
    Изучите официальную документацию CAPTCHA, которая обычно содержит детали по внедрению и использованию токена на стороне сервера.
  5. Тестирование токена:
    Скопируйте токен и вручную отправьте запрос, чтобы убедиться, что он работает корректно. Это поможет определить, как сервер обрабатывает предоставленный токен.

Лучшие практики и рекомендации

  1. Соблюдайте условия использования веб-сайтов: Убедитесь, что вы не нарушаете никаких юридических соглашений.
  2. Оптимизируйте запросы к API: Избегайте ненужных запросов, чтобы снизить нагрузку на API 2Captcha.
  3. Обработка ошибок: Реализуйте надежную обработку ошибок для производственной среды.
  4. Защита вашего API-ключа: Никогда не публикуйте ваш API-ключ в общедоступных репозиториях.
  5. Используйте официальные библиотеки: Для взаимодействия с API 2Captcha реализованы официальные библиотеки. Список официальных библиотек: python | javascript | go | ruby | php | java | csharp | c++

Примеры кода

В наших официальных GitHub репозиториях собраны примеры кода для отправки капч для всех поддерживаемых языков программирования:
Python examples, JavaScrip texamples, Go examples, Ruby examples, PHP examples, Java examples, C# examples, C++ examples

Также у нас есть официальный репозиторий с примерами использования Selenium для решения капч. В этом репозитории есть пример кода для обхода Cloudflare Turnstile: cloudflare_turnstile.py.


Как избежать Cloudflare's Turnstile CAPTCHA

Чтобы уменьшить вероятность появления CAPTCHA от Cloudflare's Turnstile, рекомендуется следовать следующим рекомендациям:

  1. Избегайте избыточного количества запросов:
    Не отправляйте запросы слишком часто или в больших объемах. Cloudflare отслеживает необычные всплески активности и может пометить их как подозрительные. Используйте интервалы между запросами, чтобы они выглядели естественными.

  2. Используйте корректные заголовки HTTP:
    Убедитесь, что ваши запросы содержат корректные и правдоподобные заголовки, такие как User-Agent, который должен имитировать стандартные браузеры. Также добавляйте необходимые заголовки, такие как Accept, Accept-Language и Referer, чтобы трафик выглядел легитимным.

  3. Применяйте прокси или ротацию IP-адресов:
    Частые запросы с одного IP-адреса могут быть помечены как подозрительные. Используйте прокси-сервисы или ротацию IP, чтобы запросы выглядели распределенными. Избегайте IP-адресов, связанных с центрами данных или известными VPN, так как они чаще всего попадают в черные списки. Рекомендуется использовать резидентные или мобильные IP-адреса, например, резидентные прокси.

  4. Эмулируйте поведение пользователя:
    Добавьте к вашим запросам паттерны, похожие на действия пользователя, такие как задержки, переходы между страницами или прокрутка. Это помогает сделать вашу активность более естественной и менее автоматизированной.

  5. Работайте с куки и сессиями:
    Сохраняйте и повторно используйте сессионные куки, чтобы избежать создания ненужных новых сессий. Cloudflare часто отслеживает консистентность сессий, поэтому их стабильность поможет снизить вероятность появления CAPTCHA.

Следуя этим рекомендациям, вы можете минимизировать шансы блокировки или появления CAPTCHA от Cloudflare's Turnstile.


Заключение

Обход капчи Turnstile от Cloudflare становится простым с использованием API v2 от 2Captcha. Это руководство предоставило обзор процесса — от отправки капчи до получения решения, с практическими примерами, чтобы начать.

Если у вас есть вопросы или комментарии, не стесняйтесь делиться ими. Для более сложных случаев использования или устранения проблем обратитесь к официальной документации 2Captcha.


Полезные ссылки: