Логотип «2Captcha»Перейти на главную страницу
Туториалы по обходу капчи

Эта статья была полезной?

Как обойти капчу с помощью Go

Катя Пушкарёва
Катя Пушкарёва

Технический специалист

Введение

Нужно добавить решение капч в ваш Go-проект? Официальная библиотека 2captcha-go — это самый быстрый способ интегрировать API 2Captcha без ручного написания HTTP-запросов.

В этом руководстве расскажем, почему стоит выбрать именно этот модуль, как его подключить за минуту и какие возможности он открывает для автоматизации любых задач.

Общие сведения

2captcha-go — это официальный Go-клиент для API 2Captcha. Библиотека предоставляет простой интерфейс для отправки задач на распознавание и получения результатов.

Почему этот модуль стоит использовать

  • Единый интерфейс для всех типов капч — не нужно запоминать разные эндпоинты и параметры, библиотека абстрагирует всю сложность
  • Типобезопасность — Go-структуры для каждого типа капчи с проверкой на этапе компиляции
  • Гибкая конфигурация — настраивайте таймауты, интервалы опроса, callback-уведомления под ваш сценарий
  • Встроенная обработка ошибок — типизированные исключения вместо сырых ответов сервера
  • Поддержка прокси из коробки — передавайте прокси прямо в объекте капчи
  • Актуальная поддержка — библиотека развивается вместе с API, все новые типы капч добавляются оперативно

Подготовка окружения

Минимальные требования:

  • Go 1.16 или выше
  • API-ключ из личного кабинета 2Captcha

Установка в одну команду:

bash Copy
go get -u github.com/2captcha/2captcha-go

После установки добавьте импорт в ваш код:

go Copy
import "github.com/2captcha/2captcha-go"

Как устроен модуль

Основной класс: Client

Все взаимодействия с сервисом идут через экземпляр клиента:

go Copy
client := api2captcha.NewClient("YOUR_API_KEY")

Гибкая настройка поведения

Вы можете настроить клиент под свои нужды через поля структуры:

go Copy
client := api2captcha.NewClient("YOUR_API_KEY")
client.SoftId = 123
client.Callback = "https://your.site/result-receiver"
client.DefaultTimeout = 120
client.RecaptchaTimeout = 600
client.PollingInterval = 10

Параметры настройки

Опция По умолчанию Описание
SoftId 4583 ID вашего ПО из каталога 2Captcha для статистики
Callback None URL вашего сервера для получения результата в фоновом режиме
DefaultTimeout 120 Таймаут опроса для всех капч, кроме reCAPTCHA
RecaptchaTimeout 600 Отдельный таймаут для reCAPTCHA
PollingInterval 10 Интервал между запросами к API, не рекомендуется ставить меньше 5

Важно: если задан Callback, методы возвращают только ID задачи и не опрашивают API. Результат придёт отдельным POST-запросом на указанный URL.

Базовый паттерн использования

Независимо от типа капчи, рабочий процесс выглядит одинаково:

go Copy
package main

import (
    "fmt"
    "log"
    "github.com/2captcha/2captcha-go"
)

func main() {
    client := api2captcha.NewClient("YOUR_API_KEY")
    
    // 1. Создаём задачу нужного типа
    // 2. Настраиваем параметры
    // 3. Отправляем и получаем результат
    
    captcha := api2captcha.Normal{
        File: "/path/to/captcha.jpg",
    }
    
    code, err := client.Solve(captcha.ToRequest())
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println("Решение: " + code)
}

Этот шаблон работает для любого типа капчи, меняется только название структуры и набор параметров.

Поддерживаемые типы капч

Модуль покрывает все популярные форматы:

  • Текстовые: Normal, Text, Audio
  • Google: reCAPTCHA v2, reCAPTCHA v3, reCAPTCHA Enterprise
  • Cloudflare: Turnstile
  • Другие провайдеры: GeeTest, GeeTest V4, FunCaptcha, KeyCaptcha, Capy, Lemin, MTCaptcha, DataDome, Amazon WAF, Tencent, CyberSiARA, Yandex, VK Captcha, VK Image, Altcha, Binance, Prosopo, Captchafox, Temu, Cutcaptcha, Friendly Captcha, atbCAPTCHA

Полный список с примерами параметров — в документации по типам капч.

Продвинутые возможности

Режим Callback

Если вы не хотите ждать результат в коде, настройте Callback:

go Copy
client := api2captcha.NewClient("YOUR_API_KEY")
client.Callback = "https://your.site/webhook"

captcha := api2captcha.Normal{
    File: "/path/to/captcha.jpg",
}

id, err := client.Solve(captcha.ToRequest())
// id содержит только ID задачи, результат придёт на ваш сервер

