Dane on-chain vs dane giełdowe — dwa różne światy
Proxy dla danych rynkowych kryptowalut rozwiązują problemy tylko jednego z dwóch głównych źródeł danych krypto. Zrozumienie tej różnicy jest kluczowe, zanim zainwestujesz w infrastrukturę proxy.
Dane on-chain to wszystko, co żyje na blockchainie — stany kont, zdarzenia tokenów, logi smart kontraktów, transfery. Dostęp uzyskujesz przez węzły RPC (Remote Procedure Call) lub indeksery takie jak Alchemy, Infura czy QuickNode, zgodnie ze specyfikacją Ethereum JSON-RPC. Te usługi mają własne limity i modele cenowe, ale rzadko blokują adresy IP w sposób, który wymaga rotacji proxy.
Dane giełdowe (CEX) to ceny, orderbooki, funding rates, likwidacje i wolumeny z centralnych giełd: Binance, Coinbase, OKX, Bybit. Tutaj problemy z IP są realne — giełdy stosują limity wagowe, geo-blokady i eskalację kodów błędów od 429 do 451.
| Aspekt | Dane on-chain (RPC) | Dane giełdowe (CEX) |
|---|---|---|
| Źródło | Węzły blockchain (Ethereum, Solana) | API Binance, Coinbase, OKX, Bybit |
| Typ danych | Stany kont, zdarzenia, logi | Ceny, orderbook, funding rates, likwidacje |
| Potrzeba proxy | Minimalna — użyj dostawcy RPC | Wysoka — limity IP, geo-blokady |
| Latencja | 200–800 ms (zależna od RPC) | 50–200 ms (WebSocket) |
| Limit | Zależny od planu RPC | 1200 wag/60 s (Binance), 600 req/min (Coinbase) |
Dlaczego proxy dla danych rynkowych kryptowalut mają znaczenie przy scrapingu CEX
Crypto market data scraping napotyka trzy główne przeszkody na giełdach centralnych:
- Limity IP — Binance stosuje system wagowy z limitem 1200 wag na 60 sekund na adres IP. Przekroczenie generuje HTTP 429, a powtarzające się naruszenia mogą eskalować do HTTP 451 lub trwałego banu IP.
- Geo-blokady — Binance blokuje adresy IP z USA, co wymusza użycie proxy w innej jurysdykcji. Coinbase i Kraken mają podobne ograniczenia dla wybranych regionów.
- Eskalacja 429 → 451 — gdy skrypt ignoruje nagłówki
Retry-After, giełda może trwale zablokować IP, zwracając 451 zamiast tymczasowego 429.
Według dokumentacji API Binance, giełda zaleca odczekanie i ponowienie żądania przy 429, ale nie gwarantuje odblokowania IP po eskalacji. To sprawia, że rotacja proxy jest niezbędna dla zespołów pobierających dane z wielu endpointów jednocześnie.
Typy danych giełdowych do pobierania
- Price feeds — aktualne ceny tickerów (
/ticker/pricena Binance,/productsna Coinbase). - Orderbook snapshots — głębokość rynku (
/depthz parametremlimit=1000). - Funding rates — stopy finansowania dla instrumentów perpetual (kluczowe dla strategii arbitrażowych).
- Likwidacje — zdarzenia likwidacji pozycji (często dostępne tylko przez WebSocket).
- Dane historyczne (klines/candlesticks) — dane OHLCV dla backtestingu strategii.
Podejście on-chain: RPC i indeksery
Dla danych on-chain proxy zazwyczaj nie są potrzebne. Dostawcy RPC tacy jak Alchemy, Infura czy QuickNode oferują dedykowane endpointy z autoryzacją kluczem API. Limity są zarządzane na poziomie konta, nie IP.
Warto jednak rozważyć proxy w dwóch scenariuszach:
- Przepustowość — gdy potrzebujesz więcej żądań niż oferuje Twój plan RPC, możesz rozproszyć ruch przez wiele adresów IP z proxy, ale to obejście jest delikatne i lepiej przejść na wyższy plan.
- Geo-dystrybucja — niektórzy dostawcy RPC routują żądania do najbliższego węzła. Proxy w regionie blisko węzła RPC może obniżyć latencję o 50–100 ms.
Większość zespołów quant powinna po prostu używać dostawcy RPC z odpowiednim planem i skupić proxy na scrapingu CEX.
Architektura: WebSocket-first z fallbackiem REST
Najlepsza praktyka dla crypto market data scraping to architektura dwuwarstwowa:
- Warstwa WebSocket — dla danych real-time (ceny, orderbook updates, likwidacje). Giełdy takie jak Binance i OKX udostępniają publiczne strumienie WS bez autoryzacji.
- Warstwa REST z rotacją proxy — dla snapshotów, danych historycznych i fallbacku, gdy WS jest niedostępny.
WebSocket zazwyczaj nie wymaga proxy, bo połączenia są utrzymywane i limity IP nie kumulują się tak jak przy REST. Jednak niektóre giełdy ograniczają liczbę jednoczesnych połączeń WS z jednego IP — Binance dopuszcza 5 połączeń na IP z maksymalnie 1024 strumieniami każde.
Przykład 1: curl z ProxyHat dla Binance REST
curl -x http://user-country-DE:pass@gate.proxyhat.com:8080 \
"https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT"
Używamy niemieckiego IP, aby ominąć blokadę US. Parametr country-DE w nazwie użytkownika ProxyHat wymusza geo-targeting.
Przykład 2: Python requests z rotacją sesji
import requests
import itertools
PROXY_TEMPLATE = "http://user-session-{sid}:pass@gate.proxyhat.com:8080"
BINANCE_DEPTH = "https://api.binance.com/api/v3/depth"
session_ids = itertools.cycle(["sess-001", "sess-002", "sess-003", "sess-004"])
def fetch_orderbook(symbol, limit=100):
sid = next(session_ids)
proxies = {
"http": PROXY_TEMPLATE.format(sid=sid),
"https": PROXY_TEMPLATE.format(sid=sid)
}
resp = requests.get(
BINANCE_DEPTH,
params={"symbol": symbol, "limit": limit},
proxies=proxies,
timeout=10
)
resp.raise_for_status()
return resp.json()
pairs = ["BTCUSDT", "ETHUSDT", "SOLUSDT", "BNBUSDT", "XRPUSDT"]
for pair in pairs:
book = fetch_orderbook(pair)
print(f"{pair}: bid={book['bids'][0][0]}, ask={book['asks'][0][0]}")
Każde żądanie używa innej sesji sticky, co oznacza inny adres IP. ProxyHat utrzymuje sesję przez cały okres życia identyfikatora, zapewniając spójność IP dla wielokrotnych żądań w ramach jednej sesji.
Przykład 3: WebSocket przez SOCKS5 proxy
import asyncio
import websockets
from python_socks.async_.asyncio import Proxy
async def binance_ws():
proxy = Proxy.from_url(
"socks5://user-country-DE:pass@gate.proxyhat.com:1080"
)
sock = await proxy.connect(
dest_host="stream.binance.com",
dest_port=9443
)
uri = "wss://stream.binance.com:9443/ws/btcusdt@depth"
async with websockets.connect(uri, sock=sock) as ws:
while True:
msg = await ws.recv()
print(msg)
asyncio.run(binance_ws())
SOCKS5 na porcie 1080 jest preferowany dla WebSocketów, bo wspiera tunelowanie TCP bez narzutów HTTP. Używamy go, gdy potrzebujemy geo-maskowania dla połączeń WS.
Przykład 4: Node.js z rotacją per-request
const axios = require("axios");
const HttpsProxyAgent = require("https-proxy-agent");
const symbols = ["BTCUSDT", "ETHUSDT", "SOLUSDT"];
const base = "https://api.binance.com/fapi/v1";
async function fetchFundingRate(symbol, sessionId) {
const agent = new HttpsProxyAgent(
`http://user-session-${sessionId}:pass@gate.proxyhat.com:8080`
);
const resp = await axios.get(`${base}/premiumIndex`, {
params: { symbol },
httpsAgent: agent,
timeout: 8000
});
return resp.data;
}
(async () => {
const results = await Promise.all(
symbols.map((s, i) =>
fetchFundingRate(s, `fund-${Date.now()}-${i}`)
)
);
results.forEach((r, i) => {
console.log(`${symbols[i]}: funding=${r.lastFundingRate}`);
});
})();
Każde żądanie funding rate otrzymuje unikalny identyfikator sesji, co gwarantuje rotację IP. To kluczowe dla endpointów z niskimi limitami wagowymi.
Latencja i wybór lokalizacji proxy
W crypto market data scraping latencja ma znaczenie — szczególnie dla strategii arbitrażowych i monitoringu orderbook w czasie rzeczywistym. Wybór lokalizacji proxy powinien odpowiadać lokalizacji serwerów giełdy:
| Giełda | Region serwerów API | Rekomendowana lokalizacja proxy |
|---|---|---|
| Binance | Azja Płd.-Wsch. (głównie), globalne CDN | Singapur, Japonia (SEA) |
| Coinbase | USA (us-east) | USA, Niemcy (EU) |
| OKX | Azja Płd.-Wsch. | Singapur, Hong Kong |
| Bybit | Azja Płd.-Wsch. | Singapur, Japonia |
Dla połączeń WebSocket latencja proxy dodaje się do latencji end-to-end. Proxy datacenter z ProxyHat w odpowiednim regionie dodaje typowo 5–20 ms, podczas gdy proxy residential może dodać 50–200 ms ze względu na dodatkowe przeskoków w sieci. Dla real-time orderbook wybierz proxy datacenter; dla scrapingu REST z rotacją — residential.
Sprawdź dostępne lokalizacje na stronie lokalizacji ProxyHat.
Aspekty regulacyjne i TOS giełd
Crypto market data scraping wiąże się z odpowiedzialnością prawną i zgodnością z regulaminami giełd. Kluczowe punkty:
- TOS giełd — większość CEX zabrania scrapingu w regulaminie, ale toleruje go dla publicznych endpointów API w rozsądnych limitach. Przeczytaj TOS przed masowym pobieraniem danych.
- Geo-blokady a prawo lokalne — omijanie blokad IP dla jurysdykcji, w której giełda nie ma licencji (np. Binance w USA), może naruszać lokalne przepisy finansowe. Upewnij się, że Twoja jurysdykcja pozwala na dostęp do tych danych.
- Licencje danych rynkowych — w tradycyjnych finansach dane rynkowe podlegają licencjonowaniu (np. SEC Rule 15c2-11 dla USA, MiFID II dla UE). Dla krypto regulacje są mniej dojrzałe, ale giełdy mogą rościć sobie prawa do danych orderbook.
- GDPR/CCPA — dane on-chain mogą zawierać identyfikowalne adresy wallet. Scraping i przechowywanie tych danych powinno uwzględniać przepisy o ochronie danych osobowych, szczególnie jeśli korelujesz adresy z tożsamościami.
Kluczowa zasada: używaj proxy do omijania limitów technicznych, nie prawnych. Jeśli giełda blokuje Twój region z powodów regulacyjnych, konsultuj się z prawnikiem przed kontynuowaniem.
Konfiguracja ProxyHat i integracja
ProxyHat oferuje trzy typy proxy odpowiednie dla crypto market data scraping:
- Residential — najlepsze dla scrapingu REST z rotacją, wysoka niezawodność, niższe ryzyko detekcji.
- Datacenter — najniższa latencja (5–20 ms), idealne dla WebSocket i real-time orderbook.
- Mobile — najwyższa wiarygodność IP, ale wyższa latencja; używaj tylko gdy inne typy są blokowane.
Format połączenia jest spójny dla wszystkich typów. Geo-targeting i sesje konfigurujesz w nazwie użytkownika:
# Residential, Niemcy, sesja sticky
http://user-country-DE-session-myid:pass@gate.proxyhat.com:8080
# Datacenter, Singapur
http://user-country-SG:pass@gate.proxyhat.com:8080
# SOCKS5, Japonia
socks5://user-country-JP:pass@gate.proxyhat.com:1080
Sprawdź cennik ProxyHat, aby dopasować plan do swoich potrzeb. Więcej przykładów implementacji znajdziesz w dokumentacji ProxyHat.
Najczęstsze błędy i przypadki brzegowe
- Ignorowanie nagłówka Retry-After — przy 429 giełdy zwracają nagłówek z czasem odczekania. Skrypt bez obsługi tego nagłówka eskaluje blokadę do 451.
- Zbyt wiele jednoczesnych połączeń WS — Binance limituje do 5 połączeń WS na IP. Używaj multiplexingu strumieni (jeden WS, wiele symboli).
- Mieszanie typów proxy — residential proxy dla real-time orderbook dodaje 50–200 ms latencji, co psuje strategie arbitrażowe. Używaj datacenter dla WS.
- Brak fallbacku REST — gdy WS się rozłącza, skrypt powinien automatycznie przejść na REST z proxy. Bez fallbacku tracesz dane.
- Hardcoded IP w sesji — sesje sticky ProxyHat wygasają. Jeśli zapiszesz IP i użyjesz go po wygaśnięciu sesji, żądanie trafi na inny IP, łamiąc założenia rate limitu.
- Scraping endpointów prywatnych bez autoryzacji — endpointy wymagające klucza API mają osobne limity. Proxy nie zastępuje autoryzacji.
Kluczowe wnioski
- Rozróżniaj on-chain i CEX — dane on-chain wymagają dostawcy RPC, nie proxy. Proxy są krytyczne dla scrapingu CEX.
- WebSocket-first — używaj WS dla real-time, REST z rotacją proxy dla snapshotów i fallbacku.
- Dopasuj lokalizację proxy do giełdy — SEA dla Binance/OKX/Bybit, US/EU dla Coinbase.
- Datacenter dla niskiej latencji, residential dla rotacji — nie mieszaj typów proxy bez przemyślenia.
- Przestrzegaj TOS i regulacji — proxy omija limity techniczne, nie prawne.
Gotowy na implementację? Przeczytaj nasz przewodnik web scrapingu z ProxyHat lub sprawdź śledzenie SERP dla dodatkowych przypadków użycia.






