Fazer bypass a captcha usando C#

Fazer bypass a captcha usando C#

Integre a biblioteca C# para inserção automática de captcha. A API pode ser integrada em qualquer script.

Pacote CSharp para fácil integração com a API do serviço de resolução de captcha 2Captcha para fazer bypass reCAPTCHA, Arkose captcha, geetest e resolver quaisquer outros captchas

Início rápido

Instalação

O pacote de scripts pode ser instalado usando o instalador de pacotes ou manualmente

NuGet

Para instalar automaticamente um pacote de biblioteca, necessita de usar a solução padrão para pacotes CSharp - NuGet. Descarregue o link e instale de acordo com as instruções. Após instalar a app, instale o pacote de biblioteca necessário.

Convidamo-lo a explorar o nosso repositório GitHub onde pode encontrar bibliotecas e módulos para fácil integração com a nossa API.

Configuração

Descrição de todos os parâmetros necessários para configurar o pacote instalado

Uma instância da classe TwoCaptcha pode ser criada desta forma:

TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');

Também pode personalizar algumas das opções para a instância criada:

solver.SoftId = 123;
solver.Callback = "https://your.site/result-receiver";
solver.DefaultTimeout = 120;
solver.RecaptchaTimeout = 600;
solver.PollingInterval = 10;
Opções de instância TwoCaptcha
OpçãoValor padrãoDescrição
softId-o seu ID de software obtido após a publicação no 2Captcha catálogo de software
callback-URL do seu servidor web que recebe o resultado do reconhecimento captcha. O URL deve ser registado primeiro nas configurações de pingback da sua conta
defaultTimeout120Tempo limite de pesquisa em segundos para todos os tipos de captcha, exceto reCAPTCHA. Define por quanto tempo o módulo tenta obter a resposta da parte da API res.php
recaptchaTimeout600Tempo limite de sondagem para reCAPTCHA em segundos. Define por quanto tempo o módulo tenta obter a resposta da parte da API res.php
pollingInterval10Intervalo em segundos entre solicitações da parte da API res.php, não é recomendado definir valores inferiores a 5 segundos
IMPORTANTE: assim que o callback seja definido para a instância TwoCaptcha, todos os métodos retornam apenas o ID do captcha e NÃO pesquisam a API para obter o resultado. O resultado será enviado para o URL de retorno de chamada. Para obter a resposta manualmente, use o método getResult

Resolver o captcha

Quando envia qualquer captcha baseado em imagem, o uso de captcha pode fornecer opções adicionais para ajudar os funcionários do 2Captcha a resolvê-lo corretamente

Opções de Captcha
OpçãoValor por defeitoDescrição
numeric0Define se o captcha contém símbolos numéricos ou outros veja mais informações na documentação API
minLength0comprimento mínimo da resposta
compMax0comprimento máximo da resposta
phrase0define se a resposta contém ou não várias palavras
caseSensitive0define se a resposta diferencia maiúsculas de minúsculas
calc0define se captcha requer cálculo
lang-define o idioma captcha, consulte a lista de idiomas suportados
hintImg-uma imagem com dica mostrada aos trabalhadores com o captcha
hintText-dica ou texto de tarefa mostrado aos trabalhadores com o captcha

Exemplo básico

O exemplo em baixo mostra um exemplo básico de chamada de resolução com tratamento de erros.

Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetMinLen(4);
captcha.SetMaxLen(20);
captcha.SetCaseSensitive(true);
captcha.SetLang("en");

