Looking for international version of our service? Go to 2captcha.com

Туториалы по обходу капчи

Как обойти и решить капчу в Puppeteer

Как распознать, решить и обойти капчу автоматически с помощью Puppeteer

Как обойти CAPTCHA в Puppeteer

Что такое Puppeteer

Puppeteer — это библиотека на JavaScript, предоставляющая высокоуровневый API для управления браузерами Chrome или Firefox через DevTools Protocol или WebDriver BiDi. По умолчанию Puppeteer работает в безголовом режиме (без видимого интерфейса), но его можно настроить для работы в режиме с видимым интерфейсом.

Как обойти CAPTCHA с помощью Puppeteer

CAPTCHA можно обойти, используя только Puppeteer или с расширением 2Captcha.

Какие типы CAPTCHA можно обойти с помощью Puppeteer (с расширением 2Captcha)

  • reCaptcha (v2, v3, Enterprise)
  • FunCaptcha
  • Cloudflare Turnstile
  • Amazon WAF
  • Изображения CAPTCHA
  • Geetest
  • и другие типы CAPTCHA

В пошаговом описании ниже мы расскажем, как решить CAPTCHA на странице 2Captcha demo.


1. Установка компонентов

Установите Puppeteer и необходимые пакеты:

npm i puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

2. Настройка расширения

  1. Скачайте архив с расширением и распакуйте его в папку ./2captcha-solver в корне вашего проекта.

  2. Расширение имеет множество настроек, включая автоматическое решение CAPTCHA, поддержку прокси и другие параметры. Эти настройки находятся в файле ./common/config.js.

    Чтобы включить автоматическое решение reCAPTCHA V2:

    • Откройте файл ./common/config.js и измените значение поля autoSolveRecaptchaV2 на true.
  3. Настройте расширение:

    • Введите ваш API-ключ в файл настроек расширения ./common/config.js. Ваш ключ должен быть записан в поле apiKey. Вы можете увидеть и скопировать свой API-ключ на странице.

    Пример:

    apiKey: "8080629c1221fdd82m8080000ff0c99c"
  4. Отключите открытие страницы настроек расширения после установки. Для этого удалите следующие строки в ./manifest.json:

    "options_ui": {
      "page": "options/options.html",
      "open_in_tab": true
    }

3. Автоматизация браузера

Запустите и инициализируйте расширение в Puppeteer:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const { executablePath } = require('puppeteer'); 

(async () => {
  const pathToExtension = require('path').join(__dirname, '2captcha-solver');
  puppeteer.use(StealthPlugin());
  const browser = await puppeteer.launch({
    headless: false,
    args: [
      `--disable-extensions-except=${pathToExtension}`,
      `--load-extension=${pathToExtension}`,
    ],
    executablePath: executablePath()
  });
  
  const [page] = await browser.pages();
})();

3.1 Открытие страницы

Откройте страницу 2Captcha demo и отправьте CAPTCHA.

Используя page.goto(), перейдите на страницу. CAPTCHA можно отправить на решение как вручную, так и автоматически.

В этом примере мы отправляем CAPTCHA вручную, ожидая появления кнопки расширения с CSS-селектором .captcha-solver, а затем нажимаем на эту кнопку. После нажатия CAPTCHA будет отправлена на решение сервису.

// Открытие страницы
await page.goto('https://2captcha.com/demo/recaptcha-v2');

// Ожидание появления элемента с CSS-селектором ".captcha-solver"
await page.waitForSelector('.captcha-solver');

// Нажатие на элемент с указанным селектором
await page.click('.captcha-solver');

3.2 Проверка статуса CAPTCHA

После получения ответа от сервиса, кнопка расширения .captcha-solver изменит значение атрибута data-state. Наблюдая за значением этого атрибута, вы можете отслеживать состояние расширения. После того как CAPTCHA будет решена, значение атрибута изменится на "solved".

Описание значений атрибута data-state:

Атрибут Описание
data-state="ready" Расширение готово решить CAPTCHA. Нажмите кнопку, чтобы отправить её.
data-state="solving" CAPTCHA решается.
data-state="solved" CAPTCHA успешно решена.
data-state="error" Произошла ошибка при получении ответа или CAPTCHA не была решена.

На этом шаге необходимо дождаться, пока data-state не изменится на "solved", что будет означать успешное решение CAPTCHA. После этого можно приступать к необходимым действиям.

// Ожидание, пока CAPTCHA не будет решена
await page.waitForSelector('.captcha-solver[data-state="solved"]', { timeout: 180000 });

4. Выполнение действий

После того как CAPTCHA будет решена, вы можете начать выполнять необходимые действия на странице. В этом примере мы нажимаем кнопку "Check", чтобы проверить правильность решения CAPTCHA. После успешной проверки вы увидите сообщение "Captcha is passed successfully!"

// Нажатие на кнопку "Check" для проверки решения CAPTCHA
await page.click("button[type='submit']");

Поздравляем, CAPTCHA успешно пройдена!

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


Полезная информация

  • Расширение имеет множество настроек, включая автоматическое решение CAPTCHA для определённых типов и поддержку прокси. Все эти настройки доступны в файле ./common/config.js в папке с распакованным расширением.
  • Для автоматического решения reCAPTCHA V2 измените значение поля autoSolveRecaptchaV2 на true в файле ./common/config.js.
  • Вы можете использовать песочницу для тестирования. В режиме песочницы отправленные CAPTCHA будут отправляться вам для ручного решения. Узнать больше о песочнице можно здесь.
  • Puppeteer, работающий в безголовом режиме, не поддерживает загрузку расширений. Для решения этой проблемы вы можете использовать Xvfb.

Руководства


Вывод

Интеграция расширения 2Captcha с Puppeteer позволяет эффективно решать различные типы CAPTCHA, что значительно упрощает задачи автоматизации, такие как веб-скрейпинг, тестирование и создание ботов. Используя приведённые инструкции и примеры, вы сможете легко внедрить решение CAPTCHA в свои проекты на JavaScript.

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