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

Google Apps Script中UrlFetchApp.fetch方法请求接口无返回问题求助

问题原因与解决方案

核心触发原因

  • 请求头校验拦截:目标站点的反爬机制会校验请求的User-Agent、Referer等请求头字段,Google Apps Script的UrlFetchApp默认发送的请求头不符合站点要求,会被直接拦截拒绝返回内容。而浏览器访问时会自动携带符合要求的头部信息,所以可以正常获取结果。
  • IP归属拦截:目标站点可能会拦截来自云服务厂商(包括Google云)的服务器IP段的请求,你本地浏览器用的是普通民用IP,不在拦截范围内所以可以正常访问。
  • 协议跳转适配问题:你当前用的是HTTP协议请求,目标站点可能存在强制HTTPS跳转规则,UrlFetchApp的跳转逻辑在部分场景下和浏览器不一致,导致请求卡住。

修复方案

你可以尝试修改代码,优先使用HTTPS协议,同时自定义请求头模拟浏览器行为,参考代码如下:

function callNasdaqOMX() {
  // 配置请求参数
  const requestOptions = {
    method: 'get',
    followRedirects: true,
    timeout: 10000,
    headers: {
      // 可替换为你自己浏览器实际的User-Agent
      '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',
      // 配置目标站点同域的Referer,模拟从站点内发起请求
      'Referer': 'https://www.nasdaqomxnordic.com/'
    }
  };
  try {
    // 优先使用HTTPS协议发起请求
    const response = UrlFetchApp.fetch("https://www.nasdaqomxnordic.com/webproxy/DataFeedProxy.aspx?SubSystem=Prices&Action=GetInstrument&Source=OMX&Instrument=SSE36273", requestOptions);
    // 输出返回内容测试
    console.log(response.getContentText());
  } catch (e) {
    // 捕获错误信息定位问题
    console.error('请求出错:', e.toString());
  }
}

如果添加请求头后仍无法获取结果,基本可以确认是目标站拦截了Google云的IP段,这种情况可以尝试给请求加代理,或者改用本地运行的脚本调用该接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:01