ForeverTools.Captcha
Multi-provider captcha solving for .NET. Supports 2Captcha, CapSolver, and Anti-Captcha with a unified API.

Features
- Multiple Providers - 2Captcha, CapSolver, Anti-Captcha
- Unified API - Same interface for all providers
- All Captcha Types - reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha, Image
- ASP.NET Core Ready - Built-in dependency injection
- Async/Await - Fully asynchronous
- Multi-Target - .NET 8, .NET 6, .NET Standard 2.0
Quick Start
Install
dotnet add package ForeverTools.Captcha
Solve a Captcha
using ForeverTools.Captcha;
var client = CaptchaClient.For2Captcha("your-api-key");
var result = await client.SolveReCaptchaV2Async(
"https://example.com/page",
"6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
);
if (result.Success)
{
Console.WriteLine($"Token: {result.Solution}");
}
Supported Captcha Types
reCAPTCHA v2
var result = await client.SolveReCaptchaV2Async(
websiteUrl: "https://example.com",
siteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
invisible: false
);
reCAPTCHA v3
var result = await client.SolveReCaptchaV3Async(
websiteUrl: "https://example.com",
siteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
action: "login",
minScore: 0.5
);
hCaptcha
var result = await client.SolveHCaptchaAsync(
websiteUrl: "https://example.com",
siteKey: "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"
);
Cloudflare Turnstile
var result = await client.SolveTurnstileAsync(
websiteUrl: "https://example.com",
siteKey: "0x4AAAAAAABS7vwvV6VFfMcD"
);
Image Captcha
var result = await client.SolveImageAsync(imageBase64);
var result = await client.SolveImageAsync(imageBytes);
FunCaptcha / Arkose Labs
var result = await client.SolveFunCaptchaAsync(
websiteUrl: "https://example.com",
publicKey: "A2A14B1D-1AF3-C791-9BBC-EE1C98E84A77"
);
Multi-Provider Setup
Configure multiple providers for failover or comparison:
var options = new CaptchaOptions
{
DefaultProvider = CaptchaProvider.TwoCaptcha,
TwoCaptchaApiKey = "key1",
CapSolverApiKey = "key2",
AntiCaptchaApiKey = "key3"
};
var client = new CaptchaClient(options);
var result = await client.SolveReCaptchaV2Async(url, siteKey,
provider: CaptchaProvider.CapSolver);
ASP.NET Core Integration
builder.Services.AddForeverToolsCaptcha("your-api-key");
builder.Services.AddForeverToolsCaptcha(options =>
{
options.DefaultProvider = CaptchaProvider.TwoCaptcha;
options.TwoCaptchaApiKey = "key1";
options.CapSolverApiKey = "key2";
options.TimeoutSeconds = 120;
});
builder.Services.AddForeverToolsCaptcha(builder.Configuration);
{
"Captcha": {
"DefaultProvider": "TwoCaptcha",
"TwoCaptchaApiKey": "your-key",
"TimeoutSeconds": 120
}
}
Check Balance
var balance = await client.GetBalanceAsync();
Console.WriteLine($"Balance: ${balance.Balance}");
var balances = await client.GetAllBalancesAsync();
Report Incorrect Solution
if (!solutionWorked)
{
await client.ReportIncorrectAsync(result.TaskId, result.Provider);
}
Provider Links
Requirements
- .NET 8.0, .NET 6.0, or .NET Standard 2.0 compatible framework
- API key from at least one provider
License
MIT License - see LICENSE for details.