Faça bypass captcha usando o Go

Faça bypass captcha usando o Go

Resolva o captcha com o módulo Go lang online.

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

Início rápido

Instalação

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

GitHub

Para instalar a API cliente, use isto:

go get -u github.com/2captcha/2captcha-go

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

A instância Client pode ser criada desta forma:

client := api2captcha.NewClient('YOUR_API_KEY')

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

client.SoftId = 123
client.Callback = "https://your.site/result-receiver"
client.DefaultTimeout = 120
client.RecaptchaTimeout = 600
client.PollingInterval = 100
Opções de instância do cliente
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: uma vez que o callback é definido para a instância Client, todos os métodos retornam apenas o ID captcha e NÃO pesquisam a API para obter o resultado. O resultado será enviado para o URL de callback. 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.

cap := api2captcha.Normal{
   File: "/path/to/normal.jpg",
}

code, err := client.Solve(cap.ToRequest())
if err != nil {
  if err == api2captcha.ErrTimeout {
    log.Fatal("Timeout");
  } else if err == api2captcha.ErrApi {
    log.Fatal("API error");
  } else if err == api2captcha.ErrNetwork {
    log.Fatal("Network error");
  } else {
    log.Fatal(err);
  }
}
fmt.Println("code "+code)
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.

cap := api2captcha.Normal{
    File: "/path/to/normal.jpg",
    Numeric: 4,
    MinLen: 4,
    MaxLen: 20,
    Phrase: true,
    CaseSensitive: true,
    Lang: "en",
    HintImgFile: "/path/to/hint.jpg",
    HintText: "Type red symbols",
 }
textCaptcha

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

cap := api2captcha.Text{
    Text: "If tomorrow is Saturday, what day is today?",
    Lang: "en",
 }
recaptchaV2

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

cap := api2captcha.ReCaptcha{
    SiteKey: "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
    Url: "https://mysite.com/page/with/recaptcha",
    Invisible: true,
    Action: "verify",
 }
 req := cap.ToRequest()
 req.SetProxy("HTTPS", "login:password@IP_address:PORT")
 code, err := client.solve(req)
recaptchaV3

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

cap := api2captcha.ReCaptcha{
    SiteKey: "6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-",
    Url: "https://mysite.com/page/with/recaptcha",
    Version: "v3",
    Action: "verify",
    Score: 0.3,
 }
 req := cap.ToRequest()
 req.SetProxy("HTTPS", "login:password@IP_address:PORT")
 code, err := client.solve(req)
funCaptcha

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

cap := api2captcha.FunCaptcha{
    SiteKey: "69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC",
    Url: "https://mysite.com/page/with/funcaptcha",
    Surl: "https://client-api.arkoselabs.com",
    UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36",
    Data: map[string]string{"anyKey":"anyValue"},   
 }
 req := cap.ToRequest()
 req.SetProxy("HTTPS", "login:password@IP_address:PORT")
 code, err := client.solve(req)
geeTest

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

cap := api2captcha.GeeTest{
    GT: "f2ae6cadcf7886856696502e1d55e00c",
    ApiServer: "api-na.geetest.com",
    Challenge: "12345678abc90123d45678ef90123a456b",
    Url: "https://mysite.com/captcha.html",
 }
 req := cap.ToRequest()
 req.SetProxy("HTTPS", "login:password@IP_address:PORT")
 code, err := client.solve(req)
keyCaptcha

Método baseado em token para resolver KeyCaptcha.

cap := api2captcha.KeyCaptcha{
    UserId: 10,
    SessionId: "493e52c37c10c2bcdf4a00cbc9ccd1e8",
    WebServerSign: "9006dc725760858e4c0715b835472f22",
    WebServerSign2: "9006dc725760858e4c0715b835472f22",
    Url: "https://www.keycaptcha.ru/demo-magnetic/",   
 }
 req := cap.ToRequest()
 req.SetProxy("HTTPS", "login:password@IP_address:PORT")
 code, err := client.solve(req)
capy

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

cap := api2captcha.Capy{
    SiteKey: "PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v",
    Url: "https://www.mysite.com/captcha/",   
 }
 req := cap.ToRequest()
 req.SetProxy("HTTPS", "login:password@IP_address:PORT")
 code, err := client.solve(req)
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.

cap := api2captcha.Grid{
    File: "path/to/captcha.jpg",
    Rows: 3,
    Cols: 3,
    PreviousId: 0,
    CanSkip: false,
    Lang: "en",
    HintImageFile: "path/to/hint.jpg",
    HintText: "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.

cap := api2captcha.Canvas{
    File: "path/to/captcha.jpg",
    PreviousId: 0,
    CanSkip: false,
    Lang: "en",
    HintImageFile: "path/to/hint.jpg",
    HintText: "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.

cap := api2captcha.Coordinates{
    File: "path/to/captcha.jpg",
    Lang: "en",
    HintImageFile: "path/to/hint.jpg",
    HintText: "Connect the dots",
}
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.

cap := api2captcha.Rotate{
    File: "path/to/captcha.jpg",
    Angle: 40,
    Lang: "en",
    HintImageFile: "path/to/hint.jpg",
    HintText: "Put the images in the correct way",
}

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.

id, err := client.Send(cap.ToRequest())
if err != nil {
   log.Fatal(err);
}

time.Sleep(10 * time.Second)

code, err := client.GetResult(id)
if err != nil {
   log.Fatal(err);
}

if code == nil {
   log.Fatal("Not ready")
}

fmt.Println("code "+*code)

balance

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

balance, err := client.GetBalance()
if err != nil {
   log.Fatal(err);
}

report

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

err := client.Report(id, true) // solved correctly
err := client.Report(id, false) // solved incorrectly

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