Прокси для данных криптовалютных рынков: CEX-скрейпинг, on-chain и архитектура

Практическое руководство по сбору рыночных данных с централизованных бирж и блокчейн-нод. Разбираем архитектуру, географию задержек, регуляторные риски и примеры кода с ProxyHat.

Прокси для данных криптовалютных рынков: CEX-скрейпинг, on-chain и архитектура

Два мира криптоданных: on-chain и CEX

Криптоаналитика начинается с фундаментального разделения: on-chain-данные живут в блокчейне и доступны через RPC-провайдеров, а CEX-данные — котировки, стаканы, ставки финансирования, ликвидации — отдаются биржами через REST и WebSocket API. Прокси-инфраструктура для этих двух миров устроена принципиально по-разному.

Для on-chain достаточно надёжного RPC-провайдера (Alchemy, Infura, QuickNode). Прокси нужны лишь для повышения пропускной способности или обхода региональных ограничений. А вот для crypto market data scraping с централизованных бирж residential- и mobile-прокси становятся не вспомогательным инструментом, а критическим компонентом пайплайна.

Почему — разберём по порядку.

Целевые данные: что именно мы собираем

CEX-данные (требуют прокси)

Централизованные биржи — Binance, Coinbase, OKX, Bybit, Kraken — предоставляют публичные API, но с жёсткими лимитами и гео-ограничениями. Основные типы данных:

  • Price feeds — тикеры и свечные данные (OHLCV). Основа для бэктестинга и сигнальных моделей.
  • Orderbook snapshots — глубина стакана по 5–20 уровням. Критичны для оценки ликвидности и slippage-моделирования.
  • Funding rates — ставки бессрочного финансирования на фьючерсах. Индикатор настроения рынка и источник carry-стратегий.
  • Liquidations — данные о принудительных закрытиях позиций. Используются для анализа каскадных ликвидаций и стресс-сценариев.
  • Trade history — потоки сделок в реальном времени. Основа для микроструктурного анализа.

On-chain данные (прокси вторичны)

Блокчейн-данные принципиально публичны и доступны через RPC-узлы или специализированные индексеры:

  • RPC-провайдеры — Alchemy, Infura, QuickNode, Ankr. Дают прямой доступ к состоянию блокчейна через eth_call, eth_getLogs, eth_blockNumber.
  • Индексеры — The Graph, Dune Analytics, Flipside Crypto. Предагрегируют on-chain события в SQL-доступные таблицы.
  • Собственные ноды — для максимального контроля и минимальной задержки. Требуют инфраструктурных инвестиций.

Для on-chain пайплайнов прокси обычно не нужны: RPC-провайдеры авторизуют по API-ключу, а не по IP. Исключение — когда нужно повысить параллелизм или обойти региональные ограничения провайдера.

Почему residential-прокси критичны для CEX-скрейпинга

Биржи защищают свои публичные API несколькими механизмами, каждый из которых по-своему блокирует массовый сбор данных:

IP-based rate limits

Большинство бирж ограничивают запросы по IP-адресу. Binance — 1200 запросов/мин на весовой основе, Coinbase — 10 000 запросов/час, OKX — 20 запросов/2 секунды на публичных эндпоинтах. При масштабном crypto market data scraping одного IP недостаточно даже для мониторинга нескольких пар.

Гео-ограничения

Binance блокирует IP из США (HTTP 451). OKX ограничивает доступ из ряда юрисдикций. Bybit частично блокирует UK-IP для деривативов. Это не просто неудобство — при скрейпинге с datacenter-IP вы получаете не 429, а сразу 451, и IP попадает в чёрный список.

Эскалация 429 → 451

Классический сценарий: квант-команда начинает скрейпинг с датацентровых IP, получает серию 429 (rate limited), продолжает увеличивать нагрузку, и биржа эскалирует до 451 (unavailable for legal reasons). После этого IP-блок сохраняется неделями.

Residential-прокси решают обе проблемы: каждый запрос приходит с нового IP, а residential-адреса не попадают в датацентровые банлисты. Mobile-прокси ещё надёжнее — они имитируют реальных пользователей.

