.NET / C# SDK

Распознавание капчи на C# для асинхронного кода .NET, Selenium и Playwright

Подключите один пакет NuGet, дождитесь через await токена или текста с капчи-картинки, а всю работу CapSkip выполнит на Windows-ПК или сервере под вашим контролем, без счётчика того, как часто обращается ваш код на .NET.

Windows x64·Работает локально, поэтому капча не покидает ваш компьютер
  • NuGet SDK под лицензией MIT
  • Совместим с .NET Standard 2.0
  • Фиксированная плата в месяц
капч в месяц40,000
40.0k250.0k
В других сервисах поштучно, примерно $1.40 за 1000$56.00
CapSkip Bronze, фиксированно$35.00
$21.00остаётся у вас в карманекаждый месяц при таком объёме

Подключить сервис распознавания капчи на C# к решению .NET должно быть так же просто, как добавить любую другую зависимость, и с CapSkip так и есть: выполните dotnet add package CapSkip, создайте CapSkipClient и дождитесь ответа через await. Сам пакет представляет собой тонкую обёртку под лицензией MIT. Основную работу выполняет десктопное приложение CapSkip, установленное там, где у вас стоит Windows (рабочая станция, облачный VPS, выделенный сервер), поэтому капчи никогда не уходят на удалённую ферму распознавания.

У каждого семейства капч есть собственный асинхронный метод. RecaptchaAsync принимает чекбокс, невидимую версию, v3 и Enterprise-варианты виджета Google; TurnstileAsync справляется как с виджетами Cloudflare, так и с полноэкранными страницами проверки; GeetestAsync принимает свежую пару gt и challenge от GeeTest v3; AltchaAsync, CapyAsync, CaptchaFoxAsync, FriendlyCaptchaAsync и AmazonWafAsync закрывают всё остальное. Если вам нужно просто распознавание капчи на C#, NormalAsync превращает искажённую картинку с текстом в символы примерно за 0,1 секунды.

Клиент нацелен на .NET Standard 2.0, поэтому одна ссылка на пакет одинаково подходит для воркера на .NET 8, утилиты WinForms на .NET Framework 4.6.1 и тестового проекта на Selenium. Лицензия представляет собой фиксированную ежемесячную подписку от $35, а решение, уже подключённое к 2Captcha или CapSolver, может оставить свой клиент: приложение CapSkip отвечает ему локально.

Два способа подключения, один движок. Начните с нуля с NuGet SDK или оставьте рабочий .NET-клиент 2Captcha или CapSolver как есть: включите в CapSkip эмулятор этого сервиса и добавьте его в файл hosts, и его запросы будут решаться на вашей машине. Оба пути ведут к одной и той же безлимитной лицензии. Открыть справочник по API

Что этот сервис распознавания капчи для .NET даёт вашему коду на C#

Методы на Task с поддержкой отмены

Каждое решение возвращает Task от SolveResult и принимает CancellationToken, поэтому останавливающийся хост или прерванный запрос ASP.NET Core может аккуратно сбросить незавершённое решение.

Одна ссылка от Framework 4.6.1 до .NET 9

Пакет скомпилирован под .NET Standard 2.0, поэтому один и тот же пакет загружается в .NET с 6 по 9, в .NET Core 2.0 и новее, а также в старых десктопных утилитах на .NET Framework 4.6.1.

Task.WhenAll по фиксированной цене

Запустите пятьдесят решений параллельно через Task.WhenAll или цикл с ограничением через SemaphoreSlim. Цена не меняется, поэтому параллельность ограничивает машина, на которой работает CapSkip, а не ваш счёт.

OCR, обученный на капчах, вместо Tesseract

NormalAsync принимает изображение в виде пути на диске, URL или текста base64 и возвращает его символы примерно за 0,1 секунды. Он читает тысячи искажённых стилей капчи, на которых обычный OCR спотыкается.

Selenium, Playwright для .NET, PuppeteerSharp

SDK никогда не управляет вашим браузером. Считайте sitekey через FindElement или GetAttributeAsync, дождитесь токена через await, затем вставьте его через IJavaScriptExecutor или EvaluateAsync перед нажатием кнопки отправки.

Типизированные результаты и дерево исключений

SolveResult предоставляет Code, UserAgent и значения GeeTest Challenge, Validate и Seccode в виде свойств, а NetworkException, TimeoutException, ValidationException и ApiException наследуются от CapSkipError.

Выберите способ, подходящий вашему проекту на .NET

C#
// dotnet add package CapSkip
using CapSkip;

var solver = new CapSkipClient(host: "127.0.0.1", port: 8080);

var result = await solver.RecaptchaAsync(
    "YOUR_SITEKEY",
    "https://example.com/page-with-recaptcha");

Console.WriteLine(result.Code); // token

Вызовите RecaptchaAsync через await с ключом сайта и URL страницы; после этого result.Code содержит токен, который затем отправит ваша форма или сессия браузера.

