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 rapidoInstallazione
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
Opzione | Valore di default | Descrizione |
---|---|---|
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 |
defaultTimeout | 120 | Timeout 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 |
recaptchaTimeout | 600 | Timeout in secondi per i reCAPTCHA. Definisce per quanto tempo il modulo prova a ricevere una risposta dal terminale API res.php |
pollingInterval | 10 | Intervallo in secondi tra le richieste al terminale API res.php . Impostare un valore minore a 5 secondi non è consigliato |
IMPORTANTE: una volta che ilcallback
viene creato per l'istanzaClient
, 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
Opzione | valore di default | Descrizione |
---|---|---|
numeric | 0 | Definisce se il captcha contiene nnumeri o altri simboli a href='/2captcha-api#normal_post'>scopri di più sul documento API |
minLength | 0 | Lunghezza minima della risposta |
maxLength | 0 | Lunghezza massima della risposta |
phrase | 0 | definisce se la risposta contiene più parole o no |
caseSensitive | 0 | definisce se la risposta distingue le maiuscole dalle minuscole |
calc | 0 | definisce 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)
- Normal Captcha
- Text Captcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
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",
}
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",
}
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)
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)
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)
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)
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)
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)
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",
}
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",
}
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",
}
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
Pacchetto PHP per l'integrazione con il service API
Pacchetto Python per l'integrazione con il service API
Pacchetto Java per l'integrazione con il service API
Pacchetto C# per l'integrazione con il service API
Pacchetto Ruby per l'integrazione con il service API
Pacchetto JavaScript per l'integrazione con il service API