Архитектура: WebSocket-first + REST с ротацией прокси

Правильная архитектура сбора CEX-данных строится на двух принципах:

1. WebSocket — основной канал реального времени

Биржи предоставляют публичные WebSocket-стримы для сделок, стаканов и тикеров. WebSocket-соединение держится открытым, данные приходят пушем — это минимальная нагрузка на API и минимальная задержка.

  • Binance WS: wss://stream.binance.com:9443/ws/btcusdt@trade
  • OKX WS: wss://ws.okx.com:8443/ws/v5/public
  • Bybit WS: wss://stream.bybit.com/v5/public/spot

Для WebSocket residential-прокси нужны в первую очередь для установки соединения — после подключения IP-адрес фиксируется. Sticky-сессии на 10–30 минут обеспечивают стабильность.

2. REST — fallback и исторические данные

REST-эндпоинты нужны для исторических свечей, снимков стакана по запросу, ставок финансирования. Здесь IP-ротация критична: каждый запрос может идти с нового IP через rotating-прокси.

КомпонентПротоколРотация IPТип прокси
Live tradesWebSocketSticky (10–30 мин)Residential / Mobile
Orderbook streamWebSocketSticky (10–30 мин)Residential
Historical klinesRESTPer-requestResidential rotating
Funding ratesRESTPer-requestResidential rotating
Liquidation dataRESTPer-requestResidential rotating
On-chain (RPC)HTTP/WSНе требуетсяDatacenter (опционально)

Примеры реализации

Python: Binance REST с прокси-ротацией

Скрейпинг исторических свечей с ротацией IP через Binance proxy:

import requests
import time
from itertools import cycle

PROXIES = cycle([
    "http://user-country-US:pass@gate.proxyhat.com:8080",
    "http://user-country-GB:pass@gate.proxyhat.com:8080",
    "http://user-country-SG:pass@gate.proxyhat.com:8080",
])

def fetch_klines(symbol, interval, start_ts, end_ts, limit=1000):
    url = "https://api.binance.com/api/v3/klines"
    all_data = []
    current = start_ts
    while current < end_ts:
        proxy = next(PROXIES)
        params = {
            "symbol": symbol,
            "interval": interval,
            "startTime": current,
            "endTime": end_ts,
            "limit": limit,
        }
        resp = requests.get(
            url, params=params,
            proxies={"http": proxy, "https": proxy},
            timeout=10,
        )
        if resp.status_code == 429:
            time.sleep(60)  # backoff
            continue
        if resp.status_code == 451:
            raise RuntimeError("Geo-blocked — switch proxy country")
        data = resp.json()
        if not data:
            break
        all_data.extend(data)
        current = data[-1][6] + 1  # close time + 1ms
        time.sleep(0.1)  # polite pacing
    return all_data

# Получить 1-минутные свечи BTC/USDT за январь 2025
result = fetch_klines("BTCUSDT", "1m", 1704067200000, 1706745599000)

Python: WebSocket Binance через SOCKS5-прокси

Для реалтайм-стримов используем sticky-сессию:

import asyncio
import websockets
from websockets.proxy import connect

SOCKS5_PROXY = "socks5://user-country-US-session-fix1:pass@gate.proxyhat.com:1080"

async def stream_trades(symbol="btcusdt"):
    uri = f"wss://stream.binance.com:9443/ws/{symbol}@trade"
    proxy = connect(SOCKS5_PROXY)
    async with proxy as tunnel:
        async with websockets.connect(uri, proxy=tunnel) as ws:
            async for msg in ws:
                print(msg)  # обработка trade-данных

asyncio.run(stream_trades())

Node.js: OKX REST с ротацией для funding rates

const axios = require('axios');

const PROXY_HOST = 'gate.proxyhat.com';
const PROXY_PORT = 8080;

async function fetchFundingRates(instId = 'BTC-USDT-SWAP') {
  const url = 'https://www.okx.com/api/v5/public/funding-rate';
  const username = `user-country-SG`;
  const password = 'pass';

  const resp = await axios.get(url, {
    params: { instId },
    proxy: {
      host: PROXY_HOST,
      port: PROXY_PORT,
      auth: { username, password },
    },
    timeout: 10000,
  });

  return resp.data.data;
}

