Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как отправлять отчёты

Отчеты имеют значение. Речь не о бюрократических сводках, а о легких, программных сигналах — reportCorrect и reportIncorrect — которые возвращают интеллектуальную обратную связь в систему 2Captcha. Опционально? Формально — да. Критически важно? Безусловно. При грамотной реализации этот механизм повышает точность распознавания, сокращает издержки и ускоряет выявление воркеров, чья эффективность падает ниже допустимого уровня.

Методы API v2 для отправки отчетов

reportCorrect — подтверждение правильного ответа

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

Параметры запроса:

Параметр Тип Обязательный Описание
clientKey String Да Ваш API-ключ
taskId Integer Да Идентификатор выполненной задачи

Пример запроса (POST, JSON):

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": 74455221488
}

Пример успешного ответа:

json Copy
{
   "errorId": 0,
   "status": "success"
}

Endpoint: https://api.2captcha.com/reportCorrect

reportIncorrect — сообщение об ошибочном ответе

Используйте этот метод, если решение было отклонено на целевом сайте. Это не кнопка жалобы. Это диагностический инструмент.

Уведомление о политике возвратов:

  • Каждый отчет рассматривается индивидуально
  • Для обычных капч проверяется точность ответа
  • Для токен-капч (reCAPTCHA, FunCaptcha) анализируется статистика воркера
  • Возврат средств не происходит автоматически — он зарабатывается качеством сигнала

Параметры запроса (аналогичны reportCorrect):

json Copy
{
  "clientKey": "YOUR_API_KEY",
  "taskId": 74455221488
}

Endpoint: https://api.2captcha.com/reportIncorrect

Критические ошибки при отправке отчетов

ERROR_REPORT_NOT_RECORDED

Что вызывает эту ошибку:

  1. Доля ваших жалоб превышает 40% на капчах, которые на самом деле были решены верно, ИЛИ
  2. Отчет отправлен позже чем через 15 минут после получения решения

Время — ограничение. Точность — обязательное условие.

Решение:

python Copy
# Пример логики обработки
def send_report(task_id, is_correct, solved_timestamp):
   from datetime import datetime, timedelta
  
   # Проверка временного лимита
   if datetime.now() - solved_timestamp > timedelta(minutes=15):
       logger.warning(f"Report skipped: timeout for task {task_id}")
       return False
  
   # Отправляйте reportIncorrect ТОЛЬКО для реально ошибочных ответов
   endpoint = "reportCorrect" if is_correct else "reportIncorrect"
   # ... отправка запроса

Рекомендации:

  • Используйте reportIncorrect только для подтвержденных ошибок — никогда «на всякий случай»
  • Фиксируйте время решения капчи в логах: это ваш аудиторский след
  • Не используйте отчеты для нагрузочного тестирования или экспериментов

ERROR_DUPLICATE_REPORT

Система запоминает. Повторная отправка того же taskId возвращает эту ошибку — не как наказание, а как защиту от информационного шума.

Решение:

python Copy
# Храните отправленные отчеты в кэше/БД
reported_tasks = set()

def safe_report(task_id, is_correct):
   if task_id in reported_tasks:
       logger.info(f"Duplicate report skipped for task {task_id}")
       return {"errorId": 0, "status": "already_reported"}
  
   # Отправка отчета...
   reported_tasks.add(task_id)
   return response

Рекомендации:

  • Ведите клиентский реестр отправленных taskId
  • Проектируйте идемпотентность: одна задача — один отчет — одна истина
  • Проверяйте статус перед отправкой; избегайте оптимистичных повторных запросов при дубликатах

Как работает система обработки отчетов

Для обычных капч (изображения, текст):

  1. Вы отправляете reportIncorrect
  2. Система назначает перепроверку воркеру с высоким рейтингом
  3. Происходит сравнение ответов:
    • Ответы совпадают → жалоба отклонена, оба воркера получают оплату
    • Ответы различаются → вам возвращается баланс, первый воркер получает штраф

Арбитраж. В автоматическом режиме.

Для токен-капч (reCAPTCHA v2/v3, FunCaptcha, KeyCaptcha):

