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

Google Sheets调用Binance期权API遭地域限制错误的解决方法

解决Google Apps Script调用Binance期权API的地域限制错误

首先得先修正你代码里的一个关键小错误:参数变量没有正确替换。你当前的URL里直接把BaceAsset当成字符串写进去了,导致实际请求的参数是underlyingAsset=BaceAsset,而不是你传入的BTC或ETH值。先把这个问题修复,代码改成模板字符串的形式会更靠谱:

function DownLoad_options_OI(BaceAsset) {
  // 用模板字符串替换变量,同时把参数分隔符换成标准的&(Binance也支持;,但&更符合URL规范)
  const url = `https://eapi.binance.com/eapi/v1/openInterest?underlyingAsset=${BaceAsset}&expiration=230113`;
  const options = {
    muteHttpExceptions: true,
    // 添加浏览器风格的请求头,模拟正常浏览器请求
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    }
  };
  const response = UrlFetchApp.fetch(url, options);
  return response.getContentText();
}

接下来聊聊地域限制的问题:Google Apps Script的执行服务器IP地址大概率被Binance的风控系统判定为受限地区了,而你本地浏览器的IP是在允许访问的范围内,所以才会出现浏览器能正常请求,但脚本不行的差异。通过添加浏览器的User-Agent头,让请求更贴近正常浏览器的行为,很多时候就能绕过这个限制。

如果加了User-Agent还是不行,可以试试这两个进阶方案:

  • 使用代理服务器:在options里配置代理,比如:
    const options = {
      muteHttpExceptions: true,
      headers: { 'User-Agent': '你的浏览器UA' },
      proxyUrl: 'http://你的代理地址:端口'
    };
    
    注意要选支持HTTPS且IP在Binance允许地区的代理。
  • 先验证请求URL是否正确:在UrlFetchApp.fetch前加一行Logger.log(url);,查看执行日志确认URL里的underlyingAsset参数确实是你传入的BTC/ETH,避免参数替换错误的问题。

小提示:Binance的API参数分隔符推荐用&而非;,虽然部分场景下;也能被识别,但遵循标准URL格式能减少潜在的解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:25:26