Это руководство предназначено для текстовых кодов, а не для reCAPTCHA Google (см. конец этого сообщения).

Требования:

  • Антикапча или любой другой сервис по разгадыванию капчи.
  • Модуль NPM async-captcha (я автор 🤞)

Эти услуги платные, и текущие цены составляют около 0,60–0,80 долларов за 1000 капч. Я буду использовать Anti-captcha в этом руководстве.

Модуль asyn-captcha в настоящее время поддерживает только антикапчу

Как работает решение Captcha:

Вам нужно отправить изображения капчи в виде строки base64 в сервисы решения и получить взамен TaskID. С этим идентификатором задачи вы будете проверять значение своей капчи, пока она не будет решена (да, вам нужно отправить запрос вручную, потому что они не сообщают вам, когда ваша капча решена).

На приведенных ниже схемах на самом деле очень четко показаны целые шаги, это только для того, чтобы вы могли понять концепцию за кулисами. Упростим весь процесс с помощью модуля async-captcha.

Кукловод

Преобразование изображений в браузере - довольно утомительная работа, но, к счастью, мы используем Puppeteer!
Существует метод .screenshot, который получает снимок экрана страницы или элемента и возвращает его строку в кодировке base64.

Этот фрагмент кода очень прост. Мы загрузили веб-сайт и сначала получили ссылку на изображение капчи. Затем мы получаем строку base64 этого изображения с помощью метода elementHandle.screenshot. Не забудьте указать кодировку: base64, иначе по умолчанию она будет возвращена в двоичном формате.

Итак, теперь у нас есть строка base64 нашей капчи, все, что нам нужно сделать, это отправить эту строку изображения вместе с нашим ключом API в службу решения капчи с оболочкой async-captcha.

Установите модуль asyn-captcha и включите его в свой код. Затем инициализируйте свой ключ API, как показано ниже.

captchaCode - это текстовое решение для ввода кода. Помните, что если что-то пойдет не так или вы достигнете предела повторных попыток (по умолчанию 10), функция getResult вернет null.

Вот и все 🤞 Удачи!

Следите за моим GitHub
Следуйте за мной на Medium, чтобы получить больше руководств по кукловодам.

reCAPTCHA

Процесс почти такой же, за исключением того, что решение reCAPTCHA требует немного больше работы. Но концепция похожа. Вместо отправки строки изображения base64 вам нужно отправить ключ reCAPTCHA, и после получения результата вы должны прикрепить полезную нагрузку ответа в соответствующий элемент DOM. Позже я сделаю еще одно руководство по reCAPTCHA.