Эта статья была полезной?
Как обойти капчу 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
{
"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
{
"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
{
"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
- Откройте DevTools (F12)
- Перейдите на вкладку Network
- Активируйте капчу на странице Binance
- Найдите запросы к
/request/precheckили/getCaptcha - В параметрах запроса или ответа найдите:
bizId,bizTypeилиbizCode→ этоwebsiteKeyvalidateIdилиsecurityCheckResponseValidateId→ этоvalidateId
Способ 2: Через JavaScript
Выполните этот скрипт в консоли браузера перед загрузкой капчи:
javascript
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
pip install 2captcha-python
Базовый пример
python
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вместоwebsiteKeypageurlвместоwebsiteURLvalidate_idвместоvalidateId
Решение с дополнительными параметрами
python
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
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
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
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 позволяет автоматизировать её обход двумя способами:
- Прямые HTTP-запросы к API — полный контроль, подходит для кастомных интеграций
- SDK — удобная обёртка, скрывающая рутину
Ключевая особенность работы с Binance captcha — динамические параметры (websiteKey и validateId), которые меняются при каждом рендеринге. Их нужно извлекать программно или через DevTools перед отправкой задачи.
Начните с прямого API запроса, чтобы понять механику, затем перейдите на SDK для удобства. Добавьте обработку исключений и при необходимости подключите прокси или webhook. Этого достаточно для стабильной интеграции.