Обход капчи на Csharp
Интегрируйте Csharp библиотеку чтобы автоматизировать ввод капчи. API позволяет провести интеграцию с любым кодом.
Пакет Csharp скриптов для простой интеграции с API сервиса решения капчи ruCaptcha для обхода reCAPTCHA, hCaptcha, 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 программного обеспечения, полученный после публикации в каталоге программ ruCaptcha |
callback | - | URL вашего веб-сервера, который получает результат распознавания капчи. URL должен быть сначала зарегистрирован в настройках pingback вашей учетной записи |
defaultTimeout | 120 | Таймаут опроса в секундах для всех типов капчи, кроме reCAPTCHA. Определяет, как долго модуль пытается получить ответ от кон ечной точки API res.php |
recaptchaTimeout | 600 | Таймаут опроса reCAPTCHA в секундах. Определяет, как долго модуль пытается получить ответ от конечной точки API res.php |
pollingInterval | 10 | Интервал в секундах между запросами к конечной точке API res.php , установка значений менее 5 секунд не рекомендуется |
ВАЖНО: как толькоcallback
определен для одного экземпляра классаTwoCaptcha
, все остальные методы возвращают только ID капчи и НЕ опрашивают API для получения результата. Результат будет отправлен на callback URL. Чтобы получить ответ вручную, используйте метод getResult
Решение капчи
Когда вы отправляете любую графическую капчу, вы можете передавать дополнительные параметры, которые помогут работникам ruCaptcha решить ее быстро и правильно.
Опции капчи
Опция | Значение по умолчанию | Описание |
---|---|---|
numeric | 0 | определяет, содержит ли капча числовые или другие символы, подробнее см. в документации по API |
minLength | 0 | минимальная длина ответа |
maxLength | 0 | максимальная длина ответа |
phrase | 0 | определяет, содержит ли ответ несколько слов или нет |
caseSensitive | 0 | определяет, чувствителен ли ответ к регистру |
calc | 0 | определяет капчу, которая требует расчета |
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);
}
- Простая капча
- Текстовая капча
- reCAPTCHA v2
- reCAPTCHA v3
- FunCaptcha
- GeeTest
- hCaptcha
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
Чтобы обойти обычную капчу (искаженный текст на изображении), используйте следующий метод. Этот метод также можно использовать для распознавания любого текста на изображении.
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");
Этот метод можно использовать для обхода капчи, которая требует ответа на вопрос в виде открытого текста
Text captcha = new Text();
captcha.SetText("If tomorrow is Saturday, what day is today?");
captcha.SetLang("en");
Используйте этот метод для решения 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");
Этот метод позволяет обходить 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 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. Возвращает набор токенов в формате 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");
Используйте этот метод для решения hCaptcha. Возвращает токен для обхода капчи
HCaptcha captcha = new HCaptcha();
captcha.SetSiteKey("10000000-ffff-ffff-ffff-000000000001");
captcha.SetUrl("https://www.site.com/page/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
Метод решения 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 puzzle
Capy captcha = new Capy();
captcha.SetSiteKey("PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v");
captcha.SetUrl("https://www.mysite.com/captcha/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
Этот метод изначально назывался 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 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 возвращает координаты точек на изображении капчи. Может использоваться, если вам нужно щелкнуть определенные точки на изображении.
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");
Этот метод можно использовать для решения капчи, которая просит повернуть объект. В основном используется для обхода 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
}