如何使用C#、Selenium和CapMonster Cloud解决ReCaptcha v3
为了编写解决此类型验证码的代码并成功执行,您需要通过NuGet安装所有必要的组件(请参见C# ReCaptcha v. 2)。之后,我们将直接开始编写代码。
导入所有之前安装的组件:
使用 OpenQA.Selenium;
使用 OpenQA.Selenium.Chrome;
使用 Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
设置变量值并创建请求对象:
命名空间 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 = "验证"、
};
创建一个验证码求解请求,将其发送至 CapMonster 云,接收答案,将其发送至页面并点击 "检查 "按钮:
await SolveCaptcha(API_KEY, task);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
static async Task SolveCaptcha(string API_KEY, RecaptchaV3ProxylessRequest task)
{
var clientOptions = new ClientOptions
{
ClientKey = API_KEY
};
var cmCloudClient = CapMonsterCloudCloudClientFactory.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("The page is open, reCAPTCHA solving...");
var result = await cmCloudClient.SolveAsync(task);
Console.WriteLine("Captcha solved! Solution: " + 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($"Error: {ex.Message}");
}
driver.Quit();
}
}
} }
}
完整代码:
使用 OpenQA.Selenium;
使用 OpenQA.Selenium.Chrome;
使用 Zennolab.CapMonsterCloud;
使用 Zennolab.CapMonsterCloud.Requests;
命名空间 CaptchaSolver
类 程序
{
static async Task Main(string[] args)
{
string API_KEY = "YOUR_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 = "验证"、
};
await SolveCaptcha(API_KEY, task);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
static async Task SolveCaptcha(string API_KEY, RecaptchaV3ProxylessRequest task)
{
var clientOptions = new ClientOptions
{
ClientKey = API_KEY
};
var cmCloudClient = CapMonsterCloudCloudClientFactory.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("The page is open, solving reCAPTCHA...");
var result = await cmCloudClient.SolveAsync(task);
Console.WriteLine("Captcha is solved! Solution: " + 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($"Error: {ex.Message}");
}
driver.Quit();
}
}
} }
}
代码说明:
await SolveCaptcha(API_KEY, task);: 这是对 SolveCaptcha 方法的调用,该方法使用 CapMonster 云 API 解决验证码问题。
API_KEY - 访问 CapMonster 服务 API 的密钥。
task - 之前准备的验证码求解请求的对象
SolveCaptcha метод:
接收一个 API 密钥和一个类型为 Recaptcha V3 的验证码解决请求对象。
使用指定的参数创建 CapMonster 云客户端。
配置 Chrome Web 驱动程序的选项,包括禁用某些安全选项。
初始化 Chrome 浏览器 Web 驱动程序。
转到指定网站的页面。
使用 CapMonster 云 API 解析验证码并等待结果。
收到解决方案后,使用 JavaScript 点击页面上的按钮或元素。
等待 10 秒后完成。
Console.WriteLine("按任意键退出...");和 Console.ReadKey();: - 在所有操作完成后等待用户输入以终止程序执行。
脚本执行结果:

Note:我们在此提醒您,该产品用于在您自己的网站和您拥有合法访问权限的网站上自动进行测试。