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ápidoInstalaçã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ção | Valor padrão | Descriçã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 |
defaultTimeout | 120 | Tempo 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 |
recaptchaTimeout | 600 | Tempo limite de sondagem para reCAPTCHA em segundos. Define por quanto tempo o módulo tenta obter a resposta da parte da API res.php |
pollingInterval | 10 | Intervalo em segundos entre solicitações da parte da API res.php , não é recomendado definir valores inferiores a 5 segundos |
IMPORTANTE: assim que ocallback
seja definido para a instânciaTwoCaptcha
, 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ção | Valor por defeito | Descrição |
---|---|---|
numeric | 0 | Define se o captcha contém símbolos numéricos ou outros veja mais informações na documentação API |
minLength | 0 | comprimento mínimo da resposta |
compMax | 0 | comprimento máximo da resposta |
phrase | 0 | define se a resposta contém ou não várias palavras |
caseSensitive | 0 | define se a resposta diferencia maiúsculas de minúsculas |
calc | 0 | define 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);
}
- Captcha Normal
- Captcha Texto
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotação
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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");
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
}