Ручное управление потоком

Для сложных сценариев доступен низкоуровневый контроль:

go Copy
id, err := client.Send(captcha.ToRequest())
if err != nil {
    log.Fatal(err)
}

time.Sleep(10 * time.Second)

code, err := client.GetResult(id)
if err != nil {
    log.Fatal(err)
}

if code == nil {
    log.Fatal("Ещё не готово")
}

fmt.Println("Решение: " + *code)

Работа с прокси

Многие капчи требуют запрос с определённого IP. Передавайте прокси прямо в методе:

go Copy
captcha := api2captcha.ReCaptcha{
    SiteKey: "6Le-wvkS...",
    Url:     "https://example.com",
}

req := captcha.ToRequest()
req.SetProxy("HTTPS", "login:password@123.123.123.123:8000")

code, err := client.Solve(req)

Дополнительные параметры капчи

Для текстовых и некоторых других типов можно уточнить ожидания:

go Copy
captcha := api2captcha.Normal{
    File:          "/path/to/captcha.jpg",
    Numeric:       4,
    MinLen:        4,
    MaxLen:        20,
    Phrase:        true,
    CaseSensitive: true,
    Lang:          "en",
    HintText:      "Введите только заглавные буквы",
}

Отчёты о результатах

Вы можете сообщать о правильных и неправильных ответах:

go Copy
// Решено правильно
err := client.Report(id, true)

// Решено неправильно
err := client.Report(id, false)

Обработка ошибок

Библиотека выбрасывает типизированные исключения. Всегда используйте проверку типов:

go Copy
code, err := client.Solve(captcha.ToRequest())
if err != nil {
    switch e := err.(type) {
    case *api2captcha.ValidationException:
        log.Fatalf("Ошибка валидации: %v", e)
    case *api2captcha.NetworkException:
        log.Fatalf("Ошибка сети: %v", e)
    case *api2captcha.ApiException:
        log.Fatalf("Ошибка API: %v", e)
    case *api2captcha.TimeoutException:
        log.Fatalf("Таймаут: %v", e)
    default:
        log.Fatalf("Неизвестная ошибка: %v", err)
    }
}

Частые коды ошибок

Код Что означает Как исправить
ERROR_WRONG_USER_KEY Неверный API-ключ Проверьте ключ в личном кабинете 2Captcha
ERROR_ZERO_BALANCE Нет средств на балансе Пополните счёт или включите автопополнение
ERROR_NO_SLOT_AVAILABLE Очередь переполнена Повторите запрос позже или увеличьте ставку
ERROR_BAD_PARAMETERS Не хватает обязательных полей Сверьтесь с документацией по типу капчи
ERROR_PROXY_CONNECT_REFUSED Не удалось подключиться через прокси Проверьте формат и доступность прокси
ERROR_CAPTCHA_UNSOLVABLE Капча не распознана Средства возвращаются автоматически

Советы по интеграции

  • Храните ключи безопасно — используйте переменные окружения или библиотеки вроде godotenv, не хардкодьте API-ключ
  • Настраивайте таймауты под задачу — сложные капчи могут решаться дольше, не ставьте слишком короткие лимиты
  • Добавляйте логирование — сохраняйте ID задач и время ответа для отладки и аудита
  • Тестируйте в песочнице — перед запуском в продакшен проверьте интеграцию на тестовом окружении
  • Следите за балансом — настройте уведомления о низком балансе, чтобы избежать простоев
  • Используйте прокси для целевых сайтов — многие капчи требуют запрос с определённого IP

Дополнительные ресурсы

Контрольный список перед запуском

  1. Библиотека установлена через go get
  2. API-ключ получен и сохранён в переменной окружения
  3. Выбран правильный тип капчи и настроены обязательные параметры
  4. Настроены таймауты и интервал опроса под вашу нагрузку
  5. Реализована обработка ошибок с проверкой типов
  6. Протестировано решение с реальными параметрами целевого сайта
  7. При необходимости настроен Callback или прокси

Заключение

Модуль 2captcha-go — это надёжный и удобный способ добавить решение капч в любой Go-проект. Он скрывает сложность API за простым интерфейсом, обеспечивает типобезопасность, гибко настраивается и покрывает все популярные типы капч.

Начните с базовой настройки клиента, выберите нужный тип капчи и добавьте обработку ошибок, этого достаточно для стабильной работы. А когда задача вырастет, библиотека масштабируется вместе с вами: поддерживаются callback-уведомления, ручное управление потоком, прокси и расширенное логирование.

Документация, примеры кода и поддержка 2Captcha помогут быстро разобраться с любым сценарием.

Автоматизируйте обход капч эффективно и с минимальными усилиями — с 2captcha-go.