Автоматизированное решение reCAPTCHA в Puppeteer (JavaScript)

reCAPTCHA - капча от Google
reCAPTCHA - капча от Google

В этом примере показано, как автоматизировать решение reCAPTCHA с помощью JavaScript библиотеки Puppeteer. Для решения капчи в этом примере используется сервис 2captcha.com. В этом примере демонстрируется как решать капчу reCAPTCHA V2, расположенную на демо странице. Для работы примера вам необходима учетная запись 2captcha.com.

Для решения reCAPTCHA в 2captcha.com, необходимо передать минимум два праметра googlekey и pageurl в сервис 2captcha.com. Полный список доступных параметров доступен в документаци 2captcha. Далее сервис 2captcha с помощью работника решит полученную капчу, и после её успешного решения вернет ответ. Ответ представляет собой токен, который необходимо использовать на странице с капчей.

Алгоритм действий для решения reCAPTCHA в Puppeteer:

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

№ 1 - Открываем страницу с капчей

// Открываем страницу await page.goto("https://2captcha.com/demo/recaptcha-v2"); // Ожидаем появлени виджета reCAPTCHA await page.waitForSelector(".g-recaptcha");

№ 2 - Получаем требуемые параметры капчи

// Получаем параметр капчи `sitekey` на странице const sitekey = await page.evaluate(() => { return document.querySelector(".g-recaptcha").getAttribute("data-sitekey"); }); // Получаем текущий URL страницы const pageurl = await page.url();

№ 3 - Отправляем капчу для решения в сервис

// Отправляем параметры капчи для решения в сервис 2captcha const res = await solver.recaptcha({ pageurl: pageurl, googlekey: sitekey, });

№ 4 - Используем полученное решение reCAPTCHA на странице

// Получаем ответ содержащий решение капчи const captchaAnswer = res.data; // Используем полученный ответ const setAnswer = await page.evaluate((captchaAnswer) => { // Этот блок делать видимым не обязательно, здесь это сделано для наглядности. document.querySelector("#g-recaptcha-response").style.display = "block"; document.querySelector("#g-recaptcha-response").value = captchaAnswer; }, captchaAnswer); // Нажимаем на кнопку отправки для проверки решения await page.click('button[type="submit"]');

Полный код примера для Puppeteer доступен на GitHub.

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