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

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

Как обойти reCAPTCHA v2 Enterprise

Грегори Фишер

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

Введение

reCAPTCHA v2 Enterprise выглядит для пользователя почти так же, как обычная v2: та же галочка «Я не робот» или невидимый бейдж. Но под капотом это совершенно другая система. Вместо стандартного API проверки Google использует Google Cloud reCAPTCHA Enterprise API. Это дает владельцам сайтов доступ к продвинутой аналитике, более гибким правилам блокировки и, что важнее всего для разработчиков, к более строгой оценке риска.

Для автоматизации и парсинга это означает, что простого получения токена может быть недостаточно. Если IP-адрес, User-Agent или поведение выглядят подозрительно, Enterprise-система может принять токен, но все равно заблокировать запрос или потребовать дополнительную проверку.

В этом руководстве мы разберем, как стабильно решать reCAPTCHA v2 Enterprise с помощью API 2Captcha. Мы рассмотрим, как отличить Enterprise от обычной версии, какие специфические параметры (вроде data-s) нужно извлекать и как правильно настроить задачу, чтобы избежать блокировок.

Ключевые отличия v2 от v2 Enterprise

Понимание различий помогает правильно настроить запрос к API.

Характеристика reCAPTCHA v2 (Standard) reCAPTCHA v2 Enterprise
Источник скрипта api.js enterprise.js (или api.js?render=enterprise)
Метод инициализации grecaptcha.render() grecaptcha.enterprise.render()
Дополнительные параметры Редко требуются Часто используется динамический параметр data-s
Флаг в API 2Captcha isEnterprise: false (или отсутствует) isEnterprise: true
Строгость проверки Стандартная Повышенная, часто требует совпадения IP и UA

Необходимые параметры для API 2Captcha

Для решения v2 Enterprise используется тот же тип задачи, что и для обычной v2, но с обязательным флагом Enterprise и, часто, дополнительным параметром data-s.

Обязательные параметры

Параметр Описание Пример
type RecaptchaV2TaskProxyless или RecaptchaV2Task "RecaptchaV2TaskProxyless"
websiteURL Полный URL страницы с капчей "https://target-site.com/login"
websiteKey Значение атрибута data-sitekey "6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b"
isEnterprise Флаг, указывающий на Enterprise-версию true

Критически важный дополнительный параметр

Параметр Описание Пример
recaptchaDataSValue Значение атрибута data-s. Многие Enterprise-сайты генерируют этот токен динамически на бэкенде и требуют его передачи при решении. "03AGdBq24PxK..."

Параметры прокси (рекомендуется для строгих сайтов)

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

Параметр Описание Пример
proxyType http, socks4 или socks5 "http"
proxyAddress IP-адрес прокси "198.51.100.1"
proxyPort Порт прокси 8080
proxyLogin Логин (если есть) "user"
proxyPassword Пароль (если есть) "pass"

Как определить reCAPTCHA v2 Enterprise и найти параметры

Шаг 1: Проверка источника скрипта

Откройте целевую страницу, нажмите F12 и перейдите на вкладку Network. Отфильтруйте запросы по слову recaptcha.
Если вы видите загрузку скрипта с enterprise.js или api.js?render=enterprise, перед вами Enterprise-версия.

Шаг 2: Поиск sitekey и data-s

Перейдите на вкладку Elements и найдите элемент с классом g-recaptcha. В Enterprise-версии он часто выглядит так:

html Copy
<div class="g-recaptcha" 
     data-sitekey="6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b"
     data-s="03AGdBq24PxK...динамическое_значение..."
     data-callback="onSubmit"
     data-size="invisible">
</div>

Скопируйте значение data-sitekey в параметр websiteKey.
Если присутствует атрибут data-s, скопируйте его значение в параметр recaptchaDataSValue.

Шаг 3: Динамическое извлечение data-s (если нужно)

Часто значение data-s генерируется JavaScript при загрузке страницы. Если в исходном коде его нет, его можно перехватить. Откройте вкладку Network, обновите страницу и найдите запрос, который получает этот токен (часто это запрос к внутреннему API сайта перед инициализацией капчи), или найдите его в глобальных переменных через консоль:

javascript Copy
// Пример поиска data-s в глобальной области видимости или конфигурации
console.log(window.RECAPTCHA_DATA_S); // Имя переменной может отличаться

Если сайт получает его через XHR-запрос, проще всего сделать этот запрос заранее в вашем скрипте, получить значение data-s и передать его в задачу 2Captcha.

Пример JSON-запроса к API

Вот как выглядит корректный payload для отправки задачи в 2Captcha:

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://target-site.com/login",
        "websiteKey": "6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b",
        "isEnterprise": true,
        "recaptchaDataSValue": "03AGdBq24PxK...динамическое_значение..."
    }
}

Если сайт очень строгий, замените тип на RecaptchaV2Task и добавьте объект proxy с вашими данными.

Алгоритм обхода

  1. Получите API-ключ в кабинете 2Captcha.
  2. Откройте целевую страницу (через браузер или HTTP-клиент) и извлеките websiteKey и, если есть, data-s.
  3. Отправьте задачу в createTask с флагом isEnterprise: true.
  4. Опросите getTaskResult с интервалом 5 секунд.
  5. Получив gRecaptchaResponse, внедрите его в форму или вызовите callback-функцию.
  6. Отправьте финальный запрос, убедившись, что IP и User-Agent совпадают с теми, что использовались при решении (если вы использовали прокси в задаче).

Пример кода: Python + SeleniumBase (с прокси)

Если сайт отклоняет proxyless-решения, используйте свой прокси напрямую в задаче.

python Copy
from seleniumbase import SB
import time
import requests

