///
C# ReCaptcha v.3
Ekaterina Yanchuk
Ekaterina Yanchuk
Autor de artigos técnicos
January 16, 2025
5 min

Como resolver o ReCaptcha v3 em C# usando Selenium&CapMonster Cloud

Para escrever o código que resolve esse tipo de captcha e executá-lo com êxito, você precisa instalar todos os componentes necessários via NuGet (consulte C# ReCaptcha v.2). Depois disso, passamos diretamente à escrita do código.

 

Importar todos os componentes instalados anteriormente: 

 

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;

 

 

Definir os valores das variáveis e criar um objeto de solicitação:

 

namespace CaptchaSolver
{
    classe 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",
           };

 

 

Crie uma solicitação para resolver o captcha, envie-a para o CapMonster Cloud, receba a resposta, envie-a para a página e clique no botão "Verificar":

 

             await SolveCaptcha(API_KEY, task);

            Console.WriteLine("Pressione qualquer tecla para sair...");
 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");

 usando (var driver = new ChromeDriver(options))
            {
                try
                {
                   driver.Navigate().GoToUrl(task.WebsiteUrl);
 Console.WriteLine("A página está aberta, reCAPTCHA resolvendo...");

                     var result = await cmCloudClient.SolveAsync(task);

                    Console.WriteLine("Captcha resolvido! Solução: " + result.Solution.Value);

 Clique no botão com ID 'v3_submit' após resolver o captcha
                    var button = driver.FindElement(By.Id("v3_submit"));
                    ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", button);
 Console.WriteLine("O botão foi pressionado!");

                     aguardar Task.Delay(10000);
                }
                catch (Exception ex)
                {
 Console.WriteLine($"Error: {ex.Message}");
                }

                driver.Quit();
             }
         }
     }
}

 

 

Código completo:

 

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;

namespace CaptchaSolver
{
    classe Program
     {
 static async Task Main(string[] args)
         {
 string API_KEY = "SUA_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("Pressione qualquer tecla para sair...");
 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");

 usando (var driver = new ChromeDriver(options))
            {
                try
                {
                   driver.Navigate().GoToUrl(task.WebsiteUrl);
 Console.WriteLine("A página está aberta, resolvendo o reCAPTCHA...");

                     var result = await cmCloudClient.SolveAsync(task);

                    Console.WriteLine("Captcha está resolvido! Solução: " + result.Solution.Value);

 Clique no botão com ID 'v3_submit' após resolver o captcha
                    var button = driver.FindElement(By.Id("v3_submit"));
                    ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", button);
 Console.WriteLine("O botão foi pressionado!");

                     aguardar Task.Delay(10000);
                }
                catch (Exception ex)
                {
 Console.WriteLine($"Error: {ex.Message}");
                }

                driver.Quit();
             }
         }
     }
}

 

 

Explicação do código:

 

await SolveCaptcha(API_KEY, task);: Essa é uma chamada para o método SolveCaptcha, que resolve o captcha usando a API do CapMonster Cloud.

 

API_KEY - chave para acessar a API do serviço CapMonster.

 

task - o objeto da solicitação de solução de captcha preparada anteriormente

 

SolveCaptcha метод: 

Recebe uma chave de API e um objeto de solicitação de solução de captcha do tipo Recaptcha V3.

Cria um cliente do CapMonster Cloud com os parâmetros especificados.

Configura opções para o driver da Web do Chrome, incluindo a desativação de algumas opções de segurança.

Inicializa o driver da Web do Chrome.

Vai para uma página no site especificado.

Resolve o captcha usando a API do CapMonster Cloud e aguarda o resultado.

Clica em um botão ou elemento da página usando JavaScript depois de receber uma solução.

Espera 10 segundos antes de terminar.

 

Console.WriteLine("Pressione qualquer tecla para sair..."); e Console.ReadKey();:esperar a entrada do usuário para encerrar a execução do programa depois que todas as operações forem concluídas.

 

O resultado da execução do script:

none provided

Note: Gostaríamos de lembrá-lo de que o produto é usado para automatizar testes em seus próprios sites e em sites aos quais você tem acesso legal.

ItGuy
geear
Programa de afiliados para desenvolvedores de software
Ganhe até 30% dos gastos dos seus usuários com a evasão de captcha
✅ Solicitação enviada
Obrigado pelo seu interesse em nosso programa de parcerias! Entraremos em contato com você dentro de 7 dias úteis.
Solicitação para participar
Preencha o formulário para enviar uma solicitação para o programa de afiliados.
Mais artigos