try
{
    await solver.Solve(captcha);
    Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (Exception e)
{
    Console.WriteLine("Error occurred: " + e.Message);
}
simpleCaptcha

Para ignorar um captcha normal (texto distorcido na imagem) use o seguinte método. Este método também pode ser usado para reconhecer qualquer texto na imagem.

Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetNumeric(4);
captcha.SetMinLen(4);
captcha.SetMaxLen(20);
captcha.SetPhrase(true);
captcha.SetCaseSensitive(true);
captcha.SetCalc(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Type red symbols only");
textCaptcha

Este método pode ser usado para ignorar um captcha que requer responder a uma pergunta fornecida em texto não encriptado.

Text captcha = new Text();
captcha.SetText("If tomorrow is Saturday, what day is today?");
captcha.SetLang("en");
recaptchaV2

Use este método para resolver o reCAPTCHA V2 e obter um token para fazer bypass a proteção.

ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.SetUrl("https://mysite.com/page/with/recaptcha");
captcha.SetInvisible(true);
captcha.SetAction("verify");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
recaptchaV3

Este método fornece o solucionador reCAPTCHA V3 e retorna um token.

ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.SetUrl("https://mysite.com/page/with/recaptcha");
captcha.SetVersion("v3");
captcha.SetDomain("google.com");
captcha.SetAction("verify");
captcha.SetScore(0.3);
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
funCaptcha

Método de resolução FunCaptcha (Arkoselabs). Retorna um token.

FunCaptcha captcha = new FunCaptcha();
captcha.SetSiteKey("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
captcha.SetUrl("https://mysite.com/page/with/funcaptcha");
captcha.SetSUrl("https://client-api.arkoselabs.com");
captcha.SetUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36");
captcha.SetData("anyKey", "anyValue");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
geeTest

Método para resolver o captcha do puzzle GeeTest. Retorna um conjunto de tokens como JSON.

GeeTest captcha = new GeeTest();
captcha.SetGt("f2ae6cadcf7886856696502e1d55e00c");
captcha.SetApiServer("api-na.geetest.com");
captcha.SetChallenge("12345678abc90123d45678ef90123a456b");
captcha.SetUrl("https://mysite.com/captcha.html");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
keyCaptcha

Método baseado em token para resolver KeyCaptcha.

KeyCaptcha captcha = new KeyCaptcha();
captcha.SetUserId(10);
captcha.SetSessionId("493e52c37c10c2bcdf4a00cbc9ccd1e8");
captcha.SetWebServerSign("9006dc725760858e4c0715b835472f22");
captcha.SetWebServerSign2("2ca3abe86d90c6142d5571db98af6714");
captcha.SetUrl("https://www.keycaptcha.ru/demo-magnetic/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
capy

Método baseado em token para fazer bypass a captcha de puzzle Capy.

Capy captcha = new Capy();
captcha.SetSiteKey("PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v");
captcha.SetUrl("https://www.mysite.com/captcha/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
grid

O método Grid é originalmente chamado de método Old reCAPTCHA V2. O método pode ser usado para contornar qualquer tipo de captcha onde pode aplicar uma grelha na imagem e deve clicar em caixas de grade específicas. Retorna números de caixas.

Grid captcha = new Grid();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetRows(3);
captcha.SetCols(3);
captcha.SetPreviousId(0);
captcha.SetCanSkip(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Select all images with an Orange");
canvas

O método Canvas pode ser usado quando precisa de desenhar uma linha ao redor de um objeto na imagem. Retorna um conjunto de coordenadas de pontos para desenhar um polígono.

Canvas captcha = new Canvas();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetPreviousId(0);
captcha.SetCanSkip(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Draw around apple");
clickCaptcha

O método ClickCaptcha retorna as coordenadas dos pontos na imagem captcha. Pode ser usado se necessitar de clicar em pontos específicos da imagem.

Coordinates captcha = new Coordinates();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Select all images with an Orange");
rotateCaptcha

Este método pode ser usado para resolver um captcha que pede para girar um objeto. Usado principalmente para contornar o FunCaptcha. Retorna o ângulo de rotação.

Rotate captcha = new Rotate();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetAngle(40);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Put the images in the correct way up");

Outros métodos

Métodos válidos adicionais usados durante o trabalho dos scripts principais

send / getResult

Estes métodos podem ser usados para envio manual de captcha e pesquisa de respostas.

string captchaId = await solver.Send(captcha);

Task.sleep(20 * 1000);

string code = await solver.GetResult(captchaId);

balance

Use este método para obter o saldo da sua conta.

double balance = await solver.Balance();

report

Use este método para relatar uma resposta captcha boa ou má.

await solver.Report(captcha.Id, true); // captcha solved correctly
await solver.Report(captcha.Id, false); // captcha solved incorrectly

Manipulação de erros

Possíveis variantes de erros padrão retornados pelo serviço ao processar pedidos

Caso um erro de solucionador captcha apresente uma exceção. É importante tratar adequadamente destes casos. Recomendamos usar try/catch para lidar com exceções.

try
{
    await solver.Solve(captcha);
}
catch (ValidationException e)
{
    // invalid parameters passed
}
catch (NetworkException e)
{
    // network error occurred
}
catch (ApiException e)
{
    // api respond with error
}
catch (TimeoutException e)
{
    // captcha is not solved so far
}

Outras linguagens para integração com a API de serviço