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

PythonAnywhere运行脚本报WebSocketProxyException 403错误如何解决

解决方案

该报错是PythonAnywhere平台的出站代理拦截了tvdatafeed模块发起的WebSocket连接请求,返回403拒绝状态,可通过以下方式解决:

  • 调整PythonAnywhere账户权限
    免费/入门版PythonAnywhere账户仅允许访问平台预定义的白名单域名,tvdatafeed依赖的TradingView WebSocket接口默认不在白名单内,可选择升级为Hacker及以上付费账户,自动解除出站访问白名单限制、允许WebSocket连接;若不想升级,可在PythonAnywhere官方论坛提交白名单申请,将TradingView相关WebSocket域名加入许可列表。
  • 配置平台代理参数
    PythonAnywhere所有出站请求需走内部代理,需在脚本初始化阶段显式配置代理适配websocket库:
    import os
    # 全局代理配置
    os.environ['http_proxy'] = 'http://proxy.server:3128'
    os.environ['https_proxy'] = 'http://proxy.server:3128'
    # 单独适配websocket库的代理设置
    import websocket
    websocket.setdefaultproxy("proxy.server", 3128)
    
  • 增加请求头规避反爬
    403也可能是TradingView的反爬机制识别到代理请求触发拦截,可在初始化tvdatafeed时传入模拟浏览器的请求头,同时传入个人TradingView账号密码降低被拦截概率:
    from tvDatafeed import TvDatafeed, Interval
    
    custom_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "Origin": "https://www.tradingview.com"
    }
    tv = TvDatafeed(username="你的TradingView账号", password="你的TradingView密码", headers=custom_headers)
    
  • 补充异常重连逻辑
    PythonAnywhere对长时间运行的长连接有自动回收机制,建议给tvdatafeed的请求增加捕获WebSocketProxyException的重连逻辑,避免单次报错导致脚本终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:24:05