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

Как решить проблему reCAPTCHA Invisible с помощью API

Невидимая reCAPTCHA срабатывает, когда пользователь нажимает кнопку или отправляет форму — флажок отсутствует. Вызов происходит в фоновом режиме, и страница продолжает работать только после проверки токена. Решение через CaptchaAI аналогично стандартной версии v2, с одним ключевым дополнением: вы должны передать invisible=1 в своем API-запросе.

Самая большая разница в интеграции заключается в том, как вы вводите токен. Большинство невидимых реализаций используют функцию обратного вызова вместо скрытого поля g-recaptcha-response. Вам нужно найти и вызвать этот обратный вызов.

Не уверены, невидимая версия или стандартная версия v2? ЧитатьОбъяснение reCAPTCHA v2 против невидимогодля советов по обнаружению.


Что вам нужно

Требование Подробности
CaptchaAI API-ключ captchaai.com/api.php
Ключ сайта От data-sitekey на виджете или кнопке
URL страницы Полный URL-адрес, по которому запускается невидимая CAPTCHA
Инструмент браузера Selenium/Puppeteer для выполнения обратного вызова

Шаг 1. Обнаружение невидимой reCAPTCHA

Найдите эти шаблоны в HTML-странице:

<!-- Option 1: div with data-size="invisible" -->
<div class="g-recaptcha" data-sitekey="6LdKlZEU..." data-size="invisible" data-callback="onSubmit"></div>

<!-- Option 2: button with data-sitekey (invisible by default) -->
<button data-sitekey="6LdKlZEU..." data-callback="onSubmit">Submit</button>

<!-- Option 3: programmatic execution -->
<script>
  grecaptcha.execute('6LdKlZEU...', {action: 'submit'});
</script>

Если вы видите data-size="invisible", кнопку с data-sitekey или grecaptcha.execute() без контейнера, это невидимая reCAPTCHA.

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

import requests

response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "6LdKlZEUAAAAAPoxm...",
    "pageurl": "https://example.com/signup",
    "invisible": 1,
    "json": 1
})

task_id = response.json()["request"]
const params = new URLSearchParams({
  key: "YOUR_API_KEY", method: "userrecaptcha",
  googlekey: "6LdKlZEUAAAAAPoxm...",
  pageurl: "https://example.com/signup",
  invisible: 1, json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const { request: taskId } = await res.json();

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

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"]
        break
    if result.get("request") != "CAPCHA_NOT_READY":
        raise RuntimeError(f"Error: {result['request']}")

Шаг 4. Внедрите токен через обратный вызов.

Это решающий шаг. Невидимая reCAPTCHA ожидает функцию обратного вызова, а не просто значение скрытого поля:

# Selenium example
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://example.com/signup")

# Find the callback name
callback = driver.execute_script("""
    var el = document.querySelector('[data-callback]');
    if (el) return el.getAttribute('data-callback');
    var btn = document.querySelector('[data-sitekey]');
    if (btn) return btn.getAttribute('data-callback');
    return null;
""")

# Execute the callback with the token
if callback:
    driver.execute_script(f"window['{callback}']('{token}');")
else:
    # Fallback: fill hidden field and submit
    driver.execute_script(f"""
        document.getElementById('g-recaptcha-response').innerHTML = '{token}';
        document.querySelector('form').submit();
    """)
// Puppeteer example
await page.evaluate((token) => {
  const el = document.querySelector('[data-callback]') || document.querySelector('[data-sitekey]');
  const callbackName = el?.getAttribute('data-callback');

  if (callbackName && window[callbackName]) {
    window[callbackName](token);
  } else {
    document.getElementById('g-recaptcha-response').innerHTML = token;
    document.querySelector('form').submit();
  }
}, token);

Полная рабочая функция

import requests
import time

def solve_invisible_recaptcha(api_key, sitekey, page_url):
    submit = requests.get("https://ocr.captchaai.com/in.php", params={
        "key": api_key, "method": "userrecaptcha", "googlekey": sitekey,
        "pageurl": page_url, "invisible": 1, "json": 1
    }).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("Timed out")

token = solve_invisible_recaptcha("YOUR_API_KEY", "6LdKlZEU...", "https://example.com/signup")

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

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

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


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

Как узнать, невидима ли reCAPTCHA?

Найдите data-size="invisible" в блоке виджета или кнопку с data-sitekey. Если видимого флажка нет, скорее всего, он невидим.

Нужен ли мне invisible=1 для невидимой reCAPTCHA?

Да. Без него CaptchaAI рассматривает задачу как стандарт v2, и токен может быть отклонен.

Что делать, если я не могу найти функцию обратного вызова?

Попробуйте заполнить скрытое поле g-recaptcha-response и отправить форму. Некоторые невидимые реализации возвращаются к этому методу. Если это не помогло, найдите в JavaScript страницы функции, обрабатывающие ответы reCAPTCHA.

Может ли невидимая reCAPTCHA быть корпоративной?

Да. Добавьте в свой запрос invisible=1 и enterprise=1.

Почему страница не отвечает после выполнения обратного вызова?

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


Начните решать невидимую reCAPTCHA

Получите ключ API по адресуcaptchaai.com/api.php. Добавьте invisible=1 в свой код решения версии 2 и используйте приведенный выше шаблон внедрения обратного вызова.


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

  • Как работает reCAPTCHA Invisible
  • Распространенные ошибки reCAPTCHA Invisible
  • Объяснение reCAPTCHA v2 против невидимого
  • Как решить обратный вызов reCAPTCHA v2 с помощью API
Комментарии для этой статьи отключены.