Contourner le captcha en utilisant C#
Intégrer la bibliothèque C# pour la saisie automatique de captcha. L'API peut être intégrée dans n'importe quel script.
Package CSharp pour une intégration facile avec l'API du service de résolution de captcha de 2Captcha pour contourner reCAPTCHA, Arkose captcha, Geetestet résoudre tous les autres captchas
Démarrage rapideInstallation
Le paquet de scripts peut être installé à l'aide du programme d'installation des paquets ou manuellement.
NuGet
Pour installer automatiquement un paquet de bibliothèques, vous devez utiliser la solution standard pour les paquets CSharp - NuGet. Téléchargez-la depuis lelink et installez-la en suivant les instructions. Après avoir installé l'application, installez le package de bibliothèque requis.
Nous vous invitons à explorer notre répertoire GitHub où vous trouverez des bibliothèques et des modules pour une intégration facile avec notre API.
Configuration
Description de tous les paramètres nécessaires pour configurer le paquet installé
Une instance de la classe TwoCaptcha
peut être créée comme suit :
TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');
Vous avez également la possibilité de personnaliser certaines des options de l'instance créée :
solver.SoftId = 123;
solver.Callback = "https://your.site/result-receiver";
solver.DefaultTimeout = 120;
solver.RecaptchaTimeout = 600;
solver.PollingInterval = 10;
Options de l'instance TwoCaptcha
Option | Valeur par défaut | Description |
---|---|---|
softId | - | votre ID de logiciel obtenu après publication dans 2Captcha le catalogue de logiciel |
rappel | - | L'URL de votre web-sever qui reçoit le résultat de la reconnaissance du captcha. L'URL doit d'abord être enregistrée dans pingback settings de votre compte. |
defaultTimeout | 120 | Délai d'attente d'interrogation en secondes pour tous les types de captcha sauf reCAPTCHA. Définit la durée pendant laquelle le module essaie d'obtenir la réponse du point de terminaison de l'API res.php |
recaptchaTimeout | 600 | Délai d'interrogation pour reCAPTCHA en secondes. Définit combien de temps le module essaie d'obtenir la réponse du res.php endpoint API. |
pollingInterval | 10 | Intervalle en secondes entre les requêtes au point de terminaison de l'API res.php , la définition de valeurs inférieures à 5 secondes n'est pas recommandée. |
IMPORTANT: une foisrappel
est défini pourTwoCaptcha
l'instance, toutes les méthodes renvoient uniquement l'identifiant captcha et n'interrogent PAS l'API pour obtenir le résultat. Le résultat sera envoyé à l'URL de rappel. Pour obtenir la réponse manuellement, utilisez la méthode getResult
Résoudre le captcha
Lorsque vous soumettez un captcha basé sur une image, vous pouvez fournir des options supplémentaires pour aider les travailleurs de 2Captcha à le résoudre correctement.
Options de captcha
Option | Valeur par défaut | Description |
---|---|---|
numeric | 0 | Définit si le captcha contient des symboles numeric ou autres voir plus d'infos dans les docs de l'API. |
minLength | 0 | longueur minimale de réponse |
maxLength | 0 | longueur maximale de la réponse |
phrase | 0 | définit si la réponse contient des mots multiples ou non |
caseSensitive | 0 | définit si la réponse est sensible à la casse |
calc | 0 | définit que le captcha nécessite un calcul |
lang | - | définit la langue du captcha, voir la liste des langues prises en charge. |
hintImg | - | une image avec un indice montré aux travailleurs avec le captcha |
hintText | - | Indice ou texte de tâche montré aux travailleurs avec le captcha. |
Exemple basique
L'exemple ci-dessous montre un exemple d'appel de résolution de base avec gestion des erreurs.
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);
}
- Normal Captcha
- Texte Captcha
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- KeyCaptcha
- Capy
- Grille
- Canvas
- ClickCaptcha
- Pivoter
Pour contourner un captcha normal (texte déformé sur l'image), utilisez la méthode suivante. Cette méthode peut également être utilisée pour reconnaître n'importe quel texte sur l'image.
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");
Cette méthode peut être utilisée pour contourner un captcha qui demande de répondre à une question fournie en clair.
Text captcha = new Text();
captcha.SetText("If tomorrow is Saturday, what day is today?");
captcha.SetLang("en");
Utilisez cette méthode pour résoudre le reCAPTCHA V2 et obtenir un jeton pour contourner la protection.
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");
Cette méthode fournit la résolution reCAPTCHA V3 et retourne un jeton.
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");
Méthode de résolution de FunCaptcha (Arkoselabs). Retourne un jeton.
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");
Méthode pour résoudre le puzzle captcha de GeeTest. Retourne un ensemble de jetons en 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");
Méthode basée sur les jetons pour résoudre 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");
Méthode basée sur un jeton pour contourner le captcha du 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");
La méthode de la grille est initialement appelée méthode Old reCAPTCHA V2. Cette méthode peut être utilisée pour contourner tout type de captcha où vous pouvez appliquer une grille sur l'image et où vous devez cliquer sur des cases spécifiques de la grille. Retourne le nombre de cases.
La méthode Canvas peut être utilisée lorsque vous avez besoin de dessiner une ligne autour d'un objet sur une image. Renvoie un ensemble de coordonnées de points pour dessiner un polygone.
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");
La méthode ClickCaptcha renvoie les coordonnées des points sur l'image captcha. Peut être utilisée si vous avez besoin de cliquer sur des points particuliers de l'image.
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");
Cette méthode peut être utilisée pour résoudre un captcha qui demande de faire tourner un objet. Principalement utilisé pour contourner FunCaptcha. Retourne l'angle de rotation.
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");
Autres méthodes
Méthodes valides supplémentaires utilisées pendant le travail des scripts principaux
send / getResult
Ces méthodes peuvent être utilisées pour la soumission manuelle de captcha et le sondage des réponses.
string captchaId = await solver.Send(captcha);
Task.sleep(20 * 1000);
string code = await solver.GetResult(captchaId);
balance
Utilisez cette méthode pour obtenir le solde de votre compte.
double balance = await solver.Balance();
report
Utilisez cette méthode pour signaler une bonne ou une mauvaise réponse au captcha.
await solver.Report(captcha.Id, true); // captcha solved correctly
await solver.Report(captcha.Id, false); // captcha solved incorrectly
Traitement des erreurs
Variantes possibles des erreurs standard renvoyées par le service lors du traitement des demandes
En cas d'erreur, la résolution de captcha soulève une exception. Il est important de gérer correctement ces cas. Nous recommandons d'utiliser try/catch
pour gérer les exceptions.
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
}
Autres langues pour l'intégration avec l'API de service
Paquet PHP pour l'intégration avec l'API de service
Paquet Python pour l'intégration avec l'API de service
Paquet Java pour l'intégration avec l'API de service
Paquet Golang pour l'intégration avec l'API de service
Paquet Ruby pour l'intégration avec l'API de service
Paquet JavaScript pour l'intégration avec l'API de service