知识

如何用住宅代理采集加密货币交易所与行情数据

加密数据采集会撞上按 IP 计的速率限制、地域限制,以及 24/7 的可用性要求。这里讲住宅代理如何一并解决这三者。

Chris Collins

Chris Collins

2026年8月15日 · 1 分钟阅读

加密市场从不休市。价格、订单簿、成交、资金费率和 24 小时统计,每一秒都在数百家交易所之间流动,而任何采集这些数据的团队——为了分析、研究、聚合,或构建一个数据集——都在不停歇地、跨越国界地做着这件事。这个组合浮现出一组具体的问题,是寻常基础设施处理得很糟的:交易所按 IP 强制执行的速率限制、按国家受限的 endpoint 与产品,以及一个会惩罚你数据流里每一个缺口的市场。住宅代理把这三者都解决了。

下面就是它们如何嵌入其中的实用版本,以及在哪里官方 API 是比抓取前端更好的工具。

加密数据团队真正采集的是什么

大多数有用的数据是行情数据:每个交易对的最新价格与 24 小时 ticker 统计、订单簿深度、最近成交、OHLCV K 线,以及衍生品那一侧的资金费率或利率。在大多数交易所,这来自一个正是为此而建的公开 REST 或 WebSocket API,你也应该从那里开始。前端抓取在边缘处登场:某个交易所或地区对你需要的东西没有公开 endpoint、一个上币或公告页面、一个状态或费率页面,或者一个把 API 关起来却把公开站点敞开的数据源。这篇文章的焦点是两种做法之下的那一层采集层,而在两种情形里它都是同一层。

为什么一个 IP 不够:速率限制

交易所的速率限制很严格,而且几乎总是按 IP 计算。许多交易所用一套权重系统,不同 endpoint 对一个按固定窗口回补的按 IP 预算收取不同的额度,而像深度订单簿快照这样更重的查询,会很快吃掉那个预算。从单一地址跨多家交易所轮询几百个交易对,你在几秒之内就顶到天花板,随即被限速、然后被临时封禁,你的数据流也就停住了。

解法是别再从一个地址把一切都发出去。把请求分散到许多住宅 IP,意味着每个 IP 都舒舒服服地待在它自己的按 IP 预算之内,而你的聚合吞吐量则成倍增长——这正是任何高流量采集器所倚赖的同一套负载均衡逻辑,也正是无限并发连接的用途。这是一种针对公开行情数据的扩容技术,不是绕过某个特定账户限额的办法,而且它应当与尊重每家交易所所记录的限额和条款相配合,而不是把它们当作障碍。

地域限制与按地区锁定的数据

加密是全网在地理上最碎片化的领域之一。有些交易所在某些司法辖区完全不可用,有些出于监管原因按地区限制特定的产品或 endpoint,有些则根据请求来自何处而提供不同的费率、上币或界面。如果你从单一位置采集,你就根本看不到另一个被允许地区的用户所看到的数据,而来自错误国家的请求可能被直接拦下。

一个带国家定位、并在需要时带城市级定位的住宅代理,让你能从一个该数据公开可得的地区的 IP 发出请求,于是你采集到的正是那里一个寻常访客会采集到的东西。重要的一条告诫是:这是一件用来抵达你有权访问的数据的工具,不是用来规避一条本就该对你生效的限制。采集公开的行情数据,尊重每家交易所的服务条款和你所运营地区的法律,用地理定位去以合法方式抵达随地理而变的数据,而不是去绕过一条真正的禁令。

为一个永不入睡的市场提供可靠性

一个 24/7 的市场意味着采集里的一个缺口就是你数据集里一个永久的洞,而洞是昂贵的:一个回测、一个研究数字,或一个建立在悄悄丢了一小时的数据流之上的分析产品,都悄悄地错了。当一切都经由一个 IP 时,单单一次速率限制事件或一次封禁,就把整条数据流放倒,直到它自行清除。

分散到一个池子里消除了那个单点故障,而把它和真正的故障转移配起来,则能在任何一条路由劣化时让数据流继续淌。在某个给定 IP 上侦测到一个速率限制响应、一个超时,或一次质询,就退役那条路由,改在一条新鲜的上继续——这正是多区域流水线里的故障转移背后的模式。这一切都不能盲干,所以要按交易所、按路由监控这条流水线:成功率、延迟和缺口侦测,会在一个来源变成数据里一个洞之前就告诉你它正在劣化。因为许多加密数据对时间敏感,一个干净、低延迟的池子同样重要,而用地理上邻近、信誉良好的出口去把延迟压低,会减少每一份快照落地时已经有多陈旧。