Автоматическая перепроверка не всегда возможна. Система адаптируется.

  • Статистика накапливается на уровне каждого воркера
  • Высокий процент reportIncorrect постепенно ограничивает доступ воркера к данному типу капч
  • Для reCAPTCHA v3 корректировка репутации применяется в разрезе домена

Ни один отдельный отчет не определяет исход. Решают паттерны.

Почему важно отправлять оба типа отчетов

Выгода reportCorrect reportIncorrect
Для вас Повышает точность будущих решений Дает возможность вернуть средства за ошибки
Для системы Калибрует модели репутации воркеров Быстрее выявляет проблемных исполнителей
Для воркеров Поощряет стабильность бонусами Применяет штрафы справедливо, на основе данных

Важное напоминание: никогда не отправляйте reportIncorrect «на всякий случай». Превысите порог в 40% ложных жалоб — и функция отчетов может быть отключена для вашего аккаунта. Точность строит доверие. Шум — разрушает.

Практические рекомендации по внедрению

1. Таймауты и логика повторных попыток

javascript Copy
// Пример на JavaScript
async function sendReportWithRetry(taskId, isCorrect, maxRetries = 3) {
   for (let attempt = 1; attempt <= maxRetries; attempt++) {
       try {
           const response = await fetch(`https://api.2captcha.com/${isCorrect ? 'reportCorrect' : 'reportIncorrect'}`, {
               method: 'POST',
               headers: {'Content-Type': 'application/json'},
               body: JSON.stringify({
                   clientKey: 'YOUR_API_KEY',
                   taskId: taskId
               })
           });
           const result = await response.json();
          
           if (result.errorId === 0) return true;
          
           // Обработка специфичных ошибок
           if (result.errorCode === 'ERROR_REPORT_NOT_RECORDED') {
               console.warn('Report rejected: check timing or complaint ratio');
               return false;
           }
           if (result.errorCode === 'ERROR_DUPLICATE_REPORT') {
               console.info('Report already submitted');
               return true;
           }
          
           // Повтор при сетевых ошибках
           if (attempt < maxRetries) {
               await new Promise(r => setTimeout(r, 1000 * attempt));
               continue;
           }
       } catch (e) {
           console.error(`Attempt ${attempt} failed:`, e);
       }
   }
   return false;
}

2. Логирование для отладки

python Copy
import logging, json
from datetime import datetime

logger = logging.getLogger('captcha_reports')

def log_report(task_id, action, response, elapsed_ms):
   logger.info(json.dumps({
       'timestamp': datetime.utcnow().isoformat(),
       'task_id': task_id,
       'action': action,  # 'correct' или 'incorrect'
       'error_id': response.get('errorId'),
       'error_code': response.get('errorCode'),
       'response_time_ms': elapsed_ms
   }))

Логи — не только для разбора инцидентов. Это ваш компас в реальном времени.

3. Мониторинг качества

  • Отслеживайте соотношение: reportIncorrect к общему числу решенных капч
  • Нормальный диапазон: 1–15%, в зависимости от типа капчи
  • Резкий рост (>30%) требует расследования:
    • Логика интеграции могла измениться
    • Целевой сайт мог обновить правила валидации
    • Ваша интерпретация «успеха» может требовать уточнения

Полезные ресурсы

Если вы не пишете код — передайте это руководство вашей технической команде. При правильной реализации логика отчетов способна сократить долгосрочные расходы на распознавание капч на 20–30%. Это не оптимизация. Это рычаг.

Материал основан на официальной документации 2Captcha для API v2. Спецификации меняются. Всегда сверяйтесь с первоисточником.

Заключение

reportCorrect и reportIncorrect — не второстепенные функции. Это каналы обратной связи, вплетенные в ядро операционного интеллекта 2Captcha. При грамотном использовании они создают кумулятивный эффект: меньше ошибок, ниже затраты, умнее распределение задач, устойчивее экосистема воркеров.

Но система учится только тому, чему вы ее учите.

Отправляйте reportIncorrect только при уверенности в ошибке. Соблюдайте 15-минутное окно. Фиксируйте свои отправки. Позвольте данным — а не догадкам — направлять ваши сигналы.

Потому что в конечном счете качество вашей интеграции влияет не только на ваши метрики. Оно формирует поведение всей сети.