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

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

Как обойти капчу Binance

Ник Макбейн
Ник Макбейн

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

Введение

Binance Captcha — это собственная система верификации крупнейшей криптовалютной биржи, которая защищает критически важные операции: вход в аккаунт, регистрацию и вывод средств. В отличие от сторонних решений вроде reCAPTCHA, Binance использует кастомные визуальные задания: выбор объектов на изображениях и слайдеры для совмещения элементов.

Помимо визуальной проверки, система применяет дополнительные уровни защиты: фингерпринтинг устройства, поведенческий анализ и отслеживание траектории движения курсора. Капча появляется адаптивно — при использовании VPN, приватной сессии или попытке входа с несуществующим аккаунтом.

В этом руководстве я покажу, как автоматизировать обход Binance captcha через API 2Captcha. Мы разберём два подхода: прямые HTTP-запросы к API и с использованием официального SDK на Python.

Как устроена Binance captcha

Binance captcha появляется не всегда — система оценивает риск на основе IP-адреса, характеристик браузера и истории взаимодействий. Когда уровень подозрительности превышает порог, пользователю предлагается пройти визуальную проверку.

Типы заданий:

  • Клик по изображениям — выбрать определённый объект из сетки (животные, предметы, транспорт)
  • Слайдер — переместить элемент для совмещения фигуры

Данные о решении, включая координаты кликов и траекторию движений, шифруются и отправляются на серверы Binance для валидации.

Прямой API запрос (API v2)

Параметры API

Для метода BinanceTaskproxyless (без прокси):

Параметр Тип Обязателен Описание
type Строка Да Тип задачи: BinanceTaskproxyless
websiteURL Строка Да Полный URL страницы, где загружена капча
websiteKey Строка Да Значение bizId, bizType или bizCode из запросов страницы
validateId Строка Да Динамическое значение validateId, securityId или securityCheckResponseValidateId
userAgent Строка Нет User-Agent браузера, из которого взята капча

Для метода BinanceTask (с прокси) дополнительно:

Параметр Тип Обязателен Описание
type Строка Да Тип задачи: BinanceTask
proxyType Строка Да Тип прокси: http, socks4, socks5
proxyAddress Строка Да IP-адрес или имя хоста прокси-сервера
proxyPort Целое число Да Порт прокси-сервера
proxyLogin Строка Нет Логин для аутентификации на прокси
proxyPassword Строка Нет Пароль для аутентификации на прокси

Важно: значения websiteKey и validateId являются динамическими — они меняются при каждом рендеринге страницы с Binance.

Формат запроса (JSON)

Собрав параметры из таблиц выше, получаем структуру запроса:

Без прокси (BinanceTaskproxyless):

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
      "type": "BinanceTaskproxyless",
      "websiteURL": "https://example.com/page-with-binance",
      "websiteKey": "login",
      "validateId": "cb0bfefa598...e54ecd57b",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
    }
}

С прокси (BinanceTask):

json Copy
{
    "clientKey": "YOUR_API_KEY",
    "task": {
      "type": "BinanceTask",
      "websiteURL": "https://example.com/page-with-binance",
      "websiteKey": "login",
      "validateId": "cb0bfefa598...e54ecd57b",
      "proxyType": "http",
      "proxyAddress": "1.2.3.4",
      "proxyPort": 8080,
      "proxyLogin": "login",
      "proxyPassword": "password"
    }
}

Пример ответа API

json Copy
{
    "errorId": 0,
    "status": "ready",
    "solution": {
        "token": "captcha#09ba4905a79f44f...kc99ma5943qIsquNP9D77",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
    }
}

Как найти websiteKey и validateId

Способ 1: Через DevTools Network

  1. Откройте DevTools (F12)
  2. Перейдите на вкладку Network
  3. Активируйте капчу на странице Binance
  4. Найдите запросы к /request/precheck или /getCaptcha
  5. В параметрах запроса или ответа найдите:
    • bizId, bizType или bizCode → это websiteKey
    • validateId или securityCheckResponseValidateId → это validateId

Способ 2: Через JavaScript

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

javascript Copy
let originalBCaptcha = window.BCaptcha;
let BCaptchaData;

Object.defineProperty(window, 'BCaptcha', {
  get: function() {
    return function(args) {
      const BCaptcha = new originalBCaptcha(args);
      let BCaptchaShow = BCaptcha.__proto__.show;

      BCaptcha.__proto__.show = function(args) {
        BCaptchaData = args;
        console.log('websiteKey:', args.bizId);
        console.log('validateId:', args.validateId);
        return 1;
      };

      return BCaptcha;
    };
  }
});

После появления капчи параметры появятся в консоли.

SDK (обёртка над API)

Если не хотите работать с сырыми HTTP-запросами и JSON, используйте официальный Python SDK. Это библиотека-обёртка, которая упрощает работу с API:

  • Не нужно вручную формировать JSON
  • Не нужно делать HTTP-запросы
  • Не нужно парсить ответы
  • Встроенная обработка ошибок и таймаутов

