Распознавание капч с помощью сервиса ruCaptcha.com в Human Emulator.

Распознавание капч с помощью сервиса ruCaptcha.com в Human Emulator.

ruCaptcha — это сервис для автоматического распознавания изображений. Сервис позволяет решать капчу, а также конвертировать в текст любые изображения, которые может распознать человек. API сервиса позволяет быстро и легко автоматизировать выполнение этих задач.

Процесс распознавания капчи.

  • Отправляем изображение на сервер сервиса.
  • Сервер возвращает уникальный идентификатор задачи (Captcha ID).
  • Запускаем цикл, который проверяет, решена ли капча.
  • В итоге мы получаем или текст капчи или данные для подстановки в исходники страницы, или ошибку от сервиса.

Работа с API ruCaptcha в программе максимально упрощена. Для этого в Human Emulator были добавлены объект rucaptcha — для работы с https://rucaptcha.com и объект twocaptcha для работы с английской версией сервиса https://2captcha.com/. Оба объекта имеют одинаковый функционал и примеры с использованием rucaptcha будут актуальны и для twocaptcha и наоборот.

Пройдёмся по основным функциям для работы с сервисом.

Распознавание обычных капч.

Для распознавания простых капч с искажённым текстом используется функция recognize.

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

с помощью параметров функции можно выставить любой тип подобной капчи, текст или цифры, язык, количество символов в капче и т.д.

Параметры:

filename – путь к файлу с капчей
apikey – ключ для идентификации на сервисе
path – путь к сервису
is_verbose — включить/выключить verbose mode (комментирование происходящего): false(выключить), true(включить)
rtimeout — задержка между опросами статуса капчи
mtimeout — время ожидания ввода капчи
is_phrase — 0 либо 1 — флаг «в капче 2 и более слов»
is_regsense — 0 либо 1 — флаг «регистр букв в капче имеет значение»
is_numeric — 0 либо 1 — флаг «капча состоит только из цифр»
min_len — 0 (без ограничений), любая другая цифра указывает минимальную длину текста капчи
max_len — 0 (без ограничений), любая другая цифра указывает максимальную длину текста капчи
is_russian — 0 либо 1 — флаг «капча должна демонстрироваться только русскоязычным работникам»

Пример использования на php:

В результате работы примера в панели отладки Human Emulator появится текст распознанной капчи.

Распознавание текстовых капч.

Текстовая капча это когда надо ответить на какой то вопрос. Например: круглый ли шар (да/нет)?

Для распознавания таких капч используем функцию recognize_text

В качестве параметра передаём текст на который надо ответить.

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

Пример использования функции на php:

В результате работы примера в панели отладки Human Emulator появится текст с правильным ответом.

Распознавание ReCaptcha V2 и Invisible ReCaptcha V2.

Очень популярная капча от Google. Отличие Invisible ReCaptcha V2 от обычной ReCaptcha V2, в том что невидимая капча появляется только после какого то действия, скажем нажатия на кнопку или поле, а ReCaptcha V2 видна на странице сразу и выглядит вот так:

Есть два вариант решения этих капч. Первый получение токена и подстановка этого токена в поле на сайте, и кликанье по заданным картинкам. Рассмотрим оба варианта.

1.Распознавание через получение токена.

Для этого используется функция recognize_recaptcha_v2. В качестве параметров эта функция принимает:
pageurl — полный URL страницы, на которой вы хотите решить ReCaptcha
googlekey — так называем ключ сайта sitekey. Для каждого сайта он свой, и его можно найти в исходном тексте капчи:
invisible — тип капчи. По умолчанию: 0 . 1 — говорит нам, что на сайте невидимая ReCaptcha.
proxy — прокси. При аутенификации по IP: IP_адрес:ПОРТ. Пример: proxy=123.123.123.123:3128. При аутенификации по логину и паролю: логин:пароль@IP_адрес:ПОРТ. Пример: proxy=proxyuser:strongPassword@123.123.123.123:3128
proxytype — тип вашего прокси: HTTP, HTTPS, SOCKS4, SOCKS5. Пример: proxytype=SOCKS4
Для работы без прокси параметры proxy и proxytype не задаются.

После отправки этих параметров на сервер rucaptcha, в ответ приходит токен это текст вот такого вида:

Как правило токен мы подставляем в поле с id «g-recaptcha-response«, но это зависит от сайта, могут быть варианты с другими полями или вызовом так называемых Callback функций.

Смотрите подробное описание нюансов распознавания ReCaptcha V2 на rucaptcha.com

Пример использования функции для обоих вариантов ReCaptcha V2 на php:

В результате правильного распознавания капч в программе будет открываться страница с текстом «Verification Success… Hooray!«.

2. Кликанье по картинкам для распознавания ReCaptcha V2.

Для решения ReCaptcha V2 этим методом используется функция recognize_click_captcha

Функция принимает следующие параметры:

filename – путь к картинке капчи
textinstructions – Текст того, что нужно выбрать на картинке в кодировке UTF-8. Данный параметр не обязателен, если по картинке понятно куда нужно кликнуть — можно не присылать.

Пример работы распознавания ReCaptcha V2 с помощью кликов по картинкам на php:

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

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

Распознавание GeeTest капчи.

В GeeTest капчах, требуется выбрать несколько объектов или передвинуть кусок пазла в нужном порядке.

Для распознвания это типа капч в Human Emulator используется функция recognize_geetest.

Для корректного распознавания требуется передать следующие параметры:

pageurl — полный URL страницы, на которой вы хотите решить ReCaptcha
gt — публичный ключ сайта (статический)
challenge — динамический ключ задания
api_server — домен API (обязателен для некоторых сайтов)
proxy — прокси. При аутенификации по IP: IP_адрес:ПОРТ. Пример: proxy=123.123.123.123:3128. При аутенификации по логину и паролю: логин:пароль@IP_адрес:ПОРТ. Пример: proxy=proxyuser:strongPassword@123.123.123.123:3128
proxytype — тип вашего прокси: HTTP, HTTPS, SOCKS4, SOCKS5. Пример: proxytype=SOCKS4
Для работы без прокси параметры proxy и proxytype не задаются.

Параметры gt, challenge, api_server определяются различными способами на странице, где используется GeeTest капча. При этом параметр challenge меняется каждый раз при переходе на эту страницу.

В результате работы функции приходит ответ с тремя параметрами в виде JSON строки:

Для решения капчи необходимо подставить значения в соответствующие поля geetest_challenge, geetest_validate, geetest_seccode и кликнуть на кнопку с текстом «Click to verify».

Пример распознавания GeeTest капчи в программе Human Emulator на php:

В результате работы примера появится зелёная галочка на кнопке «Click to verify«.

Мы рассмотрели наиболее часто используемые типы капч. Все типы капч, которые можно распознавать с помощью сервиса https://rucaptcha.com, а также тарифы можно узнать на сайте сервиса.

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

Обсудить статью, а также посмотреть примеры на других языках можно там же на форуме.


Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.