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

Windows下ThreadedWebsocketManager经HTTP代理无响应问题求助

Windows代理环境下ThreadedWebsocketManager无响应的解决方法

核心原因

Websocket(WSS协议)连接需要代理支持CONNECT隧道,而ThreadedWebsocketManager底层依赖的websocket-client库在Windows环境下不会自动读取系统的http_proxy/https_proxy环境变量来处理WSS连接——这就是为什么普通API请求(通过Client)能走代理,但Websocket数据流无响应的原因。

解决方案

1. 显式配置Websocket代理参数

修改代码,在初始化ThreadedWebsocketManager时通过websocket_options直接传递代理信息,替代仅依赖环境变量的方式:

from binance import ThreadedWebsocketManager

# 替换为你的实际信息
API_KEY = '<my api key>'
API_SECRET = '<my secrect key>'
PROXY_HOST = "<proxyurl>"
PROXY_PORT = <port>
PROXY_USER = "<username>"
PROXY_PASS = "<password>"

def main():
    symbol = 'BTCUSDT'

    # 构造websocket代理配置
    ws_proxy = {
        "http_proxy_host": PROXY_HOST,
        "http_proxy_port": PROXY_PORT,
        "http_proxy_auth": (PROXY_USER, PROXY_PASS)
    }

    # 初始化时传入代理设置
    twm = ThreadedWebsocketManager(
        api_key=API_KEY,
        api_secret=API_SECRET,
        websocket_options=ws_proxy
    )
    twm.start()

    def handle_socket_message(msg):
        print(f"message type: {msg['e']}")
        print(msg)

    twm.start_kline_socket(callback=handle_socket_message, symbol=symbol)
    twm.join()

if __name__ == "__main__":
    main()

2. 验证代理兼容性

  • 确认代理服务器允许CONNECT请求访问币安的WSS域名(stream.binance.com)及443端口
  • 若代理有白名单限制,联系IT添加该域名到允许列表(无管理员权限无需自行修改系统设置)

3. 特殊字符处理

如果代理账号或密码包含@、:等特殊字符,需要进行URL编码:

  • @ → %40
  • : → %3A
  • 示例:user@name → user%40name

内容的提问来源于stack exchange,提问作者excelsior9000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:30:51