Вместо этого вы просто вызываете готовые методы, как solver.binance().

Установка

bash Copy
pip install 2captcha-python

Базовый пример

python Copy
import sys
import os

from twocaptcha import TwoCaptcha

# Храните ключ в переменных окружения:
# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 (Linux/macOS)
# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 (Windows)

api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')

solver = TwoCaptcha(api_key)

try:
    result = solver.binance(
        sitekey='register',
        pageurl='https://mysite.com/page/with/binance',
        validate_id='e20c622fa9384952832fc1c2a6b75c0a',
    )

except Exception as e:
    sys.exit(e)

else:
    sys.exit('result: ' + str(result))

Обратите внимание: SDK использует другие названия параметров:

  • sitekey вместо websiteKey
  • pageurl вместо websiteURL
  • validate_id вместо validateId

Решение с дополнительными параметрами

python Copy
import sys
import os

from twocaptcha import TwoCaptcha

api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')

config = {
    'server': '2captcha.com',  # или 'rucaptcha.com'
    'apiKey': api_key,
    'softId': 123,
    'defaultTimeout': 120,
    'recaptchaTimeout': 600,
    'pollingInterval': 10,
}

solver = TwoCaptcha(**config)

try:
    result = solver.binance(
        sitekey='register',
        pageurl='https://mysite.com/page/with/binance',
        validate_id='e20c622fa9384952832fc1c2a6b75c0a',
        useragent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/148.0.0.0 Safari/537.36",
        # proxy={'type': 'HTTP',
        #        'uri': 'login:password@IP_address:PORT'}
    )

except Exception as e:
    sys.exit(e)

else:
    sys.exit('result: ' + str(result))

Продвинутая настройка

Конфигурация клиента SDK

python Copy
config = {
    'server': '2captcha.com',  # или 'rucaptcha.com'
    'apiKey': api_key,
    'softId': 123,
    'defaultTimeout': 120,      # таймаут для всех капч
    'recaptchaTimeout': 600,    # таймаут для reCAPTCHA
    'pollingInterval': 10,      # интервал опроса в секундах
}

solver = TwoCaptcha(**config)

Асинхронный режим через Callback

Если ваше приложение не должно ждать ответа, настройте вебхук. Метод solver.binance() остаётся тем же, но результат придёт POST-запросом на указанный URL:

python Copy
solver = TwoCaptcha(api_key)
solver.callback = 'https://your-app.com/captcha/webhook'

result = solver.binance(
    sitekey='register',
    pageurl='https://mysite.com/page/with/binance',
    validate_id='e20c622fa9384952832fc1c2a6b75c0a'
)

Отладка и обработка исключений

SDK выбрасывает специализированные ошибки:

python Copy
try:
    result = solver.binance(
        sitekey='register',
        pageurl='https://mysite.com/page/with/binance',
        validate_id='e20c622fa9384952832fc1c2a6b75c0a'
    )
    print(f"Результат: {result}")
except ValidationException as e:
    print(f"Некорректные параметры: {e}")
except NetworkException as e:
    print(f"Ошибка сети: {e}")
except TimeoutException as e:
    print(f"Превышено время ожидания: {e}")
except ApiException as e:
    print(f"Ошибка API: {e}")

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

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

Что проверить перед запуском

  • Ключ API загружен из переменных окружения
  • Параметр websiteURL (или pageurl в SDK) указывает на полную страницу с капчей
  • websiteKey (или sitekey в SDK) извлечён динамически (bizId/bizType/bizCode)
  • validateId (или validate_id в SDK) получен из текущего рендеринга капчи
  • User-Agent соответствует браузеру, из которого взят validateId
  • При использовании прокси проверен формат и доступность
  • Настроен блок try/except (для SDK) или обработка ошибок (для API)
  • Интеграция протестирована на реальной странице Binance

Код

Готовые примеры реализации для популярных языков программирования доступны в официальном репозитории:
https://github.com/2captcha

Документация API:
https://rucaptcha.com/api-docs/binance-captcha

Заключение

Binance captcha — это многоуровневая система защиты, которая сочетает визуальные задания с поведенческим анализом и фингерпринтингом. API 2Captcha позволяет автоматизировать её обход двумя способами:

  1. Прямые HTTP-запросы к API — полный контроль, подходит для кастомных интеграций
  2. SDK — удобная обёртка, скрывающая рутину

Ключевая особенность работы с Binance captcha — динамические параметры (websiteKey и validateId), которые меняются при каждом рендеринге. Их нужно извлекать программно или через DevTools перед отправкой задачи.

Начните с прямого API запроса, чтобы понять механику, затем перейдите на SDK для удобства. Добавьте обработку исключений и при необходимости подключите прокси или webhook. Этого достаточно для стабильной интеграции.