Comparisons

Почему разработчики переходят с Anti-Captcha на CaptchaAI

Команды уходят с Anti-Captcha по двум причинам: в нём нет метода для BLS CAPTCHA и полных страниц Cloudflare Challenge, а собственный JSON-формат задач требует отдельной обёртки. CaptchaAI закрывает оба пункта, а его API повторяет 2Captcha-формат (in.php / res.php), под который код у большинства команд уже написан.


Совместимость API: главный аргумент за переход

Anti-Captcha принимает задачу JSON-объектом с полем task и опрашивает результат отдельным POST-эндпоинтом. CaptchaAI использует схему сотен готовых библиотек: POST в in.php, затем GET в res.php.

# Anti-Captcha — custom JSON format
import requests

resp = requests.post("https://api.anti-captcha.com/createTask", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "task": {
        "type": "RecaptchaV2TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "SITE_KEY",
    }
})
task_id = resp.json()["taskId"]

# Poll with different endpoint and format
result = requests.post("https://api.anti-captcha.com/getTaskResult", json={
    "clientKey": "ANTICAPTCHA_KEY",
    "taskId": task_id,
})
# CaptchaAI — standard 2Captcha-compatible format
import requests

resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "json": 1,
})
task_id = resp.json()["request"]

# Standard polling
result = requests.get("https://ocr.captchaai.com/res.php", params={
    "key": "YOUR_API_KEY",
    "action": "get",
    "id": task_id,
    "json": 1,
})

Если в проекте уже есть 2Captcha-совместимая обёртка, смена провайдера — это подмена базового URL и ключа. При ручной интеграции меняется только транспортный слой: логика «отправить → опрашивать → забрать токен» остаётся прежней.


Где Anti-Captcha упирается в потолок

Cloudflare Challenge, а не только Turnstile

Anti-Captcha отдаёт токен Turnstile, но не проходит полные страницы Cloudflare Challenge и JS-проверки. Для парсинга это критично: всё больше целей ставит полностраничную проверку вместо виджета.

Тип проверки Cloudflare Anti-Captcha CaptchaAI
Cloudflare Turnstile (managed)
Cloudflare Turnstile (invisible) частично
Cloudflare Challenge
JS-проверка

BLS CAPTCHA

Метода bls у Anti-Captcha нет. Для команд, автоматизирующих визовые и государственные порталы, это блокер: в русскоязычном сегменте заявители из Казахстана и Беларуси проходят именно через BLS-порталы.

# CaptchaAI — BLS with a high success rate
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "bls",
    "pageurl": "https://bls-portal.example.com",
    "sitekey": "BLS_SITE_KEY",
    "json": 1,
})

Правовая сторона на вас: обрабатывайте только те данные, которые вправе обрабатывать (для РФ — 152-ФЗ, для трансграничных проектов — GDPR).


Сравнение покрытия типов

Без приписывания лишнего:

Тип CAPTCHA Anti-Captcha CaptchaAI
reCAPTCHA v2
reCAPTCHA v2 Invisible / Enterprise
reCAPTCHA v3
Cloudflare Turnstile
Cloudflare Challenge
GeeTest v3
GeeTest v4 — нет ❌ (в разработке)
BLS
Изображение / OCR, Grid Image ✅ (27 500+ вариантов)
hCaptcha, FunCaptcha — нет
CaptchaFox / Friendly Captcha / Lemin ✅ (beta)
Формат API собственный JSON 2Captcha-совместимый
Прокси, обратный вызов (callback)

Если пайплайн завязан на hCaptcha, FunCaptcha или GeeTest v4 — CaptchaAI их пока не решает, и переход тут выигрыша не даст.


Скорость решения

Для CaptchaAI — потолки SLA, для Anti-Captcha — публичные диапазоны сервиса.

Тип CAPTCHA Anti-Captcha CaptchaAI
reCAPTCHA v2 15–45 с <60 с
reCAPTCHA v3 10–30 с <4 с
Капча-изображение 5–15 с <0,5 с
Cloudflare Turnstile 10–30 с <10 с
Cloudflare Challenge <15 с
GeeTest v3 15–40 с <12 с

Разница заметнее на массовых типах: время решения конвертируется в пропускную способность потока.


Модель оплаты: потоки вместо оплаты за решение