fetchFundingRates().then(console.log);

curl: быстрый тест с ProxyHat

# Проверка доступности Binance API через US residential-прокси
curl -x http://user-country-US:pass@gate.proxyhat.com:8080 \
  "https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"

# OKX funding rate через Singapore-прокси
curl -x http://user-country-SG:pass@gate.proxyhat.com:8080 \
  "https://www.okx.com/api/v5/public/funding-rate?instId=BTC-USDT-SWAP"

Латентность: география имеет значение

Для квантовых стратегий задержка в 50–100 мс может быть разницей между прибылью и убытком. География прокси-сервера напрямую влияет на латентность:

БиржаСерверыРекомендуемый прокси-регионОжидаемая латентность
BinanceAWS Tokyo / SingaporeJP, SG, HK5–30 мс
CoinbaseAWS US-EastUS5–20 мс
OKXHK / SingaporeSG, HK, JP10–40 мс
BybitSingaporeSG, JP, HK10–35 мс
KrakenEU (Amsterdam)DE, NL, IE5–25 мс

ProxyHat позволяет геотаргетировать прокси на уровне страны и города:

  • user-country-US — любой US IP для Coinbase
  • user-country-SG — Singapore IP для Binance и OKX
  • user-country-DE-city-frankfurt — Frankfurt IP для Kraken и европейских бирж

Для высокочастотных стратегий комбинируйте WebSocket (минимальная латентность) с прокси в том же дата-центре, где размещены серверы биржи. REST-запросы для исторических данных менее чувствительны к задержкам — здесь можно использовать ротацию IP с приоритетом над латентностью.

On-chain: когда прокси всё-таки нужны

Для большинства on-chain-задач RPC-провайдер достаточен. Но есть сценарии, где прокси добавляют ценность:

Пропускная способность

Alchemy и Infura ограничивают бесплатные планы до 300 CU/сек. При параллельном скрейпинге нескольких блоков можно упереться в лимит. Datacenter-прокси от ProxyHat с ротацией IP позволяют распределить нагрузку по нескольким аккаунтам RPC-провайдера.

Географическая маршрутизация

Некоторые RPC-провайдеры ограничивают доступ из определённых регионов. Datacenter-прокси в нужной юрисдикции решают эту проблему.

Архивирование и бэктестинг

Массовый запрос исторических данных (например, все события Uniswap V3 за год) требует сотен тысяч eth_getLogs-вызовов. Здесь datacenter-прокси с ротацией помогают избежать rate limits.

# On-chain запрос через Infura с datacenter-прокси
curl -x http://user-country-US:pass@gate.proxyhat.com:8080 \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
  "https://mainnet.infura.io/v3/YOUR_PROJECT_ID"

Целостность данных: временные метки и последовательность

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

Гарантия последовательности

При ротации IP между запросами важно гарантировать, что данные приходят в хронологическом порядке. WebSocket-стримы обеспечивают это по определению. Для REST-запросов — всегда используйте параметр startTime и проверяйте endTime каждого батча.

Таймстампы

Биржи возвращают таймстампы в миллисекундах (Binance, OKX) или микросекундах (Bybit). Нормализуйте все таймстампы к единому формату на уровне ETL-пайплайна. Всегда сохраняйте exchange timestamp (время биржи) и local timestamp (время получения) — разница между ними покажет реальную латентность.

Дедупликация

При WebSocket-переподключениях возможны дубли. Храните tradeId или eventHash и дедуплицируйте на уровне ingestion-слоя.

Регуляторные соображения

Сбор криптоданных существует в серой регуляторной зоне. Вот ключевые риски и их митигация:

Условия использования бирж (ToS)

Большинство бирж прямо запрещают скрейпинг в ToS. Binance API Terms запрещают «excessive requests» и «unauthorized data extraction». Практика: публичные API предназначены для использования, но массовый скрейпинг может считаться нарушением ToS. Консультируйтесь с юристом, если строите коммерческий продукт на чужих данных.

