Notificação de uso de cookies

Este site usa cookies. Os cookies lembram-se de si, para que possamos fornecer serviços personalizados. Saiba mais.

Fazer bypass a captcha em JAVA

Fazer bypass a captcha em JAVA

Implemente a biblioteca Java para ignorar rapidamente a verificação de captcha. API simples para resolver captcha.

Pacote Java para fácil integração com a API do serviço de solução de captcha 2Captcha para fazer bypass a reCAPTCHA, hCaptcha, 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

Repositório Central Maven

O artefato 2captcha-java está disponível em Maven Central

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.setSoftId(123);
solver.setCallback("https://your.site/result-receiver");
solver.setDefaultTimeout(120);
solver.setRecaptchaTimeout(600);
solver.setPollingInterval(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 {
    solver.solve(captcha);
    System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
    System.out.println("Error occurred: " + e.getMessage());
}
Quando você 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

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.

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.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");
hCaptcha

Use este método para resolver o desafio hCaptcha. Retorna um token para fazer bypass a captcha.

HCaptcha captcha = new HCaptcha();
captcha.setSiteKey("10000000-ffff-ffff-ffff-000000000001");
captcha.setUrl("https://www.site.com/page/");
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 File("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 File("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 File("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 File("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 = solver.send(captcha);

Thread.sleep(20 * 1000);

String code = solver.getResult(captchaId);

balance

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

double balance = solver.balance();

report

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

solver.report(captcha.getId(), true); // captcha solved correctly
solver.report(captcha.getId(), false); // captcha solved incorrectly

Manipulação de erros

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

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

try {
    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