2Captcha — это сервис автоматического решения и обхода капчи. Лучше всего подходит, если у вас:
- массовая автоматизация, скрейпинг, аккаунтные сценарии и пайплайны;
- несколько типов капч в разных проектах и нужна одна интеграция вместо нескольких;
- продакшн-потоки;
- проекты, где важна предсказуемая интеграция без постоянных переписываний.
Что такое сервис решения капчи и как он работает
Сервис решения капчи — это сервис, который принимает капчу с сайта (картинки, слайдеры, аудио, токены) и возвращает готовое решение.
Без сервиса решения автоматизация живёт недолго: антибот-системы постоянно обновляются и ломают скрипты, рассчитанные на предсказуемое поведение.
2Captcha закрывает эту проблему:
- обходит различные типы капч через стабильный API;
- обновляется под новые типы защит;
- использует гибридный подход: работники + собственные AI-решения.
Как это работает внутри (логика API)
Последовательность:
-
createTask — отправляешь
sitekey, URL и параметры. - getTaskResult — периодически проверяешь статус.
- Вставляешь токен в форму или callback.
Пример кода (Python)
import os
import sys
import time
import json
import requests
CREATE_TASK_URL = "https://api.2captcha.com/createTask"
GET_TASK_RESULT_URL = "https://api.2captcha.com/getTaskResult"
REPORT_CORRECT_URL = "https://api.2captcha.com/reportCorrect"
REPORT_INCORRECT_URL = "https://api.2captcha.com/reportIncorrect"
WEBSITE_URL = os.getenv(
"CAPTCHA_WEBSITE_URL",
"https://2captcha.com/demo/recaptcha-v2",
)
WEBSITE_KEY = os.getenv(
"CAPTCHA_WEBSITE_KEY",
"6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u",
)
POLL_INTERVAL_SEC = 5
TIMEOUT_SEC = 180
def api_post(url: str, payload: dict, timeout: int = 30) -> dict:
r = requests.post(url, json=payload, timeout=timeout)
r.raise_for_status()
data = r.json()
if not isinstance(data, dict):
raise RuntimeError(f"Unexpected JSON response: {data!r}")
if data.get("errorId") not in (0, None):
raise RuntimeError(f"2Captcha API error: {data}")
return data
def create_recaptcha_v2_proxyless_task(client_key: str) -> int:
payload = {
"clientKey": client_key,
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": WEBSITE_URL,
"websiteKey": WEBSITE_KEY,
"isInvisible": False,
},
}
data = api_post(CREATE_TASK_URL, payload)
task_id = data.get("taskId")
if task_id is None:
raise RuntimeError(f"Missing taskId in response: {data}")
return int(task_id)
def wait_for_result(client_key: str, task_id: int) -> tuple[str, dict]:
deadline = time.time() + TIMEOUT_SEC
while time.time() < deadline:
time.sleep(POLL_INTERVAL_SEC)
data = api_post(
GET_TASK_RESULT_URL,
{"clientKey": client_key, "taskId": int(task_id)},
)
status = data.get("status")
if status == "processing":
continue
if status == "ready":
solution = data.get("solution") or {}
token = solution.get("gRecaptchaResponse") or solution.get("token")
if not token:
raise RuntimeError(f"Missing token in solution: {data}")
return str(token), data
raise RuntimeError(f"Unexpected getTaskResult response: {data}")
raise TimeoutError(
f"Timed out waiting for taskId={task_id} after {TIMEOUT_SEC}s"
)
def report_feedback(client_key: str, task_id: int, accepted: bool) -> bool:
url = REPORT_CORRECT_URL if accepted else REPORT_INCORRECT_URL
data = api_post(url, {"clientKey": client_key, "taskId": int(task_id)})
return data.get("status") == "success"
def main() -> None:
client_key = os.getenv("TWOCAPTCHA_API_KEY")
if not client_key:
print("ERROR: env var TWOCAPTCHA_API_KEY is not set", file=sys.stderr)
sys.exit(2)
task_id = create_recaptcha_v2_proxyless_task(client_key)
token, raw = wait_for_result(client_key, task_id)
print("taskId:", task_id)
print("websiteURL:", WEBSITE_URL)
print("websiteKey:", WEBSITE_KEY)
print("token:", token)
if __name__ == "__main__":
main()
Чем 2Captcha лучше чистых AI-решателей
Работники
Чистые AI-солверы отвечают слишком одинаково — антиботы это легко видят.
2Captcha добавляет человеческий фактор и естественный разброс таймингов.
Поддержка разных типов капч
Единый API покрывает почти всё — не нужно подключать разные сервисы.
Единый интерфейс
Работа с reCAPTCHA, Turnstile и GeeTest выглядит одинаково.
Предсказуемые расходы
Нет резких скачков цены от нагрузки.
Работает везде
Selenium, Playwright, Puppeteer, мобильные тесты, серверные скрипты.
Сравнение: 2Captcha vs AI-солверы
| Параметр | 2Captcha | ML-солверы |
|---|---|---|
| Скорость | 0.1–25 сек | 0.1–2 сек |
| Тайминг | Разный, естественный | Одинаковый |
| Типы капч | 30+ | Только популярные |
| Адаптация к новым | Часы | Дни/недели |
| Сложные капчи | Да | Частично |
| Успех | 90%+ | 80–90% |
| Устойчивость к банам | Высокая | Средняя |
| Цена | Чуть выше | Чуть ниже |
Итог:
ML дешевле, но чаще приводит к банам. 2Captcha дороже, но стабильнее.
Частые ошибки
❌ Слишком частые запросы
# Плохо — забанят
while True:
requests.get(f"https://2captcha.com/res.php?id={task_id}")
# Правильно
time.sleep(5)
❌ Повторное создание задачи при NOT_READY
# Плохо
if "NOT_READY" in result:
create_new_task()
# Правильно
if "NOT_READY" in result:
time.sleep(5)
continue
❌ Использование старого токена
Токен живёт ~2 минуты:
token = get_captcha_solution()
submit_form(token) # сразу
❌ Не сообщать о плохих решениях
requests.get(
f"https://2captcha.com/res.php?key={API_KEY}&action=reportbad&id={task_id}"
)
Какие капчи поддерживаются
Популярные
- reCAPTCHA V2
- reCAPTCHA V2 Callback
- reCAPTCHA V2 Invisible
- reCAPTCHA V3
- reCAPTCHA Enterprise
- Cloudflare Turnstile
- FunCaptcha (Arkose Labs)
- Normal Captcha
- Image Captcha
- Amazon Captcha
Менее известные
- GeeTest
- DataDome
- Tencent Captcha
- Audio Captcha
- MTCaptcha
- Number Captcha
- Text Captcha
- Rotate Captcha
- Friendly Captcha
- Math Captcha
- Slider Captcha
- ALTCHA
- Temu Captcha
- Capy Puzzle
- atbCAPTCHA
- VK Captcha
[СЛОТ ДЛЯ КАРТИНКИ #3]
Когда стоит использовать 2Captcha
- На сайте редкая или региональная капча
- Нужны предсказуемые расходы
- Не хочется поддерживать много интеграций
- Антибот банит по таймингам
- Формат капчи часто меняется
Браузерное расширение
Подходит для:
- ручных сценариев;
- QA-тестирования;
- быстрого старта без кода.
Поддержка: Chrome, Firefox, Edge, Opera, Brave.
Интеграции с Selenium и Puppeteer
Есть готовые примеры:
Selenium
- поиск капчи в DOM
- извлечение sitekey
- вставка токена
- обработка перезагрузки страницы
Puppeteer
- детект контейнера капчи
- отправка параметров в createTask
- ожидание результата во время навигации
SDK (официальные)
| Язык | Документация |
|---|---|
| PHP | Обход капчи на PHP |
| Python | Обход капчи на Python |
| Java | Обход капчи на Java |
| C# | Обход капчи на C# |
| Go | Обход капчи на Go |
| Ruby | Обход капчи на Ruby |
| JavaScript | Обход капчи на JS |
Итог
2Captcha сочетает:
- человеческие паттерны поведения,
- широкую поддержку капч,
- единый стабильный API.
Если автоматизация регулярно падает из-за капчи — это разумный выбор.


Top comments (0)