Как решить ReCaptcha v3 на JavaScript с помощью Selenium&CapMonster Cloud
- Для запуска кода вам понадобится заранее установленный Node.js и все нужные зависимости (см. JavaScript ReCaptcha v.2). В файле “.env” прописываем значения:
CAPMONSTER_API_KEY=ВАШ_API_KEY
WEBSITE_KEY=6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob
WEBSITE_URL=https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta
- В файле “main.js” пишем код для автоматического решения данного типа капчи. Нам нужно будет заранее узнать id для поиска элемента капчи, чтобы вернуть туда токен, полученный от сервера CapMonster Cloud.
require('dotenv').config();
const { Builder, By, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV3ProxylessRequest } = 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();
// Инициализация CapMonster клиента
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: CAPMONSTER_API_KEY }));
try {
await driver.get(WEBSITE_URL);
console.log('Браузер инициализирован!');
const recaptchaV3ProxylessRequest = new RecaptchaV3ProxylessRequest({
websiteURL: WEBSITE_URL,
websiteKey: WEBSITE_KEY,
minScore: 0.7,
pageAction: "verify",
});
// Получение решения капчи от CapMonster
const solution = await cmcClient.Solve(recaptchaV3ProxylessRequest);
console.log('Решение от CapMonster:', solution);
// Вставка токена в форму капчи
await driver.executeScript((result) => {
document.getElementById('g-recaptcha-response-100000').style.display = 'block';
document.getElementById('g-recaptcha-response-100000').style.visibility = 'visible';
document.getElementById('g-recaptcha-response-100000').value = result;
}, solution);
console.log('Результат вставлен в текстовое поле!');
await Promise.all([
driver.wait(until.elementIsVisible(driver.findElement(By.id('v3_submit')))),
driver.findElement(By.id('v3_submit')).click()
]);
console.log('Кнопка "Проверить" нажата!');
} catch (e) {
console.error('Произошла ошибка:', e);
} finally {
await driver.quit();
}
}
solveRecaptcha();
Объяснение кода:
Загрузка переменных окружения: используется dotenv для загрузки переменных окружения из файла .env, таких как CAPMONSTER_API_KEY, WEBSITE_KEY и WEBSITE_URL.
Функция solveRecaptcha:
Создает экземпляр драйвера Chrome с использованием Selenium WebDriver.
Инициализирует клиента CapMonster с использованием загруженного CAPMONSTER_API_KEY.
Переходит на веб-сайт с reCAPTCHA.
Создает запрос для решения reCAPTCHA типа V3 Proxyless с указанием параметров, таких как minScore и pageAction.
Решает reCAPTCHA с использованием CapMonster и получает решение.
Вставляет полученный токен (решение) в форму на веб-странице с использованием JavaScript.
Ожидает видимости элемента с id 'v3_submit' и затем кликает на него.
Выводит сообщения о выполненных шагах.
Блок try-catch-finally:
Блок try содержит основной код выполнения автоматизации.
Блок catch обрабатывает любые исключения и выводит сообщение об ошибке.
Блок finally гарантирует, что драйвер будет закрыт даже в случае возникновения ошибки.
Вызов функции solveRecaptcha(): запускает функцию solveRecaptcha() для решения reCAPTCHA при выполнении скрипта.
Запуск кода и результат:
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.