• Логотип «PHP»
  • Логотип «Python»
  • Логотип «Java»
  • Логотип «C#»
  • Логотип «Ruby»
  • Логотип «Golang»
  • Логотип «JavaScript»
Обхід капчі на Csharp

Обхід капчі на Csharp
Логотип «C#»
  • Логотип «PHP»
  • Логотип «Python»
  • Логотип «Java»
  • Логотип «C#»
  • Логотип «Ruby»
  • Логотип «Golang»
  • Логотип «JavaScript»

Інтегруйте бібліотеку Csharp щоб автоматизувати введення капчі. API дозволяє провести інтеграцію з будь-яким кодом.

Пакет Csharp скриптів для простої інтеграції з API сервісу рішення капчі 2Captcha для обходу reCAPTCHA, Arkose captcha, Geetest та рішення будь-яких інших капч

Швидкий старт

Встановлення

Пакет скриптів можна встановити за допомогою інсталятора пакетів або вручну

NuGet

Для автоматичного встановлення пакета бібліотек необхідно скористатися стандартним рішенням для CSharp пакетів - NuGet. Завантажте його за посиланням і встановіть за інструкцією. Після інсталяції програми встановіть необхідний пакет бібліотек

Приклади коду, а також бібліотеки та модулі для інтеграції з нашим API ви також можете знайти в репозиторії на GitHub.

Конфігурація

Опис усіх потрібних параметрів для конфігурування встановленого пакета

Примірник класу TwoCaptcha можна створити так:

TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');

Також у вас є можливість настроювати деякі опції створеного екземпляра:

solver.SoftId = 123;
solver.Callback = "https://your.site/result-receiver";
solver.DefaultTimeout = 120;
solver.RecaptchaTimeout = 600;
solver.PollingInterval = 10;
Опції екземпляра TwoCaptcha
ОпціяЗначення за замовчуваннямОпис
softId-ваш ID програмного забезпечення, отриманий після публікації в каталог програм 2Captcha
callback-URL вашого веб-сервера, який отримує результат розпізнавання капчі. URL повинен бути спочатку зареєстрований у налаштуваннях pingback вашого облікового запису
defaultTimeout120Таймаут опитування за секунди для всіх типів капчі, крім reCAPTCHA. Визначає, як довго модуль намагається отримати відповідь кінцевої точки API res.php
recaptchaTimeout600Таймаут опитування reCAPTCHA за секунди. Визначає, як довго модуль намагається отримати відповідь кінцевої точки API res.php
pollingInterval10Інтервал у секундах між запитами до кінцевої точки API res.php, встановлення значень менше 5 секунд не рекомендується
ВАЖЛИВО: як тільки callback визначено для одного екземпляра класу TwoCaptcha, всі інші методи повертають тільки ID капчі та НЕ опитують API для отримання результату. Результат буде надіслано на Callback URL. Щоб отримати відповідь вручну, використовуйте метод getResult

Рішення капчі

Коли ви відправляєте будь-яку графічну капчу, ви можете передавати додаткові параметри, які допоможуть працівникам 2Captcha вирішити її швидко та правильно.

Опції капчі
ОпціяЗначення за замовчуваннямОпис
numeric0визначає, чи містить капча числові або інші символи, докладніше див. у документації API
minLength0мінімальна довжина відповіді
maxLength0максимальна довжина відповіді
phrase0визначає, чи містить відповідь кілька слів чи ні
caseSensitive0визначає, чи чутлива відповідь до регістру
calc0визначає капчу, яка потребує розрахунку
lang-визначає мову капчі, дивіться список мов, що підтримуються
hintImg-зображення з підказкою, показане працівникам за допомогою капчі
hintText-підказка або текст завдання, що показується працівникам за допомогою капчі

Базовий приклад

У наведеному нижче прикладі наведено базовий приклад виклику розв'язувача з обробкою помилок.

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

Щоб обійти звичайну капчу (перекручений текст на зображенні), використовуйте наступний метод. Цей метод можна також використовувати для розпізнавання будь-якого тексту на зображенні.

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

Цей метод можна використовувати для обходу капчі, яка вимагає відповіді на запитання у вигляді відкритого тексту

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

Використовуйте цей метод для вирішення reCAPTCHA V2 та отримання токена для обходу захисту

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

Цей метод дозволяє обходити reCAPTCHA V3 та повертає токен

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

Метод вирішення FunCaptcha (Аркоселабс). Повертає токен для обходу капчі

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

Метод вирішення капчі головоломки GeeTest. Повертає набір токенів у форматі 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

Метод вирішення 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

Токен-оснований спосіб обходу капчі 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

Цей метод спочатку називався Old reCAPTCHA V2. Його можна використовувати для обходу будь-якого типу капчі, коли ви можете застосувати сітку до зображення і потрібно клацнути певні поля сітки. Повертає кількість осередків сітки

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

Метод Canvas можна використовувати, коли потрібно намалювати лінію навколо об'єкта на зображенні. Повертає набір координат точок для малювання багатокутника.

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

Метод ClickCaptcha повертає координати точок на зображенні капчі. Може використовуватися, якщо потрібно клацнути певні точки на зображенні.

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

Цей спосіб можна використовуватиме рішення капчі, яка просить повернути об'єкт. В основному використовується для обходу FunCaptcha. Повертає значення кута повороту.

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

Інші методи

Додаткові допустимі методи, що застосовуються в процесі роботи основних скриптів.

send / getResult

Цей метод можна використовувати для ручної передачі капчі та отримання відповідей.

string captchaId = await solver.Send(captcha);

Task.sleep(20 * 1000);

string code = await solver.GetResult(captchaId);

balance

Використовуйте цей метод, щоб отримати баланс свого облікового запису.

double balance = await solver.Balance();

report

Використовуйте цей метод, щоб повідомити про правильне або неправильне рішення капчі.

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

Обробка помилок

Можливі варіанти стандартних помилок, що повертаються сервісом при обробці запитів

У разі помилки розв'язувач капчі видає виняток. Важливо правильно поводитися з цими випадками. Ми рекомендуємо використовувати try/catch для обробки винятків

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
}

Інші мови для інтеграції з API сервісу