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

求助:为Binance API谷歌表格JS脚本添加WebSocket避免IP封禁

解决Binance API请求权重过高封禁问题:改用WebSocket实现

原脚本通过REST API轮询bookTicker接口的方式,会因频繁请求触发Binance的权重限制,导致IP封禁(错误码-1003)。改用WebSocket实时推送数据可以彻底避免这个问题,以下是适配谷歌表格的完整实现:

修改后的脚本

function connectBinanceWebSocket() {
  // Binance WebSocket实时行情端点,订阅XLMUSDT最优买卖盘数据
  const wsUrl = "wss://stream.binance.com:9443/ws/xlmusdt@bookTicker";
  
  // 建立WebSocket连接
  const ws = new WebSocket(wsUrl);
  
  // 连接成功回调
  ws.onopen = () => {
    Logger.log("WebSocket连接已建立,开始接收XLMUSDT行情数据");
  };
  
  // 接收实时数据回调
  ws.onmessage = (event) => {
    const data = JSON.parse(event.data);
    
    // 提取最高买价(bidPrice)和最低卖价(askPrice)
    const bidPrice = data.b;
    const askPrice = data.a;
    
    Logger.log(`最高买价: ${bidPrice}, 最低卖价: ${askPrice}`);
    
    // 更新谷歌表格单元格
    const activeSheet = SpreadsheetApp.getActiveSheet();
    activeSheet.getRange("B2").setValue(bidPrice);
    activeSheet.getRange("C2").setValue(askPrice);
  };
  
  // 连接关闭回调
  ws.onclose = (event) => {
    Logger.log(`WebSocket连接关闭,代码: ${event.code}, 原因: ${event.reason}`);
    // 可选:需要自动重连的话,在这里调用connectBinanceWebSocket()
  };
  
  // 连接错误回调
  ws.onerror = (error) => {
    Logger.log(`WebSocket错误: ${error.message}`);
  };
}

关键说明

  • 端点差异:WebSocket使用wss://stream.binance.com:9443/ws/xlmusdt@bookTicker,无需主动轮询,服务器会实时推送最新的最优买卖盘数据。
  • 字段对应:WebSocket返回的bookTicker数据中,b对应最高买价、a对应最低卖价,和REST API的字段命名不同,注意区分。
  • 冗余优化:移除了原脚本中重复解析JSON的无效代码,一次解析即可完成数据处理。
  • 运行注意:谷歌表格脚本中WebSocket需在支持客户端API的环境运行,建议通过自定义菜单触发执行,时间驱动触发器环境可能限制WebSocket连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:45:46