Troubleshooting

Снижение успешности решения CAPTCHA: блок-схема диагностики

Когда ваш уровень решаемости падает, не думайте — следуйте этой систематической диагностике, чтобы найти и устранить основную причину.


Блок-схема диагностики

Success rate dropped
│
├── Are tokens being generated?
│   ├── NO → Check API errors
│   │   ├── ERROR_WRONG_GOOGLEKEY → Sitekey changed. Re-extract.
│   │   ├── ERROR_BAD_PARAMETERS → Check required params
│   │   ├── ERROR_NO_SLOT → Retry with backoff
│   │   └── Other errors → See error decision tree
│   │
│   └── YES → Tokens generated but rejected by target site
│       │
│       ├── Token expired before use?
│       │   └── YES → Submit token faster (< 60-120s)
│       │
│       ├── Token used for wrong domain?
│       │   └── YES → Check pageurl matches submission domain
│       │
│       ├── reCAPTCHA v3 score too low?
│       │   └── YES → Check action parameter, try min_score
│       │
│       ├── Site changed CAPTCHA type?
│       │   └── YES → Re-detect CAPTCHA type
│       │
│       └── Site added additional checks?
│           └── YES → Check for сигналы браузераing, cookies, headers

Шаг 1. Измерьте свой текущий курс

import requests
import time
from collections import defaultdict


class SuccessTracker:
    """Track solve success rates over time."""

    def __init__(self):
        self.stats = defaultdict(lambda: {"attempts": 0, "success": 0, "errors": defaultdict(int)})

    def record(self, method, success, error_code=None):
        self.stats[method]["attempts"] += 1
        if success:
            self.stats[method]["success"] += 1
        elif error_code:
            self.stats[method]["errors"][error_code] += 1

    def report(self):
        for method, data in self.stats.items():
            rate = data["success"] / data["attempts"] * 100 if data["attempts"] > 0 else 0
            print(f"\n{method}:")
            print(f"  Attempts: {data['attempts']}")
            print(f"  Success: {data['success']} ({rate:.1f}%)")
            if data["errors"]:
                print("  Errors:")
                for err, count in sorted(data["errors"].items(), key=lambda x: -x[1]):
                    print(f"    {err}: {count}")


tracker = SuccessTracker()

Шаг 2. Определите категорию проблемы

Категория A: Сбои на уровне API

API CaptchaAI возвращает ошибку вместо токена.

def diagnose_api_failures(api_key, method, params, attempts=10):
    """Run test solves and collect error patterns."""
    errors = defaultdict(int)
    successes = 0

    for i in range(attempts):
        try:
            resp = requests.post("https://ocr.captchaai.com/in.php", data={
                "key": api_key, "method": method, "json": 1, **params,
            }, timeout=30)
            result = resp.json()

            if result.get("status") != 1:
                errors[result.get("request", "UNKNOWN")] += 1
                continue

            task_id = result["request"]
            # Quick poll
            time.sleep(15)
            resp = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": api_key, "action": "get",
                "id": task_id, "json": 1,
            }, timeout=15)
            data = resp.json()

            if data.get("status") == 1:
                successes += 1
            else:
                errors[data.get("request", "POLL_ERROR")] += 1

        except Exception as e:
            errors[f"EXCEPTION:{type(e).__name__}"] += 1

        time.sleep(2)

    print(f"\nResults: {successes}/{attempts} success")
    for err, count in sorted(errors.items(), key=lambda x: -x[1]):
        print(f"  {err}: {count}")

Категория B: Отклонение токена

CaptchaAI возвращает действительный токен, но целевой сайт его отклоняет.

Распространенные причины:

Причина Проверять
Срок действия токена истек Использование токена > 120 секунд после генерации
Несоответствие домена pageurl не соответствует домену отправки
оценка v3 слишком низкая Сайт требует 0,7+, но решатель получает 0,3
Отсутствует действие v3 требует соответствующего параметра действия
Параметры сайта изменены Ключ сайта или структура страницы изменены.

Шаг 3. Устраните распространенные проблемы

Исправлено: срок действия токена.

