Туториалы по API

Как решить reCAPTCHA v2 Enterprise с помощью API

reCAPTCHA v2 Enterprise использует тот же вызов флажков, что и стандартная версия 2, но проверяет токены через Google Enterprise API вместо общедоступной конечной точки siteverify. Процесс решения с помощью CaptchaAI практически идентичен — вы добавляете один параметр: enterprise=1.

В этом руководстве описывается обнаружение, извлечение параметров и решение с использованием рабочего кода Python и Node.js.

Не уверены, используете ли вы Enterprise или Standard? ЧитатьКак определить внедрение reCAPTCHA Enterpriseпервый.


Что вам нужно, прежде чем начать

Требование Подробности
CaptchaAI API-ключ Получите один вcaptchaai.com/api.php
URL целевой страницы Полный URL-адрес, по которому отображается reCAPTCHA.
Ключ сайта Из атрибута data-sitekey
Флаг предприятия Подтверждено с помощью тега сценария enterprise.js.
значение data-s (если присутствует) Необязательный дополнительный токен в некоторых реализациях Enterprise.

Шаг 1. Обнаружение внедрения Enterprise

Проверьте источник страницы по этим показателям:

// Enterprise script tag (NOT api.js)
// <script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>

// Enterprise JavaScript object
// grecaptcha.enterprise.render(...)
// grecaptcha.enterprise.execute(...)

Если вы видите enterprise.js или grecaptcha.enterprise, это Enterprise. Если вы видите api.js и grecaptcha, это стандарт.

Шаг 2. Извлечение параметров

# Sitekey: from data-sitekey attribute
# <div class="g-recaptcha" data-sitekey="6LcR_RsTAAAA..." data-s="..."></div>

# Or from enterprise.js render parameter
# https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAA...

Также проверьте наличие data-s — дополнительного токена сеанса, который требуется для некоторых реализаций Enterprise.

Шаг 3. Отправьте заявку на CaptchaAI.

import requests

params = {
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
    "pageurl": "https://https://staging.example.com/qa-login",
    "enterprise": 1,  # Required for Enterprise
    "json": 1
}

# Include data-s if present on the page
# params["data-s"] = "data-s-value-from-page"

response = requests.get("https://ocr.captchaai.com/in.php", params=params)
data = response.json()
task_id = data["request"]
print(f"Task ID: {task_id}")
const params = new URLSearchParams({
  key: "YOUR_API_KEY",
  method: "userrecaptcha",
  googlekey: "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
  pageurl: "https://https://staging.example.com/qa-login",
  enterprise: 1,
  json: 1,
});

const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const data = await res.json();
console.log(`Task ID: ${data.request}`);

Шаг 4: Опрос на результат

import time

for _ in range(40):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY",
        "action": "get",
        "id": task_id,
        "json": 1
    }).json()

    if result.get("status") == 1:
        token = result["request"]
        print(f"Token: {token[:50]}...")
        break
    if result.get("request") != "CAPCHA_NOT_READY":
        raise RuntimeError(f"Error: {result['request']}")
let token;
for (let i = 0; i < 40; i++) {
  await new Promise((r) => setTimeout(r, 5000));
  const res = await fetch(
    `https://ocr.captchaai.com/res.php?${new URLSearchParams({
      key: "YOUR_API_KEY", action: "get", id: taskId, json: 1,
    })}`
  );
  const data = await res.json();
  if (data.status === 1) { token = data.request; break; }
  if (data.request !== "CAPCHA_NOT_READY") throw new Error(data.request);
}

Шаг 5. Внедрите токен

передача токена во внутренний QA endpoint такое же, как и в стандартной версии v2:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://https://staging.example.com/qa-login")

# Inject token into hidden field
driver.execute_script(
    f'document.getElementById("g-recaptcha-response").innerHTML = "{token}";'
)

# Check for callback
callback = driver.execute_script(
    'var el = document.querySelector(".g-recaptcha"); '
    'return el ? el.getAttribute("data-callback") : null;'
)
if callback:
    driver.execute_script(f'{callback}("{token}");')
else:
    driver.find_element("css selector", "form").submit()

Полный рабочий пример

import requests
import time

def solve_recaptcha_v2_enterprise(api_key, sitekey, page_url, data_s=None):
    params = {
        "key": api_key, "method": "userrecaptcha",
        "googlekey": sitekey, "pageurl": page_url,
        "enterprise": 1, "json": 1
    }
    if data_s:
        params["data-s"] = data_s

    submit = requests.get("https://ocr.captchaai.com/in.php", params=params).json()
    if submit.get("status") != 1:
        raise RuntimeError(f"Submit error: {submit.get('request')}")

    task_id = submit["request"]

    for _ in range(40):
        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:
            return result["request"]
        if result.get("request") != "CAPCHA_NOT_READY":
            raise RuntimeError(f"Solve error: {result.get('request')}")

    raise TimeoutError("Solve timed out after 200s")

# Usage
token = solve_recaptcha_v2_enterprise("YOUR_API_KEY", "6LcR_RsTAAAA...", "https://https://staging.example.com/qa-login")
print(f"Solved: {token[:50]}...")

Полный работоспособный пример

Нужен полноценный рабочий проект с настройкой среды, опросом, повторными попытками и обработкой ошибок?

Полный работоспособный пример см. на GitHub →.


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

В чем единственная разница между вызовами стандартного и корпоративного API?

Добавьте enterprise=1 к вашему запросу CaptchaAI. Все остальное — имя метода, параметр sitekey, опрос — идентично.

Когда мне нужен параметр data-s?

Только если страница содержит атрибут data-s в блоке reCAPTCHA. Большинство реализаций Enterprise его не используют. Проверьте источник HTML.

CaptchaAI взимает другую плату для Enterprise?

Проверятьcaptchaai.comпо текущим ценам. Корпоративные решения могут использовать разное количество потоков.

Можно ли повторно использовать токены Enterprise?

Нет. Как и стандартная версия 2, токены Enterprise являются одноразовыми, срок их действия истекает примерно через 2 минуты.

Как узнать, что мое решение Enterprise не удалось?

Если целевой сайт по-прежнему блокирует вас после передача токена во внутренний QA endpoint, проверьте: (1) вы включили enterprise=1, (2) ключ сайта правильный, (3) data-s включен, если он присутствует, (4) токен был использован в течение 2 минут.


Начните решать reCAPTCHA v2 Enterprise

Получите ключ API по адресуcaptchaai.com/api.php. Добавьте enterprise=1 к существующему коду решения reCAPTCHA v2, и все готово.


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

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