BAS: как проверить капчу через RuCaptcha - получаем ID и ответ

    При автоматизации действий в браузере (BAS) часто возникает задача распознавания капчи. Сервис RuCaptcha - популярное решение. Однако новички сталкиваются с трудностями: как получить ID капчи, как дождаться ответа и как обработать возможные ошибки. В этой статье мы пошагово разберём весь процесс.

    Что такое ID и ответ RuCaptcha?

    Когда вы отправляете изображение капчи в RuCaptcha, сервис возвращает уникальный ID (идентификатор задания). Затем, через некоторое время, вы запрашиваете результат по этому ID. Ответ может быть:

    • текст капчи - если распознавание прошло успешно;
    • CAPCHA_NOT_READY - если капча ещё обрабатывается;
    • ERROR_... - если произошла ошибка (например, неверный ключ, баланс, изображение).

    Как получить ID капчи в BAS

    Для отправки капчи используйте HTTP-запрос (POST) на эндпоинт RuCaptcha. В BAS это реализуется действием HTTP-запрос. Параметры:

    • URL: http://rucaptcha.com/in.php
    • Метод: POST
    • Тело запроса: key=ВАШ_КЛЮЧ&method=base64&body=ЗАКОДИРОВАННОЕ_ИЗОБРАЖЕНИЕ

    В ответ сервер пришлёт строку вида OK|123456789. Используйте регулярное выражение или разделение строки, чтобы извлечь ID (часть после |). Сохраните ID в переменную, например [[captchaID]].

    Как получить ответ от RuCaptcha

    Теперь нужно периодически запрашивать результат по ID. Используйте второй HTTP-запрос (GET) на эндпоинт: http://rucaptcha.com/res.php?key=ВАШ_КЛЮЧ&action=get&id=[[captchaID]]. Ответ может быть:

    • OK|текст_капчи - успех;
    • CAPCHA_NOT_READY - ждите и повторите запрос через 2-3 секунды;
    • ERROR_WRONG_USER_KEY - неверный ключ;
    • ERROR_ZERO_BALANCE - нулевой баланс.

    Обработка ошибок и повтор запроса

    Чтобы логика была надёжной, реализуйте цикл с проверкой ответа. Пример алгоритма в BAS:

    1. Отправить капчу, получить ID.
    2. Запустить цикл (например, до 30 итераций).
    3. Внутри цикла: подождать 3 секунды, сделать запрос результата.
    4. Если ответ содержит OK| - извлечь текст капчи, выйти из цикла.
    5. Если ответ CAPCHA_NOT_READY - продолжить цикл.
    6. Если ответ содержит ERROR - выйти с ошибкой, возможно, отправить капчу заново.

    Не забудьте добавить таймаут между запросами, чтобы не превысить лимиты RuCaptcha.

    Практический пример в BAS

    Допустим, у вас есть изображение капчи в переменной [[imageBase64]]. Последовательность действий:

    • Действие HTTP-запрос (POST): URL http://rucaptcha.com/in.php, тело key=123456&method=base64&body=[[imageBase64]]. Результат сохранить в [[response]].
    • Действие JavaScript: var parts = [[response]].split('|'); [[captchaID]] = parts[1];
    • Цикл (например, метка LOOP): пауза 3 сек, затем HTTP-запрос GET на http://rucaptcha.com/res.php?key=123456&action=get&id=[[captchaID]].
    • Проверка: если ответ содержит OK| - извлечь текст, если CAPCHA_NOT_READY - перейти на метку LOOP, иначе - ошибка.

    Заключение

    Теперь вы знаете, как получить ID и ответ от RuCaptcha в BAS. Главное - правильно обрабатывать статусы и не забывать про паузы. Это позволит вашим скриптам уверенно проходить проверку капчи.

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