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

Google Sheets ImportXML无法获取URL错误及403问题解决咨询

问题分析与解决办法

为什么会返回403 Forbidden?

是的,这几乎可以确定是网站新增或强化了反爬安全防护:

  • Google Apps Script的UrlFetchApp默认请求头带有明显的机器人标识(比如User-Agent为Mozilla/5.0 (compatible; Google-Apps-Script)),很容易被网站的反爬系统识别拦截。
  • 部分站点会检测请求的来源IP、Referer头,甚至设置了Cloudflare等人机验证机制,普通的HTTP请求无法通过验证。

Google Sheets内可行的解决办法

1. 修改自定义函数的请求头,模拟真实浏览器请求

在你的自定义函数里,给UrlFetchApp.fetch()添加自定义请求头,伪装成普通浏览器的请求。示例代码如下:

function fetchTarkovData(url) {
  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/webp,*/*;q=0.8',
      'Referer': 'https://tarkov-market.com/'
    },
    followRedirects: true,
    muteHttpExceptions: true // 方便查看错误详情
  };
  
  const response = UrlFetchApp.fetch(url, options);
  if (response.getResponseCode() === 200) {
    // 需根据页面实际结构调整解析逻辑
    const html = response.getContentText();
    // 示例:提取价格(仅作演示,需匹配真实页面元素)
    const priceMatch = html.match(/<span class="price-value">(\d+)<\/span>/);
    return priceMatch ? priceMatch[1] : '数据未找到';
  } else {
    return `请求失败,状态码:${response.getResponseCode()}`;
  }
}

注意:网站HTML结构可能随时变更,需根据当前页面的实际元素调整解析规则。

2. 检查网站是否提供官方API

很多游戏物品交易站点会提供公开或需申请的API接口,直接调用API获取数据比爬取网页更稳定,也不会触发反爬机制。你可以在tarkov-market的网站底部或开发者相关页面查找API文档。

3. 借助JS渲染能力的服务(需结合Google Apps Script)

如果网站依赖JavaScript动态渲染内容,普通HTTP请求无法获取完整页面,可部署支持Headless Chrome的服务(如Google Cloud Functions搭配Puppeteer),再在Google Sheets中通过自定义函数调用该服务接口,获取渲染后的页面内容。此方法需要一定的云服务配置能力。

4. 手动导出导入数据

如果上述技术方案均无法生效,最直接的方式是手动访问目标页面,复制所需数据(如价格、库存)粘贴到Sheets中。若需定期更新,可设置固定周期手动操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:05:25