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

Google Apps Script中UrlFetchApp请求网站返回403错误的解决咨询

问题描述

使用Google Apps Script的UrlFetchApp抓取https://www.financecharts.com/stocks/AAPL/all-metrics/时遭遇403错误,代码如下:

try {
  var content4 = UrlFetchApp.fetch("https://www.financecharts.com/stocks/" + ticker + "/all-metrics/").getContentText();
  //other code here
} catch (error) {
  Logger.log('Error fetching data: ' + error);
  return null;
}

收到的错误提示:

Error fetching data: Exception: Request failed for https://www.financecharts.com returned code 403. Truncated server response: Just a moment...<meta htt... (use muteHttpExceptions option to examine full response)

解决方法

403错误意味着服务器拒绝了你的请求,大概率是因为请求没有模拟正常浏览器行为,或者触发了网站的反爬机制。可以尝试以下几个方案:

  • 添加浏览器请求头:服务器会校验请求的User-Agent等标识,添加这些字段让请求更贴近真实浏览器的请求。修改后的代码示例:
try {
  const options = {
    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",
      "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
      "Accept-Language": "en-US,en;q=0.5"
    }
  };
  const content4 = UrlFetchApp.fetch(`https://www.financecharts.com/stocks/${ticker}/all-metrics/`, options).getContentText();
  // 后续代码
} catch (error) {
  Logger.log('Error fetching data: ' + error);
  return null;
}
  • 启用muteHttpExceptions查看完整响应:按照错误提示开启这个参数,能获取服务器返回的全部内容,判断是否需要处理人机验证:
try {
  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(`https://www.financecharts.com/stocks/${ticker}/all-metrics/`, options);
  Logger.log(response.getResponseCode());
  Logger.log(response.getContentText()); // 打印完整响应内容,排查问题
  const content4 = response.getContentText();
  // 后续代码
} catch (error) {
  Logger.log('Error fetching data: ' + error);
  return null;
}

如果完整响应是Cloudflare这类人机验证页面,仅靠UrlFetchApp基本无法绕过——因为这类验证需要执行JavaScript或用户交互,而Google Apps Script的环境不支持。这种情况下可以考虑:

  • 使用支持JavaScript渲染的爬虫工具(比如Puppeteer),但需要部署在Node.js环境中,不在Google Apps Script的能力范围内。

  • 查看该网站是否提供官方API,通过合法途径获取数据。

  • 添加有效Cookie(若适用):如果之前手动访问网站时有未过期的有效Cookie,可以在请求头中加入Cookie字段,但Cookie通常会定期失效,需要手动更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:26:16