You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku平台使用CCXT库调用Binance API遇地域限制报错求助

Heroku平台使用CCXT库调用Binance API遇地域限制报错求助

我完全理解你遇到的困扰——美国地区的Heroku实例调用Binance主站API确实会触发地域限制,因为Binance对美国用户有合规限制,直接调用主站接口肯定会被拦。你之前试了代理没成功,大概率是代理配置的方式不对,或者选的代理节点不符合要求。下面给你几个实际可行的解决思路:

方案一:改用Binance US合规端点

这是最稳妥的解决方案,Binance针对美国用户提供了专门的合规平台Binance US,CCXT完全支持这个平台,你只需要把初始化交易所的代码从binance改成binanceus就行,代码示例:

import ccxt
exchange = ccxt.binanceus({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_API_SECRET',
})
ticker = exchange.fetch_ticker('BTC/USDT')
print(ticker)

Binance US的数据和主站基本同步,完全能满足你获取BTC价格来计算持仓的需求,而且不存在地域限制问题。

方案二:正确配置代理(针对坚持用Binance主站的情况)

如果你必须用Binance主站,那得确保代理配置正确:

  • 要选非美国地区的代理节点(比如欧洲、新加坡),免费代理大概率不稳定或已被Binance拉黑,建议用付费的靠谱代理
  • 在CCXT初始化交易所时,正确传入proxy参数,同时匹配API的协议(http/https)
  • 可以额外添加headers模拟正常浏览器请求,降低被拦截的概率

代码示例:

import ccxt
exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_API_SECRET',
    'proxy': 'http://your-proxy-ip:port',  # 替换为有效的非美代理地址
    'headers': {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
})
# 测试连接
try:
    ticker = exchange.fetch_ticker('BTC/USDT')
    print(ticker)
except Exception as e:
    print(f"Error: {e}")

另外,Heroku上可以通过设置环境变量管理代理地址,或者使用第三方代理插件来简化配置。

方案三:切换Heroku实例的部署区域

Heroku允许你选择实例的部署区域,默认是美国,你可以把实例部署到欧洲或新加坡区域,这样实例IP就不在美国境内,可能绕过Binance的地域限制。操作步骤:

  • 打开Heroku CLI,执行命令修改区域:heroku regions:set eu -a your-app-name(eu代表欧洲区域,也可以选ap-southeast-1新加坡区域)
  • 重新部署你的应用,确保实例在新区域启动

这个方案不需要修改代码,但要注意不同区域的Heroku费用可能有差异,部分第三方插件也可能只支持特定区域。

最后提醒:无论采用哪种方案,都要确保操作符合Binance的服务条款,避免违规导致账号受限。

备注:内容来源于stack exchange,提问作者Tim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:53:16