How to Solve hCaptcha in C# Using Selenium&CapMonster Cloud
Install all the necessary components via NuGet (see C# ReCaptcha v.2). Next, in the created project, we will write code to solve this type of captcha. Let's start by importing all the dependencies we need:
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
namespace CaptchaSolver {
Let's set the values of the variables, create a request object and the captcha solution request itself, send it to CapMonster Cloud, receive the answer, send it to the page and click on the “Submit” button:
class Program
{
static async Task Main(string[] args)
{
string API_KEY = "YOUR_API_KEY";
string SITE_KEY = "EXAMPLE_SITE_KEY";
string WEBSITE_URL = "www.example.com";
await SolveHCaptcha(API_KEY, SITE_KEY, WEBSITE_URL);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
static async Task SolveHCaptcha(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");
using (var driver = new ChromeDriver(options))
{
try
{
driver.Navigate().GoToUrl(WEBSITE_URL);
Console.WriteLine("The page is open, solving hCaptcha...");
var hcaptchaRequest = new HCaptchaProxylessRequest
{
WebsiteUrl = WEBSITE_URL,
WebsiteKey = SITE_KEY
};
var result = await cmCloudClient.SolveAsync(hcaptchaRequest);
Console.WriteLine("hCaptcha is solved!");
((IJavaScriptExecutor)driver).ExecuteScript("var element = document.getElementsByName('h-captcha-response')[0];" +
$"element.value = '{result.Solution.Value}';");
var submitButton = driver.FindElement(By.Id("hcaptcha-demo-submit"));
submitButton.Click();
Console.WriteLine("Click on the button after solving hCaptcha!");
Console.WriteLine("Verification is successful!");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
await Task.Delay(5000);
driver.Quit();
}
}
}
}
Full code:
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_KEY";
string SITE_KEY = "EXAMPLE_SITE_KEY";
string WEBSITE_URL = "www.example.com";
await SolveHCaptcha(API_KEY, SITE_KEY, WEBSITE_URL);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
static async Task SolveHCaptcha(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");
using (var driver = new ChromeDriver(options))
{
try
{
driver.Navigate().GoToUrl(WEBSITE_URL);
Console.WriteLine("The page is open, solving hCaptcha...");
var hcaptchaRequest = new HCaptchaProxylessRequest
{
WebsiteUrl = WEBSITE_URL,
WebsiteKey = SITE_KEY
};
var result = await cmCloudClient.SolveAsync(hcaptchaRequest);
Console.WriteLine("hCaptcha is solved!");
((IJavaScriptExecutor)driver).ExecuteScript("var element = document.getElementsByName('h-captcha-response')[0];" +
$"element.value = '{result.Solution.Value}';");
var submitButton = driver.FindElement(By.Id("hcaptcha-demo-submit"));
submitButton.Click();
Console.WriteLine("Click on the button after solving hCaptcha!");
Console.WriteLine("Verification is successful!");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
await Task.Delay(5000);
driver.Quit();
}
}
}
}
Main method:
Sets the values to API_KEY, SITE_KEY and WEBSITE_URL.
Calls the SolveHCaptcha method to solve hCaptcha with the specified parameters.
Outputs a message to the console and waits for any key to be pressed to end the program.
SolveHCaptcha method:
Creates a CapMonster Cloud client with the specified options.
Configures options for the Chrome web driver, including disabling some security settings.
Initializes the Chrome web driver.
Goes to the page of the specified website where the hCaptcha is located.
Prepares a request to solve hCaptcha using the CapMonster Cloud API.
Solves hCaptcha and waits for the result.
Inserts a captcha solution into a field on a web page using JavaScript.
Clicks on the button with id hcaptcha-demo-submit after successful captcha solving.
Displays messages to the console about solving the captcha and completing verification.
Waits 5 seconds before shutting down the web driver.
Console.WriteLine("Press any key to exit..."); and Console.ReadKey(); – wait for user input to complete program execution after all operations.
Running the script and the result if it is executed successfully:
Note: We'd like to remind you that the product is used for automating testing on your own websites and on websites to which you have legal access.