def solve_and_use_immediately(api_key, sitekey, pageurl):
    """Solve and use token as fast as possible."""
    # Submit
    resp = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": api_key,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": pageurl,
        "json": 1,
    }, timeout=30)
    task_id = resp.json()["request"]

    # Poll aggressively
    for _ in range(24):
        time.sleep(5)
        resp = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": api_key, "action": "get",
            "id": task_id, "json": 1,
        }, timeout=15)
        data = resp.json()
        if data.get("status") == 1:
            token = data["request"]
            # USE IMMEDIATELY — don't store for later
            submit_form(token)
            return True

    return False

Исправлено: устаревший ключ сайта.

def solve_with_fresh_params(api_key, pageurl):
    """Re-extract sitekey before each solve."""
    import re

    resp = requests.get(pageurl, timeout=15)
    match = re.search(r'data-sitekey="([^"]+)"', resp.text)
    if not match:
        raise RuntimeError("Could not find sitekey")

    sitekey = match.group(1)
    # Now solve with fresh sitekey
    # ...

Исправлено: параметр действия v3.

# Check what action the site uses
# Look for: grecaptcha.execute('sitekey', {action: 'submit'})

data = {
    "key": api_key,
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": pageurl,
    "version": "v3",
    "action": "submit",  # Must match site's action
    "min_score": "0.7",
    "json": 1,
}

Ожидаемые показатели успеха

Тип капчи Нормальная ставка Порог оповещения
reCAPTCHA v2 95-99% Ниже 90%
reCAPTCHA v3 90-98% Ниже 85%
Cloudflare Turnstile 99-100% Ниже 95%
GeeTest v3 99-100% Ниже 95%
БЛС 99-100% Ниже 95%
Изображение/OCR 90-98% Ниже 85%

Поиск неисправностей

Проблема Причина Исправить
Ставка снизилась с 98% до 70% Sitekey или страница изменены Повторно извлечь все параметры
все токены v3 отклонены Неправильный параметр действия Сопоставить действие из источника страницы
Токены работают, но срок их действия истекает Слишком медленно для использования Отправьте токен в течение 60 секунд
Стоимость варьируется в зависимости от времени суток Ограничение скорости на стороне сервера Добавьте задержки между подачами

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

Каков нормальный показатель успеха?

ориентировочное значение для большинства типов CAPTCHA. Если ваш показатель постоянно ниже 90 %, скорее всего, возникла проблема с параметром или временем.

Как быстро мне нужно использовать токены?

Срок действия токенов reCAPTCHA истекает через 120 секунд. токены Cloudflare Turnstile за 300 секунд. Используйте токены в течение 60 секунд для достижения наилучших результатов.

Должен ли я сообщать о неправильных решениях?

Да. Используйте конечную точку reportbad, чтобы сообщать о неверных решениях. CaptchaAI использует эту обратную связь для повышения точности.


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


Диагностируйте быстрее, решайте подходящий —используйте CaptchaAI.

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

Похожие сообщения

DevOps & Scaling Создание решения CAPTCHA на основе событий с помощью AWS SNS и CaptchaAI
Руководство Dev Ops по созданию решений CAPTCHA на основе событий с помощью AWS SNS и Captcha AI, с архитектурными решениями, эксплуатационными соображениями и...

Руководство Dev Ops по созданию решений CAPTCHA на основе событий с помощью AWS SNS и Captcha AI, с архитектур...

Apr 24, 2026
DevOps & Scaling Учебники Ansible для развертывания рабочих кадров CaptchaAI
Руководство по Dev Ops для Учебники Ansible для развертывания рабочих кадров Captcha AI, с архитектурными решениями, соображениями по эксплуатации и шаблонами а...

Руководство по Dev Ops для Учебники Ansible для развертывания рабочих кадров Captcha AI, с архитектурными реше...

Apr 22, 2026
DevOps & Scaling AWS Lambda + CaptchaAI: бессерверное решение CAPTCHA
Руководство Dev Ops по AWS Lambda + Captcha AI: бессерверное решение CAPTCHA с архитектурными решениями, соображениями по эксплуатации и шаблонами автоматизации...

Руководство Dev Ops по AWS Lambda + Captcha AI: бессерверное решение CAPTCHA с архитектурными решениями, сообр...

Apr 24, 2026