用粘性会话服务流与一致的快照

并非每个请求都该轮换。有两种情形要求一个被守住的 IP。

第一种是 WebSocket 流,这正是大多数实时订单簿与成交数据实际抵达的方式。一个流是一条单一的、长寿命的连接,所以它需要一个在其整个生命周期里被守住的 IP,这意味着每个流一个粘性会话,而不是一个在敞开的 socket 底下轮换的地址。第二种是一致的快照。如果你在某个时间点上跨交易所比较价格或订单簿,你会希望每家交易所的序列来自一个稳定、一致的视角,而不是每次轮询都换一个不同的 IP、甚至可能一个不同的地区,所以每家交易所一个粘性会话能让那个视角保持干净。让高流量的 REST 轮询去轮换,以分摊速率限制;让流和比较用的数据流保持粘性。这些 IP 的质量决定了你到底是否被信任,而一个信誉良好的干净地址能顺畅通过,一个被标记的则会遭到质询。

优先用官方 API,用代理把它扩起来

诚实的定位是:凡是交易所发布了公开行情 API 的地方,就用它。它更快、它返回结构化数据,而且它是交易所所设想的访问路径,这让你留在它的条款之内。住宅代理不是那个 API 的替代品,它们是让你能规模化地、跨地理地运行它的东西:把你的轮询分散到各个 IP,好让每一个都待在按 IP 的限额之内,定位到国家去抵达特定地区的公开数据,为流守住粘性会话,并做故障转移以让数据流保持存活。把前端抓取留给真正的缺口——一个背后没有 API 的页面——并以同样的克制去对待它,只取公开数据,在站点条款与适用法律之内。这是数据采集,不是交易、也不是理财建议,本文任何内容都不是对任何资产的推荐。

一套最小的搭建

一个用于 REST 轮询的轮换住宅代理,对你的客户端看来就是个寻常代理。定位住在 gateway 的用户名里,所以一个不带会话标识的美国出口会按请求轮换:

import requests
PROXY = "http://customer-USERNAME-country-us:PASSWORD@p.shifter.io:443"
proxies = {"http": PROXY, "https": PROXY}
# Public ticker endpoint, one symbol, through a rotating US residential IP
r = requests.get(
"https://api.exchange.example/v1/ticker?symbol=BTC-USD",
proxies=proxies,
timeout=10,
)
r.raise_for_status()
print(r.json())

把一大串交易对分摊到许多这样的调用上,好让没有哪个 IP 独扛全部负载,而遇到一个速率限制响应或一个超时,就退役那条路由并在一条新鲜的上重试。对于一个 WebSocket 流,加上一个会话标识以在连接的生命周期里守住一个 IP,例如 customer-USERNAME-country-us-sid-book42,并给每个流它自己的标识。同样的客户端模式从用 Python 使用住宅代理那篇通用指南里一路承接过来。

底线

采集加密货币交易所与行情数据受三件事的约束:单一地址几乎立刻就顶到的按 IP 速率限制、你从一个位置够不着的按地区锁定的 endpoint 与产品,以及一个把每个缺口都变成永久洞口的 24/7 市场。住宅代理对这三者都作答。把你的轮询分散到一个池子里,以在每个 IP 都待在其预算之内的同时把有效吞吐量翻上去;定位到国家,去采集一个被允许地区所看到的公开数据;为流和跨交易所快照守住粘性会话;并带上监控做故障转移,好让数据流永不悄无声息地停下。凡官方 API 存在处就用它,守住公开数据与每家交易所的条款,让代理层去做它擅长的事:规模与地理。

那一层正是住宅代理的用途——一个由真实的、家庭级 IP 组成的大池子,带国家与城市定位,并在你需要时带粘性会话。按 GB 计价意味着你为自己真正拉取的数据付费,这很契合一个大多由细小、频繁、持续运行的行情数据请求构成的工作负载。

准备好开始了吗?

试用 Shifter 住宅代理,205M+ 个 IP,195+ 个国家,低至 $0.75/GB。

立即开始