//
C# ReCaptcha v.3
reCaptcha

Как решить 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();: – ожидают пользовательского ввода для завершения выполнения программы после выполнения всех операций.

 

Результат выполнения скрипта:

none provided

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