Расширение для ручной работы в браузере

Проходите регистрацию или оформление заказа вручную во время отладки? Дополнение для Chrome или Firefox замечает каждую капчу и передаёт её на решение запущенному приложению, без единой строчки на C#.

Пакет NuGet для распознавания капчи

Добавьте его в любой проект .NET и вызывайте строго типизированные асинхронные методы. Для команд на Python, Node.js или PHP есть родственные SDK на том же движке распознавания.

Локальный API для готовых .NET-клиентов

Клиент на C#, написанный для 2Captcha или похожего сервиса, продолжает отправлять привычные запросы. CapSkip отвечает по этому протоколу в вашей собственной сети, поэтому ничего не нужно переписывать.

Направьте тестовый проект на живую страницу reCAPTCHA

Прежде чем CapSkip попадёт в рабочий код, направьте черновое консольное приложение на наше демо reCAPTCHA v2. Оно загружает настоящий виджет, и вы увидите, как RecaptchaAsync возвращает действительно рабочий токен.

От восстановления NuGet до первой решённой капчи

  1. Запустите CapSkip на машине с Windows

    Установите CapSkip на любую рабочую станцию с Windows, VPS или выделенный сервер, доступный вашему коду на .NET, и оставьте его работать в фоне, пока вы пишете код. Скачать установщик

  2. Активируйте тариф или пробный период

    Купите подписку Bronze, Silver или Gold либо активируйте бесплатный 3-дневный пробный период на 500 решений, затем введите полученные по почте данные в приложении, чтобы его активировать. Оформите бесплатный пробный период

  3. Добавьте пакет и вызовите await

    Выполните dotnet add package CapSkip, укажите в CapSkipClient хост и порт из приложения и вызовите через await метод для вашего типа капчи из консольного приложения, службы или теста. Посмотреть все SDK

CapSkip против 2Captcha и CapSolver в коде на C#

Как локальное решение с фиксированной ценой выглядит на фоне облачного API с оплатой за объём, когда ваши сервисы на .NET работают с большой нагрузкой.

ФункцияCapSkip2Captcha / CapSolver
За что вы платитеОдна подписка от $35 в месяц, ничего за каждое решениеКаждое решение, тариф за 1000, оплата по факту
Где решается капчаВнутри CapSkip, на вашем собственном оборудовании с WindowsНа серверах поставщика, иногда людьми-работниками
Счёт после загруженного месяцаТот же, сколько бы задач вы ни ждали через awaitРастёт с каждым решением и каждой повторной попыткой
Кто видит капчуНикто: всё остаётся в вашей сетиТретья сторона получает каждую отправленную вами капчу
Параллельные решенияСтолько потоков, сколько выдержат ваши процессор и памятьДополнительная пропускная способность обычно стоит дополнительных денег
Подключение к .NETПакет NuGet или старый клиент через эмуляциюСобственная клиентская библиотека поставщика
Время решения капчи-картинкиОколо 0,1 секунды, без удалённой очередиКаждое изображение загружается, ждёт в очереди и опрашивается через интернет

Цены

Хватит платить за каждое решение

Выберите лицензию

Лицензия Bronze

$35/ месяц

Подписаться на Bronze

Мгновенная активация лицензии

Оплата помесячно. Отменить подписку можно в любой момент в личном кабинете.

Функции те же. Больше машин, больше производительность.

Каждая машина решает настолько быстро, насколько позволяют её процессор и память. Больше машин означает больше одновременных потоков, поэтому Silver решает вдвое больше капч одновременно, а Gold втрое больше.

  • Безлимитное решение, без дневных ограничений
  • Безлимитные потоки, скорость растёт вместе с оборудованием
  • Точность распознавания от 90% до 100%
  • Прямая замена API основных сервисов распознавания
  • Работает почти с любым инструментом, без программирования
  • REST API, SDK и расширение для браузера
  • Бесплатное обучение, когда появляется новый тип капчи
  • Работает на вашей машине, ничего с неё не уходит

Каждый тип капчи, показанный выше, входит в любую лицензию. Посмотреть список типов

Просто хотите сначала попробовать?

Начните с бесплатного 3-дневного пробного периода и решите 500 капч любого типа на своих целевых сайтах.

Оформите бесплатный пробный период

Как решать капчу на C#: от HttpClient до задач Hangfire

В коде на .NET капча обычно появляется в одном из трёх мест: в HttpClient, который отправляет форму, в сессии Selenium или Playwright, управляющей настоящим браузером, или в фоновой задаче, которая работает без присмотра. Один экземпляр CapSkipClient обслуживает все три случая; отличается только то, что вы делаете с ответом.

При работе с HttpClient получите ключ сайта или скачайте изображение с cookies сессии этой формы, вызовите через await подходящий метод, затем добавьте result.Code в FormUrlEncodedContent вашего POST-запроса в поле, которое читает целевая форма, обычно g-recaptcha-response. Странице проверки Cloudflare также нужны значения data и pagedata в параметрах, а следующий запрос должен идти с result.UserAgent.

