Автоматизация решения капчи Yandex SmartCaptcha в JavaScript

Капча Yandex SmartCaptcha
Капча Yandex SmartCaptcha

Описание как автоматизировать решение капчи Yandex SmartCaptcha от Яндекса с помощью JavaScript. Решение капч будет происходить в сервисе rucaptcha.com, а для взаимодействия с API rucaptcha.com используется npm пакет 2captcha-ts. Готовый пример автоматизации с Node.js библиотекой Puppeteer есть здесь на GitHub.

Что необходимо:

1. Капча Yandex SmartCaptcha которую необходимо решить
2. Аккаунт rucaptcha.com с положительным балансом.

Алгоритм действий:

  1. Поиск параметров капчи
  2. Отправка капчи в сервис для её решения
  3. Получение решения капчи
  4. Использование полученного решения на странице

Шаг 1 - Поиск параметров капчи

Для отправки капчи в сервис rucaptcha.com необходимо получить два параметра pageurl и sitekey.
pageurl - Полный URL-адрес веб-страницы, на которой загружается капча.
sitekey - Значение параметра Yandex SmartCaptcha sitekey. Параметр sitekey можно найти в URL-адресе iframe captcha или в параметрах вызова smartCaptcha.render.

Поиск параметров pageurl и sitekey на странице
Поиск параметров pageurl и sitekey на странице

Шаг 2 - Отправка капчи в сервис для решения

Отправляем параметры капчи в сервис rucaptcha.com c помощью npm пакета 2captcha-ts:

import { Solver } from "2captcha-ts"; const solver = new Solver("<Your 2captcha APIKEY>"); ;(async () => { const res = await solver.yandexSmart({ pageurl: "https://captcha-api.yandex.ru/demo", sitekey: "FEXfAbHQsToo97VidNVk3j4dC74nGW1DgdxjtNB9", });

Значение "<Your 2captcha APIKEY>" необходимо заменить своим apikey, который доступен в личном кабинете на сайте rucaptcha.com.

Шаг 3 - Получение решения капчи

Когда капча будет решена успешно, сервис вернет ответ с решением капчи. В среднем решение занимает 5-20 секунд.

Пример ответа с решением:

{ data: 'dD0xNjk4NTkyNzMyO2k9ODkuMTg3LjIxNy4yNztEPUEwQzVFMTJCMjg1OUI4MzRDOUFENTk3OTcyNzk4NDg3MUYwREQxMDY3NUU1RDY5MkU5QTQyMUQ5OEJBNUVCODJFMEIxQkVBM0QxN0NGNEJCQ0ZDRDBENTdFMzg2NUQ5NDUxNzdDREZGQkQxOEUyMkY3ODRCMkQxQ0IyRDNFQUNGRkYyMDBGOEQ1NjU3OTZBODY5MUVCMTdBNTNCQUI0NEE3QUNDREFCMTAzNDY4NjFFQjlENEVGM0Q2MkM2RDA7dT0xNjk4NTkyNzMyNTU2ODA0NzM2O2g9ZmJhNTRkYWI1NGUzYzgyODMxNTBhY2QyNjc4ZDYwMzY=', id: '74890188888' }

Шаг 4 -Использование полученного решения на странице

Используем полученное решение на странице:

const captchaAnswer = res.data; const setAnswer = await page.evaluate((captchaAnswer) => { document.querySelector("input[data-testid='smart-token']").value = captchaAnswer; }, captchaAnswer); await page.click("#smartcaptcha-demo-submit");

Готово, капча решена успешно!!!

Полезные ссылки:

Начать дискуссию