Географические ограничения и местное законодательство

Binance блокирует US-IP не просто так — это следствие регуляторного давления SEC и CFTC. Обход гео-блокировок для доступа к данным из США может нарушать local law, а не только ToS биржи. Аналогично — MiFID II в ЕС накладывает требования на рыночные данные. Если вы перепродаёте данные как «market data service», вам нужна лицензия.

Лицензирование рыночных данных

SEC и MiFID II различают «public data» и «market data services». Сбор для внутреннего использования — одна ситуация, перепродажа как SaaS — совсем другая. Для DeFi-аналитики и внутренних моделей риск ниже, для коммерческих data-feeds — выше.

Практическая рекомендация: используйте residential-прокси для обеспечения стабильности и полноты данных, но не для обхода юридических ограничений. Если биржа заблокировала юрисдикцию — убедитесь, что ваш доступ не нарушает местное законодательство.

GDPR и CCPA

CEX-данные не содержат персональную информацию, поэтому GDPR/CCPA минимально применимы. Однако если вы собираете данные, связанные с идентифицируемыми кошельками (on-chain + CEX-корреляция), могут возникнуть обязательства по конфиденциальности.

Сравнение типов прокси для криптоданных

ХарактеристикаResidentialMobileDatacenter
Обход rate limitsОтличноОтличноСредне
Обход гео-блоковОтличноОтличноПлохо
ЛатентностьСредняя (50–200 мс)Высокая (100–500 мс)Низкая (5–30 мс)
Стабильность WSХорошаяСредняяОтличная
ЦенаСредняяВысокаяНизкая
Лучший сценарийREST-скрейпинг CEXУпорные гео-блокиOn-chain RPC, HFT

Оптимальная стратегия: residential-прокси для REST-скрейпинга (ротация IP, обход лимитов), datacenter-прокси для WebSocket (низкая латентность, стабильное соединение) и mobile-прокси для упорных гео-блоков (Binance US, Bybit UK).

Мониторинг и метрики

Для продакшн-пайплайна отслеживайте:

  • Success rate — доля успешных запросов (2xx) от общего числа. Цель: >99% для WS, >97% для REST.
  • Latency p50/p99 — медиана и 99-й перцентиль задержки. Аномалии p99 часто указывают на прокси-проблемы.
  • Rate limit hits — количество 429-ответов. Если >1% — увеличьте пул прокси или снизьте частоту.
  • Geo-block hits — количество 451-ответов. Если >0 — проверьте геотаргетинг прокси.
  • Data gaps — пропуски в таймсериях. Критичны для количественных моделей.

Ключевые выводы

  • Разделяйте on-chain и CEX: для on-chain используйте RPC-провайдеров, прокси — опционально; для CEX прокси — необходимость.
  • WebSocket-first для реалтайм-данных, REST с ротацией для исторических. Не пытайтесь поллить REST для live-данных.
  • Residential-прокси решают 429 и 451: ротация IP снимает rate limits, residential-адреса обходят датацентровые баны.
  • География латентности: US для Coinbase, SEA для Binance/OKX, EU для Kraken. Выбирайте прокси рядом с серверами биржи.
  • Целостность данных важнее скорости: сохраняйте exchange и local timestamps, дедуплицируйте, проверяйте последовательность.
  • Регуляторные риски реальны: не нарушайте местное законодательство при обходе гео-ограничений. Консультируйтесь с юристом для коммерческих data-продуктов.
  • Комбинируйте типы прокси: residential для REST-скрейпинга, datacenter для WebSocket, mobile для упорных гео-блоков.

Готовы построить надёжный пайплайн криптоданных? Начните с планов ProxyHat — residential, mobile и datacenter прокси с геотаргетингом по странам и городам. Для масштабных проектов по exchange API proxies и crypto market data scraping доступна гибкая тарификация по трафику.

Больше о сценариях использования — в наших материалах: веб-скрейпинг и SERP-мониторинг.

Готовы начать?

Доступ к более чем 50 млн резидентных IP в 148+ странах с AI-фильтрацией.

Смотреть ценыРезидентные прокси
← Вернуться в Блог