Bypassa i captcha usando C#

Bypassa i captcha usando C#

Integra la libreria C# per la digitazione automatica dei captcha. l'API può essere integrato in qualsiasi script.

Il pacchetto CSharp 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

NuGet

Per installare automaticamente un pacchetto libreria, bisogna usare la soluzione standard per i pacchetti CSharp - NuGet. Scaricala da link a e installala seguendo le istruzioni. Dopo aver installato l'applicazione, installa il pacchetto libreria richiesto.

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 dell'ordine di TwoCaptcha può essere creata in questo modo:

TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');

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

solver.SoftId = 123;
solver.Callback = "https://your.site/result-receiver";
solver.DefaultTimeout = 120;
solver.RecaptchaTimeout = 600;
solver.PollingInterval = 10;
Opzioni per istanza TwoCaptcha
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 TwoCaptcha, 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.

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);
}
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

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");
textCaptcha

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

Text captcha = new Text();
captcha.SetText("If tomorrow is Saturday, what day is today?");
captcha.SetLang("en");
recaptchaV2

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

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

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

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

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

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

Metodo basato su token per bypassare i captcha Capy Puzzle.

Capy captcha = new Capy();
captcha.SetSiteKey("PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v");
captcha.SetUrl("https://www.mysite.com/captcha/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
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.

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

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

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

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

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.

string captchaId = await solver.Send(captcha);

Task.sleep(20 * 1000);

string code = await solver.GetResult(captchaId);

balance

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

double balance = await solver.Balance();

report

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

await solver.Report(captcha.Id, true); // captcha solved correctly
await solver.Report(captcha.Id, false); // captcha solved incorrectly

Gestione degli errori

Possibili varianti di errori standard sperimentato dal servizio mentre processa le richieste

Nel caso in cui un risolutore di captcha si trovi davanti ad un errore, manda un segnale di eccezione. È importante gestire bene questi casi. Si raccomanda di usare try/catch per gestire le eccezioni.

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
}

Altri linguaggi per l'integrazione con il servizio API