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:
- Отправить капчу, получить ID.
- Запустить цикл (например, до 30 итераций).
- Внутри цикла: подождать 3 секунды, сделать запрос результата.
- Если ответ содержит
OK|- извлечь текст капчи, выйти из цикла. - Если ответ
CAPCHA_NOT_READY- продолжить цикл. - Если ответ содержит
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. Главное - правильно обрабатывать статусы и не забывать про паузы. Это позволит вашим скриптам уверенно проходить проверку капчи.