Внутри сессии браузера SDK не трогает драйвер. Ваш тест считывает ключ из элемента, вызывает через await RecaptchaAsync или TurnstileAsync с driver.Url, записывает токен обратно через IJavaScriptExecutor или EvaluateAsync и отправляет форму. Эти токены действуют всего несколько минут, поэтому запрашивайте их непосредственно перед отправкой, а не в начале длинного теста.

Именно в автономной работе фиксированная лицензия окупается сполна. Задача Hangfire или hosted worker может повторить неудачное решение, работать по расписанию всю ночь и распараллеливаться через Task.WhenAll, и никому не нужно пополнять баланс. Перехватите CapSkipError один раз, чтобы записать в лог недоступное приложение, отклонённый параметр или тайм-аут, и передавайте CancellationToken задачи в каждый вызов, чтобы завершающийся хост никогда не зависал на незавершённом решении.

Уходите с CapSolver или 2Captcha, но хотите сохранить его .NET-клиент? На машине с CapSkip включите эмулятор этого сервиса и воспользуйтесь в приложении опцией файла hosts. Существующий код на C# остаётся нетронутым, а типы капч, которые он уже отправляет, решаются локально.

Руководства по теме: reCAPTCHA v2 на C# · Страница проверки Turnstile на C# · Капча в задачах Hangfire

Какой пакет NuGet установить, чтобы решать капчу в .NET?
Установите пакет с названием CapSkip, либо командой dotnet add package CapSkip, либо Install-Package CapSkip в консоли диспетчера пакетов Visual Studio. Он распространяется под лицензией MIT и оборачивает локальный API приложения CapSkip в асинхронные методы, по одному на каждый тип капчи, от RecaptchaAsync до NormalAsync.
Будет ли одна сборка пакета работать и на .NET Framework 4.6.1, и на .NET 8?
Да. Библиотека нацелена на .NET Standard 2.0, который поддерживают обе среды выполнения, а также .NET 6, 7 и 9 и .NET Core 2.0 или новее. Для старых платформ NuGet сам восстановит System.Text.Json, так что вручную ничего подключать не нужно.
Как вставить решённый токен reCAPTCHA в страницу Selenium WebDriver на C#?
Найдите виджет через FindElement, считайте его sitekey и вызовите через await RecaptchaAsync с этим ключом и driver.Url. Затем задайте скрытое поле g-recaptcha-response через IJavaScriptExecutor.ExecuteScript и отправьте форму. Для невидимых, Enterprise или v3 виджетов передайте словарь параметров, где invisible или enterprise равно 1, либо version равно v3 вместе с action страницы.
Справляется ли .NET SDK с полноэкранной проверкой Cloudflare, а не только с виджетом Turnstile?
Да. Для одного виджета вызовите через await TurnstileAsync с sitekey и URL, затем отправьте result.Code в поле cf-turnstile-response. Полноэкранной проверке нужны ещё два значения: скопируйте строки data и pagedata этой страницы в словарь параметров и выполните следующий запрос с идентификатором браузера, возвращённым в result.UserAgent.
Безопасно ли блокировать асинхронные методы в WinForms или консольной утилите?
В консольном приложении или фоновом потоке вызов GetAwaiter().GetResult() на возвращённом Task работает без проблем. В UI-потоке WinForms или внутри ASP.NET Core лучше использовать await, потому что блокировка там замораживает окно или занимает поток запроса, пока идёт решение.
Как отменить медленное решение или изменить его лимит времени в .NET?
Передайте CancellationToken в любой метод, и его отмена остановит и отправку, и опрос. Конструктор CapSkipClient также принимает defaultTimeout, 120 секунд для капч-картинок, и recaptchaTimeout, 300 секунд для reCAPTCHA и других браузерных типов. Решение, вышедшее за свой лимит, выбрасывает TimeoutException.
Может ли клиент CapSolver или 2Captcha на C# работать дальше без изменений?
Да. В приложении CapSkip включите эмулятор, соответствующий этому сервису, затем добавьте его в файл hosts на том же экране. Клиент продолжает обращаться по привычному адресу, поддерживаемые типы капч решаются на вашей машине, а плата за каждое решение прекращается.
Достаточно ли Tesseract для распознавания капчи на C#?
Редко. Tesseract настроен на чистый печатный текст, а изображения капчи намеренно искажены, поэтому он часто ошибается. NormalAsync отправляет изображение в CapSkip, который читает тысячи стилей капчи примерно за 0,1 секунды, а новый стиль, который распознаётся плохо, можно бесплатно дообучить.

Подключите CapSkip в следующей сборке .NET

Установите приложение, добавьте пакет NuGet и получите первый токен через await за считаные минуты. С этого момента каждое решение, которое запрашивает ваш код на C#, покрывается той же ежемесячной ценой при любом объёме.