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

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

Neste exemplo, usaremos o ambiente de desenvolvimento do Visual Studio para escrever código em C#; você pode trabalhar no VS Code ou em qualquer outro editor/ambiente de desenvolvimento que lhe seja conveniente.

 

  • Abra o Visual Studio, crie um novo projeto, selecione "Aplicativo de console (Microsoft)" com suporte a C#:
none provided

  • Clique em Next, nomeie nosso projeto e selecione um local para ele, crie um projeto.

  • Vá para o Solution Explorer, clique com o botão direito do mouse no nome do projeto e vá para "Manage NuGet Packages".

  • No NuGet que se abre, selecione a guia "Browse", aqui precisaremos instalar as bibliotecas necessárias: Selenium.Webdriver, Selenium.Webdriver.ChromeDriver (...) e Zennolab.CapmonsterClout.Client. Instale também o dotenv se quiser usar o carregamento de dados do arquivo ".env". Depois de instalar todos os componentes, vá para a guia "Installed" (Instalado) para verificar a lista de pacotes necessários: 
     

none provided

  • Agora você pode começar a escrever o código. Vamos começar importando os componentes necessários:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Zennolab.CapMonsterCloud;
usando Zennolab.CapMonsterCloud.Requests;

namespace CaptchaSolver

 

  • Agora vamos criar e enviar uma solicitação ao servidor do CapMonster Cloud, obter a solução do captcha e retornar o resultado à nossa página usando as bibliotecas do Selenium e do CapMonster Cloud:

   class Program
{
    static async Task Main(string[] args)
     {
        string API_KEY = "YOUR_API_KEY";
        string SITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-";
       string WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo";

        aguardar SolveCaptcha(API_KEY, SITE_KEY, WEBSITE_URL);

 Console.WriteLine("Pressione qualquer tecla para sair...");
 Console.ReadKey();
     }

    static async Task SolveCaptcha(string API_KEY, string SITE_KEY, string WEBSITE_URL)
     {
         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(WEBSITE_URL);
 Console.WriteLine("Página aberta, reCAPTCHA resolvendo...");

                 var task = new RecaptchaV2ProxylessRequest
                {
                    WebsiteUrl = WEBSITE_URL,
                    WebsiteKey = SITE_KEY
                 };

                 var result = await cmCloudClient.SolveAsync(task);
                 Console.WriteLine("A tarefa foi resolvida!");

               ((IJavaScriptExecutor)driver).ExecuteScript("var element = document.getElementById('g-recaptcha-response');" +
                     $"element.textContent = '{result.Solution.Value}';");

                 driver.FindElement(By.Id("recaptcha-demo-submit")).Click();
                Console.WriteLine("Verificação concluída!");
             }
             catch (Exception ex)
            {
 Console.WriteLine($"Ошибка: {ex.Message}");
            }

             aguardar Task.Delay(5000);

            driver.Quit();
         }
     }
}

 

 

Código completo: 

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

namespace CaptchaSolver
{
    classe Program
     {
 static async Task Main(string[] args)
         {
 string API_KEY = "YOUR_API_KEY";
           string SITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-";
           string WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo";

            aguardar SolveCaptcha(API_KEY, SITE_KEY, WEBSITE_URL);

             Console.WriteLine("Pressione qualquer tecla para sair...");
 Console.ReadKey();
         }

        static async Task SolveCaptcha(string API_KEY, string SITE_KEY, string WEBSITE_URL)
         {
 
             {
 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(WEBSITE_URL);
 Console.WriteLine("Página aberta, reCAPTCHA resolvendo...");

                     var task = new RecaptchaV2ProxylessRequest
                    {
                        WebsiteUrl = WEBSITE_URL,
                        WebsiteKey = SITE_KEY
                    };

                    var result = await cmCloudClient.SolveAsync(task);
                     Console.WriteLine("A tarefa foi resolvida!");

                     ((IJavaScriptExecutor)driver).ExecuteScript("var element = document.getElementById('g-recaptcha-response');" +
                        $"element.textContent = '{result.Solution.Value}';");

                   driver.FindElement(By.Id("recaptcha-demo-submit")).Click();
 Console.WriteLine("Verificação concluída!");
                }
                catch (Exception ex)
                {
 Console.WriteLine($"Error: {ex.Message}");
                }

                  aguardar Task.Delay(5000);

                driver.Quit();
             }
         }
     }
}

 

 

Explicação do código:

 

class Program: Declarando a classe Program.

 

static async Task Main(string[] args): o método Main do aplicativo, que será executado quando o programa for iniciado. Esse método é assíncrono e usa Task para executar operações assíncronas.

 

string API_KEY = "YOUR_API_KEY";: Definindo uma variável API_KEY que contém a chave da API para o CapMonster Cloud.

 

string SITE_KEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-";: Definição da variável SITE_KEY que contém a chave do site para o reCAPTCHA.

 

string WEBSITE_URL = "https://www.google.com/recaptcha/api2/demo";: Definição de uma variável WEBSITE_URL contendo o URL da página da Web do reCAPTCHA.

 

await SolveCaptcha(API_KEY, SITE_KEY, WEBSITE_URL);: Chamando o método SolveCaptcha, passando as chaves e o URL como argumentos.

 

Console.WriteLine("Pressione qualquer tecla para sair...");: Imprimindo uma mensagem no console.

 

Console.ReadKey();: Aguardando que o usuário pressione uma tecla antes de encerrar o programa.

 

SolveCaptchaa função executa uma solução reCAPTCHA na página da Web especificada.

 

var clientOptions = new ClientOptions { ClientKey = API_KEY };: Criando um objeto ClientOptions especificando a chave da API.

 

var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);: Criando um cliente da API do CapMonster Cloud com as opções especificadas.

 

var options = new ChromeOptions();: Criando um objeto ChromeOptions para configurar o navegador Chrome.

 

options.AddArgument("--no-sandbox"); e options.AddArgument("--disable-dev-shm-usage");: Adição de argumentos de inicialização do navegador Chrome para melhorar a segurança e reduzir o uso de memória.

 

usando (var driver = new ChromeDriver(options)): Criando uma instância do ChromeDriver para controlar o navegador Chrome.

 

driver.Navigate().GoToUrl(WEBSITE_URL);: Indo para o URL especificado no navegador.

 

var task = new RecaptchaV2ProxylessRequest { WebsiteUrl = WEBSITE_URL, WebsiteKey = SITE_KEY };: Criando um objeto de tarefa para resolver o reCAPTCHA.

 

var result = await cmCloudClient.SolveAsync(task);: resolução do reCAPTCHA usando a API do CapMonster Cloud.

 

((IJavaScriptExecutor)driver).ExecuteScript("var element = document.getElementById('g-recaptcha-response');" + $"element.textContent = '{result.Solution.Value}';");: Execução de código JavaScript para inserir uma solução reCAPTCHA em uma página.

 

driver.FindElement(By.Id("recaptcha-demo-submit")).Click();:Encontrar o elemento de botão e clicar nele para concluir a verificação.

 

Console.WriteLine("Verificação concluída!");: Exibe uma mensagem sobre a conclusão da verificação.

 

catch (Exception ex) { Console.WriteLine($"Erro: {ex.Message}"); }: Tratamento de possíveis exceções e exibição de uma mensagem de erro.

 

await Task.Delay(5000);:Aguardando 5 segundos.

 

driver.Quit();: Fechando o navegador.

 

 

Vamos executar nosso script. Se você fez tudo corretamente, o resultado será a execução bem-sucedida do programa:

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