Прокси для крипторыночных данных: зачем они нужны вашей команде
Если вы строите квантовую стратегию, DeFi-аналитику или сервис рыночных данных, вы уже знаете: надёжный поток крипторыночных данных — это не конкурентное преимущество, а базовая необходимость. Проблема в том, что централизованные биржи (CEX) активно защищают свои публичные эндпоинты. IP-рейт-лимиты, географические блокировки, эскалация с 429 до 451 — всё это превращает сбор данных из Binance, Coinbase, OKX и Bybit в инженерную задачу, где прокси становятся не опцией, а инфраструктурой.
Ключевое различие, которое часто упускают: on-chain данные и CEX данные — это два разных мира с разными требованиями к прокси. On-chain данные доступны через RPC-провайдеров (Alchemy, Infura, QuickNode), где прокси редко нужны. CEX-данные — цена, ордербуки, ставки финансирования, ликвидации — требуют продуманной прокси-архитектуры. В этом руководстве мы разберём оба подхода и покажем, как настроить инфраструктуру с ProxyHat.
On-chain vs CEX: два мира, разные требования к прокси
Прежде чем выбирать прокси-стратегию, нужно чётко понимать, какие именно данные вы собираете и откуда. Вот ключевое разделение:
| Источник данных | Примеры | Нужны ли прокси? | Стратегия ротации | Гео-таргетинг |
|---|---|---|---|---|
| CEX REST API | Binance /api/v3/ticker, OKX /api/v5/market | Да, residential | Per-request или sticky 5–15 мин | Критически важен |
| CEX WebSocket | wss://stream.binance.com/ws | Да, residential sticky | Sticky-сессия на время WS | Важен для снижения latency |
| CEX Web UI | Страницы торгов, графики | Да, residential | Per-request | Критически важен |
| On-chain RPC | Alchemy, Infura, QuickNode | Обычно нет | N/A (используйте API-ключи) | Минимальная роль |
| On-chain индексеры | The Graph, Dune, Coingecko | Редко | N/A | Минимальная роль |
Это разделение — отправная точка для всей архитектуры. Давайте разберём каждую категорию подробно.
Почему CEX-скрейпинг требует residential-прокси
IP-рейт-лимиты на публичных эндпоинтах
Крупнейшие биржи публикуют публичные API без аутентификации, но с жёсткими лимитами по IP:
- Binance: 1200 запросов/мин на IP для публичных эндпоинтов, 6000 весовых единиц/мин с API-ключом.
- Coinbase: 10 000 запросов/час на публичный ключ, но публичные эндпоинты без ключа — ещё строже.
- OKX: 20 запросов/2 сек на IP для некоторых эндпоинтов.
- Bybit: 120 запросов/мин без API-ключа на публичные данные.
Для квантовой команды, собирающей ордербуки по 50+ парам каждую секунду, один IP исчерпает лимит за минуты. Residential-прокси с ротацией IP по каждому запросу — это единственный способ масштабировать сбор без регистрации сотен API-ключей.
Географические ограничения
Binance.com блокирует IP из США с 2021 года, возвращая 453 ("Service unavailable in your region"). OKX ограничивает доступ из ряда юрисдикций. Bybit в 2023 году ввёл ограничения для пользователей из Великобритании. Coinbase Pro доступнее, но и там есть региональные различия в доступных парах и данных.
Если ваш сервер в us-east-1, вы не сможете получить доступ к полному набору данных Binance.com без прокси с IP за пределами США. Это не технический нюанс — это фундаментальное ограничение, определяющее архитектуру.
Эскалация 429 → 451
Типичный сценарий: ваша система делает запросы слишком быстро, получает 429 (Too Many Requests), не снижает темп, и биржа эскалирует ответ до 451 (Unavailable For Legal Reasons). После 451 IP часто попадает в бан на часы или дни. Residential-прокси с ротацией предотвращает эту эскалацию: следующий запрос идёт с нового IP, и лимит сбрасывается.
Практическое правило: если вы собираете данные более чем с 10 пар одновременно через REST API, вам нужна ротация IP. Если вы скрейпите больше 30 пар — вам нужна резидентная ротация, потому что датацентровые IP-блоки биржи распознают быстрее.
On-chain данные: RPC-провайдеры и почему прокси там не нужны
On-chain данные — это транзакции, события контрактов, состояние хранилища — всё, что хранится непосредственно в блокчейне. Доступ к ним осуществляется через JSON-RPC эндпоинты, предоставляемые сервисами вроде Alchemy, Infura и QuickNode.
Эти провайдеры используют API-ключи для аутентификации и рейт-лимитов, а не IP-адреса. Ваш лимит определяется тарифным планом, а не количеством исходных IP. Поэтому:
- Ротация прокси не увеличит ваш рейт-лимит на Alchemy — он привязан к API-ключу.
- Географические ограничения минимальны: RPC-провайдеры обслуживают запросы глобально.
- Latency оптимизируется выбором региона RPC-ноды, а не прокси.
Когда прокси всё-таки помогают для on-chain данных
Есть два узких сценария:
- Проблемы с доступностью в определённых регионах. Если Infura ограничен в вашей юрисдикции, residential-прокси в другой стране обойдёт блокировку.
- Параллельные запросы сверх лимита плана. Некоторые команды запускают несколько RPC-ключей и маршрутизируют запросы через разные прокси-сессии для лучшей пропускной способности — но это скорее workaround, чем архитектурное решение.
В большинстве случаев для on-chain данных вам нужен хороший RPC-провайдер, а не прокси. Прокси — это инструмент для CEX-скрейпинга, и именно там мы сосредоточимся дальше.
Архитектура: WebSocket-first, REST с ротацией прокси
Современная архитектура сбора криптоданных должна быть WebSocket-first: если биржа предоставляет публичный WebSocket для нужного вам потока данных, используйте его. WebSocket даёт пуш-обновления вместо поллинга, снижает нагрузку на биржу и уменьшает потребность в ротации IP.
WebSocket: стабильное соединение с sticky-прокси
Для WebSocket вам нужен sticky-прокси — IP, который не меняется на протяжении жизни соединения. Если IP сменится посреди WS-сессии, биржа разорвёт соединение, и вы потеряете данные. С ProxyHat sticky-сессия задаётся через имя пользователя:
import asyncio
import websockets
# Sticky-сессия на 30 минут через ProxyHat
PROXY_URL = "http://user-session-ws-btc-book-30m:PASSWORD@gate.proxyhat.com:8080"
async def stream_binance_orderbook():
uri = "wss://stream.binance.com:9443/ws/btcusdt@depth20@100ms"
# websockets поддерживает HTTP-прокси через proxy-параметр
async with websockets.connect(
uri,
proxy=PROXY_URL,
ping_interval=20,
ping_timeout=10
) as ws:
while True:
msg = await ws.recv()
data = json.loads(msg)
# Обработка данных ордербука
process_orderbook(data)
Ключевые моменты для WS-подключений:
- Используйте
ping_interval=20— биржи закрывают неактивные соединения через 30–60 секунд. - Не меняйте IP во время активной WS-сессии — используйте sticky-флаг.
- При разрыве соединения делайте exponential backoff: 1с, 2с, 4с, 8с, макс. 60с.
- Запускайте 2–3 параллельных WS-подключения с разных sticky-сессий для redundancy.
REST fallback: ротация IP для масштабирования
Не все данные доступны через WebSocket. Ставки финансирования (funding rates), исторические ликвидации, снапшоты тикеров — всё это часто доступно только через REST API. Здесь вступает в игру per-request ротация:
import requests
from itertools import cycle
# Список sticky-сессий для ротации
sessions = [
"http://user-session-rest-1:PASSWORD@gate.proxyhat.com:8080",
"http://user-session-rest-2:PASSWORD@gate.proxyhat.com:8080",
"http://user-session-rest-3:PASSWORD@gate.proxyhat.com:8080",
"http://user-session-rest-4:PASSWORD@gate.proxyhat.com:8080",
"http://user-session-rest-5:PASSWORD@gate.proxyhat.com:8080",
]
proxy_pool = cycle(sessions)
def fetch_funding_rate(symbol: str, exchange: str = "binance") -> dict:
"""Получение ставки финансирования с ротацией прокси."""
proxies = {"http": next(proxy_pool), "https": next(proxy_pool)}
if exchange == "binance":
url = f"https://fapi.binance.com/fapi/v1/fundingRate?symbol={symbol}&limit=1"
elif exchange == "okx":
url = f"https://www.okx.com/api/v5/public/funding-rate?instId={symbol}"
elif exchange == "bybit":
url = f"https://api.bybit.com/v5/market/funding/history?category=linear&symbol={symbol}&limit=1"
response = requests.get(url, proxies=proxies, timeout=10)
if response.status_code == 429:
# Ротация прокси при 429
proxies = {"http": next(proxy_pool), "https": next(proxy_pool)}
response = requests.get(url, proxies=proxies, timeout=10)
response.raise_for_status()
return response.json()
curl: быстрый тест подключения
Перед написанием кода всегда проверяйте подключение через curl:
# Тест доступа к Binance через прокси (IP за пределами США)
curl -x http://user-country-SG:PASSWORD@gate.proxyhat.com:8080 \
"https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"
# Тест доступа к OKX через прокси в Гонконге
curl -x http://user-country-HK:PASSWORD@gate.proxyhat.com:8080 \
"https://www.okx.com/api/v5/market/tickers?instType=SWAP"
# Проверка текущего IP через прокси
curl -x http://user-country-DE:PASSWORD@gate.proxyhat.com:8080 \
https://httpbin.org/ip
Latency: выбор локации прокси под биржу
Для квантовых стратегий latency — это деньги. Лишние 100 мс на маршрутизации прокси могут стоить арбитражную возможность. Вот базовые принципы:
| Биржа | Основной дата-центр | Рекомендуемая локация прокси | Ожидаемая дополнительная latency |
|---|---|---|---|
| Binance | Tokyo (AWS ap-northeast-1) | Сингапур, Япония, Гонконг | 5–20 мс |
| Coinbase | US-East (AWS us-east-1) | US, ЕС (для обхода ограничений) | 10–30 мс |
| OKX | Гонконг / Сингапур | Гонконг, Сингапур | 5–15 мс |
| Bybit | Сингапур | Сингапур, Гонконг | 5–15 мс |
| Kraken | EU (Amsterdam) | ЕС, США | 10–25 мс |
Критическое замечание: если вы собираете данные с бирж, блокирующих определённые регионы, вам нужен прокси в разрешённом регионе рядом с дата-центром биржи. Например, для Binance.com — прокси в Сингапуре (не в США). Для Coinbase — прокси в ЕС, если вам нужен доступ к парам, недоступным в США.
С ProxyHat гео-таргетинг задаётся в имени пользователя:
user-country-SG— IP в Сингапуре для Binance/Bybituser-country-HK— IP в Гонконге для OKXuser-country-DE— IP в Германии для Kraken/European exchangesuser-country-US— IP в США для Coinbase (если доступ разрешён)
Подробнее о доступных локациях — на странице прокси-локаций ProxyHat.
Регулирование и комплаенс
Использование прокси для доступа к биржам находится в серой правовой зоне. Вот что нужно понимать:
Условия использования бирж (ToS)
Большинство CEX прямо запрещают:
- Доступ из запрещённых юрисдикций через VPN/прокси.
- Автоматизированный скрейпинг, нарушающий robots.txt.
- Обход технических мер защиты (rate limits, CAPTCHA).
Нарушение ToS — это не нарушение закона, но биржа может заблокировать ваш аккаунт и IP. Для публичных данных (тикеры, ордербуки) без аутентификации риск ниже, чем для аутентифицированных эндпоинтов.
Регуляторные соображения
- SEC (США): Использование прокси для обхода географических ограничений американских бирж может рассматриваться как нарушение правил SEC, если вы торгуете на основе этих данных в США.
- MiFID II (ЕС): Сбор рыночных данных может подпадать под требования к лицензированию данных, особенно если вы перепродаёте данные как услугу.
- Лицензии на рыночные данные: Биржи (CME, CBOE, NASDAQ) требуют лицензий на коммерческое использование их данных. Криптобиржи пока менее строги, но тренд идёт в этом направлении.
Рекомендация: используйте прокси для сбора публичных данных, которые не требуют аутентификации. Не используйте прокси для обхода географических ограничений, если это нарушает местное законодательство. Если вы перепродаёте данные как сервис — проконсультируйтесь с юристом по лицензированию.
Настройка ProxyHat для криптоданных
ProxyHat предоставляет residential, mobile и datacenter-прокси с гео-таргетингом по странам и городам. Для криптоданных мы рекомендуем следующую конфигурацию:
Residential-прокси для CEX REST API
Residential-IP реже блокируются биржами, потому что выглядят как обычные пользователи. Используйте ротацию per-request для максимальной пропускной способности:
# Per-request ротация (новый IP при каждом запросе)
# Без session-флага — ProxyHat назначает новый IP автоматически
PROXY = "http://user-country-SG:PASSWORD@gate.proxyhat.com:8080"
# Sticky-сессия для WebSocket (IP не меняется 30 минут)
WS_PROXY = "http://user-session-ws-feed-30m-country-SG:PASSWORD@gate.proxyhat.com:8080"
Datacenter-прокси для on-chain RPC
Для RPC-провайдеров (Alchemy, Infura) datacenter-прокси часто достаточно — они дешевле и быстрее. RPC-провайдеры ограничивают по API-ключу, а не по IP:
# Datacenter-прокси для RPC (быстрее и дешевле)
DC_PROXY = "http://user-country-US:PASSWORD@gate.proxyhat.com:8080"
# Пример: запрос к Alchemy RPC через прокси
import requests
response = requests.post(
"https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY",
json={
"jsonrpc": "2.0",
"method": "eth_blockNumber",
"params": [],
"id": 1
},
proxies={"http": DC_PROXY, "https": DC_PROXY}
)
print(f"Current block: {int(response.json()['result'], 16)}")
Комбинированная архитектура
Типичная production-архитектура для квантовой команды:
- WebSocket-каналы (Binance, OKX) → residential sticky-прокси в Сингапуре/Гонконге для real-time данных.
- REST-поллинг (funding rates, liquidations) → residential ротация per-request.
- On-chain RPC (Alchemy, Infura) → прямое подключение или datacenter-прокси для latency.
- Нормализация → единый внутренний формат для всех источников.
Подробнее о тарифах ProxyHat — на странице цен. Документация по настройке — в официальной документации ProxyHat.
Распространённые ошибки и edge-кейсы
1. Использование datacenter-прокси для CEX-скрейпинга
Datacenter-IP-адреса легко идентифицируются биржами. Binance и OKX поддерживают базы данных ASN датацентров (AWS, GCP, Azure) и блокируют целые подсети. Если вы получаете 403 или 453 с datacenter-прокси — переключитесь на residential.
2. Ротация IP во время WebSocket-сессии
Если вы используете per-request ротацию для WS-подключения, биржа увидит, что IP меняется каждые несколько секунд, и закроет соединение. Всегда используйте sticky-сессии для WebSocket.
3. Игнорирование порядка данных и временных меток
При ротации прокси запросы могут приходить не в порядке отправки. Для критичных к последовательности данных (ордербуки, trades) всегда используйте биржевые временные метки (T в Binance, ts в OKX), а не локальные. Это особенно важно для целостности данных — гарантии того, что вы не пропустили событие и не нарушили порядок.
4. Единая точка отказа
Не полагайтесь на один прокси-провайдер для всей инфраструктуры. Имейте fallback: если ProxyHat недоступен, переключитесь на прямое подключение с exponential backoff. Критические потоки данных (ордербуки) должны иметь параллельные WS-подключения через разные сессии.
5. Скорость ротации vs стабильность
Частая ротация IP (каждый запрос) увеличивает пропускную способность, но может вызвать проблемы: биржи могут видеть «мигающие» IP и применять более агрессивные лимиты. Для большинства задач оптимальна ротация каждые 100–300 запросов или sticky-сессия на 5–15 минут.
Ключевые выводы
- On-chain и CEX — разные задачи. RPC-провайдерам не нужны прокси; CEX-биржам — нужны. Не тратьте бюджет на прокси для Alchemy, но обязательно заложите их для Binance.
- WebSocket-first для real-time данных. Используйте WS для ордербуков и trades; REST — для funding rates, ликвидаций и исторических данных.
- Residential-прокси для CEX, datacenter для RPC. Биржи блокируют датацентровые IP; RPC-провайдеры ограничивают по API-ключам.
- Гео-таргетинг критически важен. Binance.com не работает с US-IP; OKX и Bybit предпочитают азиатские IP. Выбирайте локацию прокси рядом с дата-центром биржи.
- Sticky-сессии для WebSocket, ротация для REST. Никогда не меняйте IP посреди WS-соединения.
- Соблюдайте ToS и регулирование. Не используйте прокси для нарушения местного законодательства. Публичные данные — минимальный риск; аутентифицированные эндпоинты — высокий риск.
Готовы настроить инфраструктуру для crypto market data scraping? Начните с тарифов ProxyHat и ознакомьтесь с документацией. Для использования конкретных сценариев — веб-скрейпинг и SERP-мониторинг.






