///
JavaScript ReCaptcha v.2
9 августа 2024 г.

Как решить ReCaptcha v2 на JavaScript с помощью Selenium&CapMonster Cloud

Запуск готового кода мы будем производить через Node.js, поэтому заранее скачайте его и установите на компьютер. 

 

  • Далее создаем папку для нового проекта, назовем ее, например, BypassRecaptchav2Js, запустим VS Code и откроем созданную только что папку. 

 

  • Создаем файл “.env”, добавляем туда все нужные нам параметры: 

CAPMONSTER_API_KEY=ВАШ_API_KEY
WEBSITE_KEY=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
WEBSITE_URL=https://www.google.com/recaptcha/api2/demo

 

  • Загружаем package.json командой в терминале: npm init, этот файл нам нужен для возможности увидеть список всех установленных модулей и зависимостей. Открываем терминал и устанавливаем необходимые пакеты командой “npm i @zennolab_com/capmonstercloud-client dotenv selenium selenium-webdriver”. 

 

  • Создаем файл “main.js” и начинаем писать код. Для начала импортируем все компоненты и загружаем данные:

require('dotenv').config();
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2ProxylessRequest } = require('@zennolab_com/capmonstercloud-client');

const CAPMONSTER_API_KEY = process.env.CAPMONSTER_API_KEY;
const WEBSITE_KEY = process.env.WEBSITE_KEY;
const WEBSITE_URL = process.env.WEBSITE_URL;

 

  • Теперь нам нужно запустить браузер, найти элемент капчи и создать запрос на решение в CapMonster Cloud:

async function solveRecaptcha() {
    const options = new chrome.Options();
    const driver = await new Builder().forBrowser('chrome').setChromeOptions(options).build();

    try {
        await driver.get(WEBSITE_URL);
        console.log('Страница открыта, решение reCAPTCHA...');

 

  • Теперь отправим запрос с созданной задачей на сервер для решения reCAPTCHA: 

// Инициализация клиента CapMonster
        const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CAPMONSTER_API_KEY }));

        // Создание запроса для решения reCAPTCHA типа V2 Proxyless
        const recaptchaV2ProxylessRequest = new RecaptchaV2ProxylessRequest({
            websiteURL: WEBSITE_URL,
            websiteKey: WEBSITE_KEY,
        });

        // Решение reCAPTCHA с использованием CapMonster
        const solution = await cmcClient.Solve(recaptchaV2ProxylessRequest);
        console.log('Решение от CapMonster:', solution);

        // Извлечение токена из объекта решения
        const token = solution.solution.gRecaptchaResponse;

 

  • Внедрим решение на страницу и создадим последующую отправку формы после успешного решения капчи: 

// Вставка результата в форму
        await driver.executeScript((result) => {
            document.getElementById('g-recaptcha-response').value = result;
            console.log('Токен в консоли:', result); // Вывод токена в консоль
        }, token);

        console.log('Токен вставлен в форму!');

        await driver.findElement(By.id('recaptcha-demo-submit')).click();
        console.log('Форма отправлена!'); // Опциональный шаг

        // Пауза в течение 10 секунд
        await new Promise(resolve => setTimeout(resolve, 10000));

    } catch (error) {
        console.error('Ошибка:', error);
    } finally {
        await driver.quit();
    }
}

solveRecaptcha();

 

 

Вот так выглядит весь код: 

require('dotenv').config();
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2ProxylessRequest } = require('@zennolab_com/capmonstercloud-client');

const CAPMONSTER_API_KEY = process.env.CAPMONSTER_API_KEY;
const WEBSITE_KEY = process.env.WEBSITE_KEY;
const WEBSITE_URL = process.env.WEBSITE_URL;

async function solveRecaptcha() {
    const options = new chrome.Options();
    const driver = await new Builder().forBrowser('chrome').setChromeOptions(options).build();

    try {
        await driver.get(WEBSITE_URL);
        console.log('Страница открыта, решение reCAPTCHA...');

        // Инициализация клиента CapMonster
        const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CAPMONSTER_API_KEY }));

        // Создание запроса для решения reCAPTCHA типа V2 Proxyless
        const recaptchaV2ProxylessRequest = new RecaptchaV2ProxylessRequest({
            websiteURL: WEBSITE_URL,
            websiteKey: WEBSITE_KEY,
        });

        // Решение reCAPTCHA с использованием CapMonster
        const solution = await cmcClient.Solve(recaptchaV2ProxylessRequest);
        console.log('Решение от CapMonster:', solution);

        // Извлечение токена из объекта решения
        const token = solution.solution.gRecaptchaResponse;

        // Вставка результата в форму
        await driver.executeScript((result) => {
            document.getElementById('g-recaptcha-response').value = result;
            console.log('Токен в консоли:', result); // Вывод токена в консоль
        }, token);

        console.log('Токен вставлен в форму!');

        await driver.findElement(By.id('recaptcha-demo-submit')).click();
        console.log('Форма отправлена!'); // Опциональный шаг

        // Пауза в течение 10 секунд
        await new Promise(resolve => setTimeout(resolve, 10000));

    } catch (error) {
        console.error('Ошибка:', error);
    } finally {
        await driver.quit();
    }
}

solveRecaptcha();

 

 

Объяснение кода:

 

Импорт библиотек: 

dotenv используется для загрузки переменных окружения из файла .env.

selenium-webdriver используется для автоматизации браузера с помощью WebDriver.

selenium-webdriver/chrome предоставляет опции для настройки браузера Chrome.

@zennolab_com/capmonstercloud-client предоставляет инструменты для работы с CapMonster Cloud.

 

Загрузка переменных окружения: используется dotenv для загрузки переменных окружения из файла .env, таких как CAPMONSTER_API_KEY, WEBSITE_KEY и WEBSITE_URL.

 

Функция solveRecaptcha: создает экземпляр драйвера Chrome с использованием Selenium WebDriver.

Инициализирует клиента CapMonster с использованием загруженного CAPMONSTER_API_KEY.

Переходит на веб-сайт с reCAPTCHA.

Создает запрос для решения reCAPTCHA типа V2 Proxyless.

Решает reCAPTCHA с использованием CapMonster и получает решение.

Вставляет полученный токен (решение) в форму на веб-странице с использованием JavaScript.

Опционально отправляет форму, вызывая клик на кнопку с id 'recaptcha-demo-submit'.

После решения ожидает 10 секунд.

Завершает работу драйвера.

 

Блок try-catch-finally

Блок try содержит основной код выполнения автоматизации.

Блок catch обрабатывает любые исключения, выводит сообщение об ошибке.

Блок finally гарантирует, что драйвер будет закрыт даже в случае возникновения ошибки.

 

Вызов функции solveRecaptcha(): запускает функцию solveRecaptcha() для решения reCAPTCHA при выполнении скрипта.

 

 

Запустим наш код командой в терминалеnode main.js и посмотрим, что получится:

none provided

NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях. 

ItGuy
geear
Партнёрская программа для разработчиков софта
Зарабатывайте до 30% от трат ваших пользователей на обход капчи
✅ Заявка отправлена
Спасибо за интерес к нашей партнёрской программе! Мы свяжемся с вами в течение 7 рабочих дней.
Заявка на подключение
Заполните форму, чтобы отправить заявку на подключение к партнёрской программе
Больше статей