Распознавание капчи
Виды заданий, обязательные поля, прокси, результат распознавания и обработка ошибок.
Модуль распознавания получает изображение или параметры браузерного задания, отправляет их выбранной службе и помещает готовый ответ в |AGRESULT|. Для устойчивого проекта нужно заранее определить вид задания, источник адреса страницы и ветку ошибки.
Порядок работы
1. Обнаружьте капчу
В определении ответа добавьте |USEAG| к признаку капчи. При совпадении Private Keeper создаёт повтор для распознавания, а не продолжает обычную ветку запроса.
2. Передайте задание
В поле «Ссылка на изображение капчи | Ключ сайта» укажите ссылку на изображение, строку Base64, SVG или точную форму ключа браузерной капчи.
3. Подставьте ответ
В дополнительной ссылке или данных следующего запроса используйте |AGRESULT|, например g-recaptcha-response=|AGRESULT|.
4. Проверьте ответ сайта
Если сайт отверг решение, отдельное определение с |AGREPORT| сообщает выбранной службе о неверном ответе.
Команды модуля
|USEAG|
Размещается в определении. При совпадении проверяемого значения включает ветку распознавания капчи.
|AGREPORT|
Размещается в определении ответа сайта, который означает неверно решённую капчу. Отправляет жалобу по текущему заданию службы.
|AGFIELD|
Возвращает идентификатор поля старого потока reCAPTCHA, если этот вид задания его предоставляет.
|AGRESULT|
Возвращает распознанный ответ текущего задания в форме, готовой для подстановки в запрос.
|AGHEADERS|
Выделяет дополнительные заголовки, которые нужны именно при загрузке изображения капчи по ссылке.
|AGRESULT| принадлежит текущему запросу. Следующий запрос или завершение текущего очищает связь с ответом и идентификатором задания, поэтому не используйте старое решение как постоянную динамическую переменную.
Прокси при распознавании
Обычное изображение сначала загружается через текущий прокси проекта, затем его байты передаются службе. Для браузерных заданий прокси передаётся только тогда, когда выбранный протокол службы поддерживает такой вид задания и соединения.
- 2Captcha и RuCaptcha принимают HTTP, SOCKS4 и SOCKS5 в поддерживаемых заданиях;
- Anti-Captcha получает поддерживаемый прокси в полях задания;
- DeathByCaptcha принимает HTTP для своего потока заданий;
- reCAPTCHA 3 в поддерживаемых ветках отправляется без прокси задания;
- XEvil использует форму той службы, которую он имитирует;
- учётные данные прокси не записываются в диагностический журнал.
Загрузка изображения через прокси проекта и передача прокси службе — разные действия. Для обычной картинки Private Keeper может скачать изображение через прокси, а затем отправить уже полученные байты без передачи службе логина и пароля этого прокси.
Виды заданий
Ссылка на изображение
Укажите полный адрес картинки:
Обязательное поле — адрес, который возвращает изображение. Если для загрузки нужны особые заголовки, передайте их через |AGHEADERS|.
Изображение Base64
Используйте полную строку данных с видом изображения, признаком base64, запятой и содержимым:
Строка без вида изображения, запятой или самих данных неполна и не будет распознана как изображение.
Встроенный SVG
Передайте полный элемент SVG, начинающийся с <svg:
Private Keeper преобразует SVG в растровое изображение перед отправкой службе.
sitekey:КЛЮЧ;pageaction:login;enterprise содержит поля в ожидаемом порядке и непустые значения.
pageaction:login без sitekey: не задаёт ключ сайта; пустая строка ссылки завершается ERROR_INCORRECT_LINK.
Заголовки изображения
|AGHEADERS|...|AGHEADERS| записывается в поле дополнительных заголовков и передаёт выделенные строки при загрузке картинки по ссылке.
Обычные заголовки относятся к запросу проекта. Заголовки внутри |AGHEADERS| дополнительно применяются к получению изображения капчи.
Обе метки |AGHEADERS| присутствуют, а внутри находится полная строка Имя:значение.
Одна открывающая метка без второй не задаёт границу специальных заголовков.
Дополнительная ссылка запроса
Дополнительная ссылка нужна, если первый запрос обнаруживает капчу, а ответ распознавания должен отправляться на другой адрес.
1. Основной адрес
https://example.test/login выполняет обычную авторизацию и проверку определений.
2. Обнаружение капчи
Определение с |USEAG| запускает распознавание.
3. Дополнительный адрес
https://example.test/auth получает данные авторизации и |AGRESULT| после готового ответа службы.
Если оба действия выполняются одним и тем же адресом, дополнительную ссылку не заполняйте только ради дублирования.
Параметры службы
Дополнительные параметры передаются строкой, где пары разделяются символом &:
Параметр regsense в in-Line Kit по умолчанию равен 1. Добавляйте только параметры, которые поддерживает выбранная служба; их текущий состав описан в справочнике Anti-Captcha и справочнике RuCaptcha.
Для CapMonster отключите настройку «Получение ответа с задержкой», если задание ещё не готово. Это требование относится к CapMonster, а не ко всем местным заменителям служб.
Результат и ошибки
При успехе ответ преобразуется в UTF-8, кодируется для безопасной подстановки в адрес и становится доступен как |AGRESULT|. Повторное кодирование перед вставкой в данные запроса обычно исказит ответ.
Если результат распознавания содержит префикс ERROR_, Private Keeper:
- записывает технический ответ службы в журнал;
- останавливает дальнейшие запросы текущей ветки;
- устанавливает результат
|CONCLUSION| = 3— капча или блокировка.
То же итоговое состояние используется, когда ключ службы не введён или распознавание отключено. Не пытайтесь разобрать ERROR_ в следующем обычном запросе: этот запрос уже не будет выполнен. Обработайте результат 3 в структуре проекта и сохраните журнал для диагностики.
Проект имеет отдельный путь для результата 3 и не считает отсутствие |AGRESULT| успешной авторизацией.
Продолжение запроса с пустым ответом или проверка успеха только по наличию текста скрывает ошибку службы.
Неверный ответ службы
Если сайт явно сообщил, что распознанное значение неверно, добавьте к соответствующему определению |AGREPORT|. Жалоба относится к текущему активному заданию и отправляется только один раз.
Не используйте |AGREPORT| для сетевой ошибки, неверного пароля или общего отказа авторизации. Команда предназначена только для ответа сайта, который однозначно означает неверно решённую капчу.