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

使用UrlFetchApp发POST请求遇Error 403,curl正常如何解决?

解决Path of Exile API请求403错误(Google Apps Script)

403错误的核心原因是Google Apps Script默认请求头被API反爬机制拦截,尤其是User-Agent字段。Path of Exile的API会验证请求来源的客户端标识,而UrlFetchApp默认的标识会被判定为非合法请求。

解决方案:添加自定义请求头

修改你的请求配置,补充模拟合法客户端的请求头,同时优化payload的写法避免转义错误:

var URL = 'https://www.pathofexile.com/api/trade/search/Ancestor';
  
// 用对象定义payload,后续自动转成JSON字符串
var payload = {
  "query": {
    "status": {"option": "online"},
    "type": "Tainted Chaos Orb",
    "stats": [{"type": "and", "filters": []}]
  },
  "sort": {"price": "asc"}
};

var options = {
  "method": "post",
  "contentType": "application/json",
  "payload": JSON.stringify(payload),
  "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": "application/json"
  }
};

// 发送请求并处理响应
var response = UrlFetchApp.fetch(URL, options);
var responseData = JSON.parse(response.getContentText());

// 写入Google Sheets示例
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 假设将结果写入A1单元格,实际可根据数据结构拆分写入多行多列
targetSheet.getRange(1, 1).setValue(JSON.stringify(responseData));

关键细节说明

  • User-Agent模拟:用主流浏览器的标识替换默认值,让API认为请求来自合法客户端,你可以根据自己常用浏览器更新该值。
  • JSON.stringify优化:避免手动编写JSON字符串时的转义错误,同时保证payload格式完全符合API要求。
  • Headers补充:添加Accept头明确指定响应格式,进一步提升请求的合法性。

如果仍出现403,可排查:

  • 确认赛季端点是否正确(Ancestor需为当前活跃赛季名称,赛季更新后需同步修改)
  • 部分场景可能需要添加Cookie或Authorization头(贸易搜索API通常无需登录,但特殊查询可能需要)

内容的提问来源于stack exchange,提问作者Renato Bichara Vieira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:55:04