Как автоматизировать решение капчи на основе изображений в JavaScript (Puppeteer)

Как автоматизировать решение капчи на основе изображений в JavaScript (Puppeteer)

В этом примере описанно, как автоматизировать решение капчи на основе изображений в JavaScript с помощью Puppeteer и сервиса 2captcha. Puppeteer — это библиотека Node.js, используемая для автоматизации. 2captcha — сервис, используемый для решения капчи.

Введение

Капча картинка, это один из самых распространенных видов капчи. Этот метод также можно использовать для решения яндекс капчи, в некоторых случаях. Для того чтобы повысить положительный процент решения ваших капч, рекомендуется использовать дополнительные параметры. Дополнительные параметры позволяют более точно описать требования к ответу капчи. Это необходимо в связи с тем, что ответ на капчу может содержать дополнительные требования. Список дополнительных требований описан на изображении ниже:

Дополнительные требования к ответу капчи
Дополнительные требования к ответу капчи

Также не забывайте отправлять отчеты для решенных капч. Если капча решена правильно отправляйте goodReport. Если капча решена не верно отправляйте badReport. В случае отправки badReport, полученный вами ответ будет перепроверен, и в случае возникновения ошибки, вам вернут средства за неверно решенную капчу. Но не стоит отправлять badReport на правильно решенные капчи, так как ваш аккаунт забанят, помните это.

Пример отправки goodReport:

// 84473494859 - id капчи solver.goodReport('84473494859')

Пример отправки badReport:

// 84473494860- id капчи solver.badReport('84473494860')

Алгоритм действий для решения капчи изображения в Puppeteer:

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

Шаг №1 - Открываем в Puppeteer страницу и сохраняем капчу изображение

Для примера откроем демо страницу с капчей изображением и сохраним изображение капчи:

// Открываем демо страницу await page.goto("https://2captcha.com/demo/normal"); await page.waitForSelector('img[alt="normal captcha example"]'); const element = await page.$('img[alt="normal captcha example"]'); // Сохраняем капчу изображение await element.screenshot({ path: "./image_captcha.png" });

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

const getCaptchaAnswer = async () => { try { const base64Captcha = fs.readFileSync("./image_captcha.png", "base64"); // Отправка капчи в сервис 2captcha.com const res = await solver.imageCaptcha({ body: base64Captcha, }); return res.data; } catch (err) { console.log(err); } };

Шаг №3 - Получаем ответ на капчу

const captchaAnswer = await getCaptchaAnswer(); console.log("captchaAnswer:" + captchaAnswer);

Шаг №4 - Используем полученный ответ на странице

// Печатаем полученный ответ в поле для ответа await page.type("#simple-captcha-field", captchaAnswer, { delay: 500 }); await page.evaluate(() => { //Клик по кнопке 'check' document.querySelector("button[type=submit]").click(); });

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

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