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:
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.