CaptchaAI тарифицируется по числу одновременных потоков, а не по решениям: поток занят, пока задача в работе, и освобождается после ответа.

BASIC — $15/мес, 5 потоков; STANDARD — $30/мес, 15; ADVANCE — $90/мес, 50; PREMIUM — $170/мес, 100; CORPORATE — $240/мес, 150; ENTERPRISE — $300/мес, 200; VIP-1 — $1,500/мес, 1 000; VIP-2 — $4,500/мес, 3 000; VIP-3 — $7,500/мес, 5 000.

Для студии или фрилансера, который выставляет счета в локальной валюте, а за инфраструктуру платит в долларах, фиксированный платёж в USD считается заранее — в отличие от модели «за решение», где счёт зависит от числа проверок на цели.


Как переехать без простоя

На время перехода удобно держать обёртку с обоими провайдерами и переключателем в конструкторе.

import requests
import time

class CaptchaSolver:
    """Unified solver — supports Anti-Captcha and CaptchaAI."""

    def __init__(self, provider="captchaai", api_key="YOUR_API_KEY"):
        self.provider = provider
        self.api_key = api_key

    def solve_recaptcha_v2(self, sitekey, pageurl):
        if self.provider == "captchaai":
            return self._solve_captchaai("userrecaptcha", sitekey, pageurl)
        else:
            return self._solve_anticaptcha(sitekey, pageurl)

    def _solve_captchaai(self, method, sitekey, pageurl):
        resp = requests.post("https://ocr.captchaai.com/in.php", data={
            "key": self.api_key,
            "method": method,
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        })
        task_id = resp.json()["request"]

        for _ in range(60):
            time.sleep(5)
            result = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": self.api_key, "action": "get",
                "id": task_id, "json": 1,
            })
            data = result.json()
            if data["request"] != "CAPCHA_NOT_READY":
                return data["request"]

        raise TimeoutError("Solve timeout")

    def _solve_anticaptcha(self, sitekey, pageurl):
        resp = requests.post("https://api.anti-captcha.com/createTask", json={
            "clientKey": self.api_key,
            "task": {
                "type": "RecaptchaV2TaskProxyless",
                "websiteURL": pageurl,
                "websiteKey": sitekey,
            },
        })
        task_id = resp.json()["taskId"]

        for _ in range(60):
            time.sleep(5)
            result = requests.post(
                "https://api.anti-captcha.com/getTaskResult",
                json={"clientKey": self.api_key, "taskId": task_id},
            )
            data = result.json()
            if data["status"] == "ready":
                return data["solution"]["gRecaptchaResponse"]

        raise TimeoutError("Solve timeout")

Порядок: переключите один некритичный воркер, сутки последите за метриками, затем переводите остальные.


Что чаще всего ломается при переходе

Симптом Причина Что делать
Ошибка при отправке задачи тело запроса в JSON Anti-Captcha форма в in.php: key, method, pageurl
Тип задачи не найден в CaptchaAI нет поля type method: userrecaptcha, turnstile, bls
Опрос всегда «не готово» POST на старый эндпоинт GET в res.php, action=get + id
Токен есть, форма не принимает не то поле ответа g-recaptcha-response / cf-turnstile-response

Частые вопросы

Сколько времени займёт переход на CaptchaAI?

С 2Captcha-совместимой обёрткой — минуты: базовый URL и ключ. При ручной интеграции закладывайте 15–30 минут на транспортный слой плюс сутки наблюдения.

Можно ли какое-то время держать оба сервиса одновременно?

Да, это рекомендуемый путь. Обёртка выше переключается параметром provider: Anti-Captcha остаётся запасным, пока CaptchaAI не наберёт статистику.

Что с hCaptcha и FunCaptcha?

Эти типы CaptchaAI не решает, GeeTest v4 — в разработке. Если они у вас в работе, миграция будет частичной.

Сколько потоков брать на старте?

Считайте от пиковой параллельности, а не от числа решений в месяц. Парсеру с 5–10 одновременными запросами хватает BASIC ($15/мес, 5 потоков) или STANDARD ($30/мес, 15 потоков).

Переносятся ли настройки прокси из Anti-Captcha?

Да, CaptchaAI принимает proxy и proxytype в стандартном формате запроса.


Связанные материалы


Заведите API-ключ CaptchaAI и прогоните текущий пайплайн на 2Captcha-совместимом формате — начать бесплатно.

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