Это руководство ставит одну задачу — как можно быстрее довести вас до первого успешного вызова API и получения решённого токена. Без теории и долгих объяснений: только минимальные шаги и работающий код.
Все типы CAPTCHA в CaptchaAI решаются по одной и той же схеме из четырёх шагов:
- Отправить запрос на
in.php - Сохранить ID задачи из ответа
- Опросить
res.phpкаждые 5 секунд, пока результат не будет готов - Использовать токен — внедрить его на страницу или передать в запрос
Шаг 0: получите API-ключ
- Зарегистрируйтесь на captchaai.com
- Откройте панель управления
- Скопируйте 32-символьный API-ключ
Для отправки задач на аккаунте должны быть активные потоки. Если вы только пробуете сервис, напишите в поддержку и попросите бесплатные потоки.
Шаг 1: отправка CAPTCHA
Пример решает Cloudflare Turnstile — один из самых распространённых типов. Со страницы нужны два значения:
- sitekey — публичный ключ виджета Turnstile (в атрибуте
data-sitekeyили параметрах скрипта Turnstile, начинается с0x) - pageurl — полный URL страницы, на которой загружается виджет
cURL
curl -X POST "https://ocr.captchaai.com/in.php" \
-d "key=YOUR_API_KEY" \
-d "method=turnstile" \
-d "sitekey=0x4AAAAAAAC3DHQFLr1GavNl" \
-d "pageurl=https://https://staging.example.com/qa-login" \
-d "json=1"
Python
import requests
response = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQFLr1GavNl",
"pageurl": "https://https://staging.example.com/qa-login",
"json": 1,
})
print(response.json())
Node.js
const response = await fetch("https://ocr.captchaai.com/in.php", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
method: "turnstile",
sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
pageurl: "https://https://staging.example.com/qa-login",
json: "1",
}),
});
console.log(await response.json());
PHP
<?php
$response = file_get_contents("https://ocr.captchaai.com/in.php?" . http_build_query([
"key" => "YOUR_API_KEY",
"method" => "turnstile",
"sitekey" => "0x4AAAAAAAC3DHQFLr1GavNl",
"pageurl" => "https://https://staging.example.com/qa-login",
"json" => 1,
]));
echo $response;
Шаг 2: сохраните ID задачи
Успешный ответ:
{
"status": 1,
"request": "71823469"
}
Поле request — это ID задачи, он понадобится дальше.
Если status = 0, что-то пошло не так. Смотрите код ошибки в request:
| Ошибка | Что значит | Что делать |
|---|---|---|
ERROR_WRONG_USER_KEY |
Неверный формат API-ключа | Проверьте 32-символьный ключ |
ERROR_KEY_DOES_NOT_EXIST |
Ключ не найден | Сверьтесь с панелью |
ERROR_ZERO_BALANCE |
Нет свободных потоков | Пополните баланс или подождите |
ERROR_PAGEURL |
Не передан pageurl |
Добавьте полный URL страницы |
ERROR_WRONG_GOOGLEKEY |
sitekey пуст или неверен | Извлеките sitekey заново (для Turnstile он начинается с 0x) |
Шаг 3: опрос результата
Подождите 15 секунд, затем опрашивайте каждые 5 секунд, пока не получите ответ.
Python
import time
time.sleep(15)
while True:
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY",
"action": "get",
"id": "71823469",
"json": 1,
}).json()
if result.get("request") == "CAPCHA_NOT_READY":
time.sleep(5)
continue
if result.get("status") == 1:
token = result["request"]
print(f"Solved! Token: {token[:60]}...")
break
raise RuntimeError(result)
Node.js
await new Promise((r) => setTimeout(r, 15000));
while (true) {
const r = await fetch(
`https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=71823469&json=1`,
);
const data = await r.json();
if (data.request === "CAPCHA_NOT_READY") {
await new Promise((r) => setTimeout(r, 5000));
continue;
}
if (data.status === 1) {
console.log("Solved:", data.request.slice(0, 60));
break;
}
throw new Error(JSON.stringify(data));
}
Шаг 4: используйте токен
Способ применения токена зависит от типа CAPTCHA:
- Turnstile / reCAPTCHA — записать в
cf-turnstile-responseилиg-recaptcha-response, либо вызвать колбэк страницы. - Image OCR — вставить распознанный текст в поле ответа.
- GeeTest / FunCaptcha — собрать несколько возвращённых полей по требованиям сайта.
Минимальный вариант для браузера:
document.querySelector('[name="cf-turnstile-response"]').value = token;
document.querySelector("form").submit();
Частые ошибки на старте
- Пробел в скопированном API-ключе — обрежьте его.
- Нет протокола в
pageurl— обязательноhttps://.... - Слишком ранний первый опрос — подождите 15 секунд.
- Слишком частый опрос — 5 секунд достаточно, чаще не быстрее.
- Закончились потоки — см. Коды ошибок API и тариф вашего аккаунта.
Дальше
В зависимости от типа CAPTCHA, с которым вы работаете:
- Решение reCAPTCHA v2 через API
- Решение Cloudflare Turnstile через API
- Решение GeeTest v3 через API
- Решение image CAPTCHA через API
Получите API-ключ на captchaai.com/api.php и завершите своё первое решение за 5 минут.