Как решить ReCaptcha v3 на C# с помощью Selenium&CapMonster Cloud
Для написания кода с решением этого типа капчи и его успешного выполнения вам нужно установить все необходимые компоненты через NuGet (см. C# ReCaptcha v.2). После этого переходим непосредственно к написанию кода.
Импортируем все установленные ранее компоненты:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
Установим значения переменных и создадим объект запроса:
namespace CaptchaSolver
{
class Program
{
static async Task Main(string[] args)
{
string API_KEY = "ВАШ_YOUR_API";
string WEBSITE_URL = "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta";
string SITE_KEY = "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob";
var task = new RecaptchaV3ProxylessRequest
{
WebsiteUrl = WEBSITE_URL,
WebsiteKey = SITE_KEY,
MinScore = 0.9,
PageAction = "verify",
};
Создадим запрос на решение капчи, отправим его в CapMonster Cloud, получим ответ, отправим его на страницу и кликнем по кнопке “Проверить”:
await SolveCaptcha(API_KEY, task);
Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey();
}
static async Task SolveCaptcha(string API_KEY, RecaptchaV3ProxylessRequest task)
{
var clientOptions = new ClientOptions
{
ClientKey = API_KEY
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var options = new ChromeOptions();
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");
using (var driver = new ChromeDriver(options))
{
try
{
driver.Navigate().GoToUrl(task.WebsiteUrl);
Console.WriteLine("Страница открыта, решаем reCAPTCHA...");
var result = await cmCloudClient.SolveAsync(task);
Console.WriteLine("Капча решена! Решение: " + result.Solution.Value);
// Нажатие кнопки с ID 'v3_submit' после решения капчи
var button = driver.FindElement(By.Id("v3_submit"));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", button);
Console.WriteLine("Кнопка нажата!");
await Task.Delay(10000);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
}
driver.Quit();
}
}
}
}
Код полностью:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
namespace CaptchaSolver
{
class Program
{
static async Task Main(string[] args)
{
string API_KEY = "ВАШ_YOUR_API";
string WEBSITE_URL = "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta";
string SITE_KEY = "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob";
var task = new RecaptchaV3ProxylessRequest
{
WebsiteUrl = WEBSITE_URL,
WebsiteKey = SITE_KEY,
MinScore = 0.9,
PageAction = "verify",
};
await SolveCaptcha(API_KEY, task);
Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey();
}
static async Task SolveCaptcha(string API_KEY, RecaptchaV3ProxylessRequest task)
{
var clientOptions = new ClientOptions
{
ClientKey = API_KEY
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var options = new ChromeOptions();
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");
using (var driver = new ChromeDriver(options))
{
try
{
driver.Navigate().GoToUrl(task.WebsiteUrl);
Console.WriteLine("Страница открыта, решаем reCAPTCHA...");
var result = await cmCloudClient.SolveAsync(task);
Console.WriteLine("Капча решена! Решение: " + result.Solution.Value);
// Нажатие кнопки с ID 'v3_submit' после решения капчи
var button = driver.FindElement(By.Id("v3_submit"));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", button);
Console.WriteLine("Кнопка нажата!");
await Task.Delay(10000);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка: {ex.Message}");
}
driver.Quit();
}
}
}
}
Объяснение кода:
await SolveCaptcha(API_KEY, task);: Это вызов метода SolveCaptcha, который решает капчу с использованием CapMonster Cloud API.
API_KEY - ключ для доступа к API сервиса CapMonster.
task - объект запроса на решение капчи, подготовленный ранее.
SolveCaptcha метод:
Получает ключ API и объект запроса на решение капчи типа Recaptcha V3.
Создает клиент CapMonster Cloud с установленными параметрами.
Настраивает опции для веб-драйвера Chrome, включая отключение некоторых параметров безопасности.
Инициализирует веб-драйвер Chrome.
Переходит на страницу указанного веб-сайта.
Решает капчу с использованием CapMonster Cloud API и ожидает результат.
Получив решение, кликает на кнопку или элемент на странице с помощью JavaScript.
Ожидает 10 секунд перед завершением.
Console.WriteLine("Press any key to exit..."); и Console.ReadKey();: – ожидают пользовательского ввода для завершения выполнения программы после выполнения всех операций.
Результат выполнения скрипта:
NB: Напоминаем, что продукт используется для автоматизации тестирования на ваших собственных сайтах и на сайтах, к которым у вас есть доступ на законных основаниях.