相同Websocket代码在其他电脑无法获取币安期货K线数据如何解决?
问题修复方案
1. 基础网络连通性排查
首先验证系统层面对币安期货Websocket域名的连通性,在出问题的Ubuntu终端执行命令:
curl -v -i 'wss://fstream.binance.com/stream?streams=btcusdt@kline_1m'
如果该命令无法返回正常响应,说明问题出在网络层面,与代码无关。
2. 域名解析校验
对比两台设备的DNS解析结果,执行命令:
nslookup fstream.binance.com
如果两台设备解析出的IP地址不一致,说明新设备存在DNS污染问题,可修改系统DNS为公共DNS(如8.8.8.8、114.114.114.114)后重试。
3. 代理与防火墙排查
- 确认新设备是否配置了和旧设备一致的代理规则:
websockets库默认不会读取系统代理配置,如需走代理需在连接时手动指定参数:async with ws.connect('wss://fstream.binance.com/stream?streams=btcusdt@kline_1m', proxy="http://你的代理地址:端口") as socket: - 检查系统防火墙是否封禁了443端口:
如有封禁规则可放行443端口后重试。sudo ufw status
4. SSL证书校验排查
新重装的Ubuntu可能存在CA证书不全的问题,先更新系统CA证书:
sudo apt update && sudo apt install ca-certificates -y
如果更新后仍无法连接,可临时关闭SSL校验验证是否为证书问题(仅用于测试,不建议生产环境使用):
import ssl # 连接时增加sslopt参数 async with ws.connect('wss://fstream.binance.com/stream?streams=btcusdt@kline_1m', sslopt={"cert_reqs": ssl.CERT_NONE}) as socket:
如果关闭校验后可正常连接,重新更新系统CA证书即可解决。
5. 依赖版本对齐
对比两台设备的websockets库版本:
pip show websockets
如果版本不一致,将新设备的库版本安装为和旧设备一致的版本即可:
pip install websockets==<旧设备对应的版本号>
6. 备选节点替换
若以上步骤都无法解决,可将期货接口域名替换为币安其他可用的期货流节点,如fstream-api.binance.com后重试。
内容的提问来源于stack exchange,提问作者KyuSang Jang
相关产品推荐
相关产品推荐

