Bypassa i captcha usando Go

Bypassa i captcha usando Go

Risolvi i captcha con il modulo online di Golang.

Il pacchetto Golang per integrare facilmente l'API di 2Captcha il servizio di risoluzione captcha per bypassare reCAPTCHA, Arkose captcha, Geetest e risolvere tutti gli altri tipi di captcha.

Avvio rapido

Installazione

Il pacchetto di script può essere installato manualmente o usando il programma di installazione del pacchetto

GitHub

Per installare l'API, usare:

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

Vi invitiamo ad esplorare il nostro archivio GitHub nel quale potrete trovare le librerie e i moduli per integrare facilmente il nostro API.

Configurazione

Descrizione di tutti i parametri necessari per configurare il pacchetto installato

Un'istanza Client può essere creata nel seguente modo:

client := api2captcha.NewClient('YOUR_API_KEY')

Hai anche la possibilità di personalizzare alcune delle opzioni per l'istanza:

client.SoftId = 123
client.Callback = "https://your.site/result-receiver"
client.DefaultTimeout = 120
client.RecaptchaTimeout = 600
client.PollingInterval = 100
Opzioni di istanze cliente
OpzioneValore di defaultDescrizione
softId-l'ID del tuo software è stata ottenuta dopo aver pubblicato su 2Captcha software catalog
callback-L'URL del tuo server che riceve il risultato del riconoscimento captcha. L'URL dovrebbe venire registrato sul tuo account nella sezione impostazioni pingback
defaultTimeout120Timeout in secondi per tutti i tipi di captcha eccetto i reCAPTCHA. Definisce per quanto tempo il modulo prova a ricevere una risposta dal terminale API res.php
recaptchaTimeout600Timeout in secondi per i reCAPTCHA. Definisce per quanto tempo il modulo prova a ricevere una risposta dal terminale API res.php
pollingInterval10Intervallo in secondi tra le richieste al terminale API res.php. Impostare un valore minore a 5 secondi non è consigliato
IMPORTANTE: una volta che il callback viene creato per l'istanza Client, tutti i metodi rimandano solo l'ID del captcha e NON interpellano l'API per avere il risultato. I risultati verranno mandati all'URL del callback. Per ricere le risposte manualmente usare getResult method

Risolvere i captcha

Quando invii qualsiasi captcha con un'immagine, puoi fornire opzioni aggiuntive per aiutare gli operatori di 2Captcha a risolverlo correttamente

Opzioni captcha
Opzionevalore di defaultDescrizione
numeric0Definisce se il captcha contiene nnumeri o altri simboli a href='/2captcha-api#normal_post'>scopri di più sul documento API
minLength0Lunghezza minima della risposta
maxLength0Lunghezza massima della risposta
phrase0definisce se la risposta contiene più parole o no
caseSensitive0definisce se la risposta distingue le maiuscole dalle minuscole
calc0definisce se il captcha necessita di un calcolo
lang-definisce il linguaggio del captcha, guarda la lista dei linguaggi supportati
hintImg-un'immagine con il suggerimento mostrata agli operatori con il captcha
hintText-suggerimento o testo mostrato agli operatori con il captcha

Esempio basilare

Qui sotto si trova un esempio di risoluzione base con gestione di errore.

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

Per bypassare un normal captcha (testo distorto in un'immagine) usa il metodo seguente. QUesta modalità può venire utilizzata anche per riconoscere il testo nell'immagine

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

Questo metodo può essere usato per bypassare un captcha che richiede di rispondere ad una domanda di testo.

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

Usa questo metodo per risolvere i reCAPTCHA V2 e ottenere il token per bypassare la protezione.

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

Questo metodo permette di risolvere il reCAPTCHA V3 e ricevere il 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

Metodo per risolvere FunCaptcha (Arkoselabs). In cambio viene dato un 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

Metodo per risolvere un captcha puzzle GeeTest. In cambio viene dato un set di token come 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

Metodo basato su token per risolvere i 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

Metodo basato su token per bypassare i captcha Capy Puzzle.

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

Il metodo Grid era in origine chiamato il metodo per i vecchi reCAPTCHA V2. Può essere usato per bypassare qualsiasi tipo di captcha nel quale bisogna applicare una griglia ad un'immagine e cliccare su specifiche sezioni di essa. In cambio vengono dati i numeri delle sezioni.

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

Il metodo canvas può essere usato quando bisogna disegnare una linea intorno ad un oggetto o un'immagine. Riporta un set di coordinate di punti per disegnare un poligono.

cap := api2captcha.Canvas{
    File: "path/to/captcha.jpg",
    PreviousId: 0,
    CanSkip: false,
    Lang: "en",
    HintImageFile: "path/to/hint.jpg",
    HintText: "Draw around apple",
}
clickCaptcha

Il metodo clickCaptcha riporta le coordinate di alcuni punti sull'immagine del captcha. Può essere usato se c'è bisogno di cliccaresu un particolare punto dell'immagine.

cap := api2captcha.Coordinates{
    File: "path/to/captcha.jpg",
    Lang: "en",
    HintImageFile: "path/to/hint.jpg",
    HintText: "Connect the dots",
}
rotateCaptcha

Questo metodo può essere usato per risolvere un captcha che richiede di girare un oggetto. Viene usato principalmente per ricolvere i FunCaptcha. Riporta l'angolo di rotazione.

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",
}

Altre modalità

Ulteriori metodi validi usati durante il lavoro degli script principali

send / getResult

Queste modalità possono essere utilizzate per inserire il captcha manualmente e rispondere ai sondaggi.

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

Usa questa modalità per accedere al saldo del tuo conto.

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

report

Usa questa modalità per segnalare una risposta captcha giusta o sbagliata.

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

Altri linguaggi per l'integrazione con il servizio API