API_KEY = "YOUR_API_KEY"
SITE_KEY = "6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b"
PAGE_URL = "https://target-site.com/login"

def solve_via_api_with_proxy(sitekey, url, proxy_info):
    payload = {
        "clientKey": API_KEY,
        "task": {
            "type": "RecaptchaV2Task", # Используем тип с прокси
            "websiteURL": url,
            "websiteKey": sitekey,
            "isEnterprise": True,
            "proxyType": proxy_info["type"],
            "proxyAddress": proxy_info["address"],
            "proxyPort": proxy_info["port"],
            "proxyLogin": proxy_info.get("login"),
            "proxyPassword": proxy_info.get("password")
        }
    }
    
    task = requests.post("https://api.2captcha.com/createTask", json=payload).json()
    task_id = task["taskId"]
    
    while True:
        time.sleep(5)
        result = requests.post(
            "https://api.2captcha.com/getTaskResult",
            json={"clientKey": API_KEY, "taskId": task_id}
        ).json()
        if result["status"] == "ready":
            return result["solution"]["gRecaptchaResponse"]

# Настройки вашего прокси
my_proxy = {
    "type": "http",
    "address": "198.51.100.1",
    "port": 8080,
    "login": "user",
    "password": "pass"
}

with SB(uc=True, headless=False, proxy=f"{my_proxy['address']}:{my_proxy['port']}") as sb:
    sb.open(PAGE_URL)
    time.sleep(3)
    
    print("Решение reCAPTCHA v2 Enterprise с прокси...")
    token = solve_via_api_with_proxy(SITE_KEY, sb.get_current_url(), my_proxy)
    print(f"Токен: {token[:40]}...")
    
    # Внедрение токена в скрытое поле
    sb.execute_script(f"document.getElementById('g-recaptcha-response').value = '{token}';")
    
    # Нажатие кнопки отправки (или вызов callback, если требуется)
    sb.click('button[type="submit"]')
    time.sleep(5)
    
    if "success" in sb.get_page_source().lower():
        print("Успешно пройдено")
    else:
        print("Возможна блокировка или ошибка валидации")

Почему Enterprise строже и как это обойти

Главная проблема v2 Enterprise не в самом процессе решения капчи, а в последующей валидации запроса. Google сверяет окружение, в котором был получен токен, с окружением финального запроса.

  1. Несовпадение IP: Если токен решен через внутренний пул 2Captcha (Proxyless), а ваш финальный запрос идет с вашего домашнего или датацентрового IP, Enterprise может это заметить.
    Решение: Если сайт строгий, используйте тип задачи RecaptchaV2Task и передавайте туда данные вашего резидентского прокси. Тогда токен будет решен с того же IP, с которого пойдет запрос.
  2. Отсутствие data-s: Игнорирование этого параметра на сайтах, которые его требуют, гарантированно приводит к ошибке валидации на стороне бэкенда сайта.
  3. Детект автоматизации: Если вы используете Selenium без модификаций, Enterprise это увидит.
    Решение: Используйте UC Mode в SeleniumBase или библиотеки вроде curl_cffi для маскировки TLS-отпечатков при запросах без браузера.

Типичные ошибки

Код ошибки Причина Решение
ERROR_WRONG_USER_KEY Неверный API-ключ Проверьте ключ в личном кабинете 2Captcha
ERROR_CAPTCHA_UNSOLVABLE Неправильные параметры Убедитесь, что isEnterprise: true, сайткей верный, и передан data-s, если он есть
ERROR_PROXY_CONNECT_REFUSED Проблема с прокси Проверьте работоспособность прокси, попробуйте другой
Токен не принимается сайтом Низкая репутация IP или детект бота Переключитесь на RecaptchaV2Task с резидентским прокси, добавьте задержки

Лучшие практики

  1. Всегда начинайте с RecaptchaV2TaskProxyless. Если сайт принимает решение, нет смысла усложнять схему прокси.
  2. Если получаете отказы, первым делом проверьте, не требует ли сайт параметр data-s. Его отсутствие — самая частая причина тихих отказов.
  3. Для критически важных задач используйте RecaptchaV2Task с качественными резидентскими прокси. Это синхронизирует IP при решении и при отправке запроса.
  4. Синхронизируйте User-Agent. Если вы передаете прокси в задачу, убедитесь, что ваш браузер или HTTP-клиент использует тот же User-Agent.
  5. Добавьте случайные задержки (2-5 секунд) между загрузкой страницы, решением капчи и отправкой формы. Мгновенные действия — красный флаг для Enterprise.

Готовые библиотеки

2Captcha предоставляет официальные SDK, которые упрощают интеграцию и берут на себя опрос статуса задачи.

Пример на Python SDK:

python Copy
from twocaptcha import TwoCaptcha

solver = TwoCaptcha('YOUR_API_KEY')

result = solver.recaptcha(
    sitekey='6Lel38UnAAAAAMRwKj9qLH2Ws4Tf2uTDQCyfgR6b',
    url='https://target-site.com/login',
    enterprise=True,
    data_s='03AGdBq24PxK...' # Передача data-s через SDK
)

print(f"Решено: {result['code']}")

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

Заключение

Обход reCAPTCHA v2 Enterprise через 2Captcha технически мало отличается от обычной v2, но требует большей внимательности к деталям. Ключ к успеху лежит в трех вещах: правильной установке флага isEnterprise: true, обязательном извлечении и передаче параметра data-s (если сайт его использует) и синхронизации сетевого окружения (IP и User-Agent) между моментом решения капчи и финальным запросом. Следуя этим правилам, вы сможете стабильно автоматизировать взаимодействие со строгими защищенными ресурсами.