Как поднять свой сервис решения капчи и перестать платить внешним API
Репозиторий давно не обновлялся
Последнее обновление было 6 месяцев назад.
Представьте ситуацию: вы пишете парсер или автоматизируете рутинную задачу, и тут она — капча. Сначала кажется, что проще всего подключить какой-нибудь платный сервис. Но когда запросов становится много, счета начинают кусаться, а задержки API стороннего сервиса ломают всю логику работы. Я недавно наткнулся на проект ohmycaptcha, который предлагает альтернативный путь: развернуть собственный сервер для решения капчи прямо у себя.
Проект представляет собой self-hosted решение, которое мимикрирует под API популярного сервиса YesCaptcha. Это значит, что если ваш софт уже умеет работать с подобными сервисами, переезд на свое решение займет примерно пять минут — достаточно просто поменять URL в конфиге.
Что под капотом
Автор собрал в одном месте довольно серьезный стек. В основе лежит FastAPI для обработки запросов и Playwright для управления браузером. Самое интересное начинается там, где обычные скрипты пасуют. Для решения графических задач проект использует мультимодальные модели, такие как Qwen3.5-2B.
Система разделяет задачи на два типа. Простые текстовые или графические капчи щелкаются локальными легковесными моделями. Сложные вещи, требующие «человеческого» поведения в браузере (вроде Cloudflare Turnstile или reCAPTCHA v3), прогоняются через Playwright.
Возможности которые реально работают
В репозитории заявлена поддержка 19 типов задач. Это покрывает почти все, что встречается в дикой природе интернета:
- Браузерная автоматизация. Сюда входят reCAPTCHA v2/v3 (включая Enterprise версии), hCaptcha и тот самый вредный Turnstile от Cloudflare.
- Распознавание изображений. Есть классический ImageToText и более продвинутые классификаторы.
- Специфические задачи. Проект умеет работать с FunCaptcha и сетками AWS.
Интересно реализована работа с моделями. Вы можете использовать локальный бэкенд через SGLang или vLLM (например, запустить Qwen локально на своей GPU), а можете пробросить запросы в любое OpenAI-совместимое облако, если локальных мощностей не хватает.
Как это запустить
Для старта не нужно быть системным администратором. Если у вас есть Python и установленный Playwright, запуск выглядит стандартно:
# Ставим зависимости
pip install -r requirements.txt
playwright install --with-deps chromium
# Настраиваем ключи и эндпоинты (можно через .env)
export CLIENT_KEY="ваш-секретный-ключ"
python main.py
После этого сервер поднимается на 8000 порту и готов принимать задачи. Проверить работоспособность можно обычным curl-запросом к эндпоинту /api/v1/health.
Практическая польза
Зачем это нужно, если есть готовые фермы с индусами или огромными GPU-кластерами?
Во-первых, приватность. Ваши данные и токены не улетают на сторону. Во-вторых, контроль задержек. Когда сервис крутится в той же локальной сети, что и ваш основной скрипт, сетевой оверхед минимален. В-третьих, это банально дешевле на больших объемах.
Кстати, автор предусмотрел деплой не только на свое железо. В документации есть инструкции по развертыванию на Render или Hugging Face Spaces. Это удобно, если хочется потестить возможности без настройки локального окружения.
Нюансы и ограничения
Проект выглядит бодро, но стоит учитывать пару моментов. Задачи хранятся в оперативной памяти с TTL в 10 минут. Если сервер упадет, очередь очистится. Также успех решения через браузер сильно зависит от репутации вашего IP. Если вы пытаетесь решать reCAPTCHA v3 с «забаненного» дата-центра, результат будет предсказуемо плохим.
Документация двуязычная (английский и китайский), местами лаконичная, но кода в репозитории достаточно, чтобы разобраться в деталях реализации.
Стоит ли пробовать
Если вы занимаетесь автоматизацией, парсингом или тестированием интерфейсов, ohmycaptcha — отличный инструмент в арсенале. Он не идеален и не является «серебряной пулей», которая откроет любую дверь, но как база для собственного сервиса распознавания он очень хорош.
Особенно проект зайдет тем, кто уже использует flow2api или похожие интеграции, так как протокол обмена данными здесь полностью совместим. Если у вас есть свободная видеокарта или просто желание поднять свой маленький сервис-решатель, загляните в этот репозиторий. По крайней мере, это отличный пример того, как современный стек из FastAPI и ML-моделей позволяет решать задачи, которые еще пару лет назад казались неподъемными для одного разработчика.
