微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用UrlFetchApp从https://discord.com寻址端点时出现错误403

如何解决使用UrlFetchApp从https://discord.com寻址端点时出现错误403

discord最近宣布,他们将其API从discordapp.com移至discord.com。

我正在重写我的一些代码(Google Apps Script项目)来解决这个问题,但是我遇到了无法访问discord.com端点的问题,例如:

function example(){
  var headers =
  {
    "Authorization": "Bot AbCdEfG123","Accept": "*/*"
  };
  var options =
  {
    "method": "GET","headers": headers,};
  var response = UrlFetchApp.fetch("https://discord.com/api/guilds/"+GUILD_ID+"/members/"+MEMBER_ID,options);
}

即使使用旧的discordapp.com也可以很好地工作。 使用discord.com会导致403错误,而使用error code 1020

进一步调查:

  • 通过Postman或curl执行相同的请求(针对discord.com)是成功的,因此问题似乎出在UrlFetchApp上
  • 通过在标题添加"Accept": "*/*",我发现错误来自Cloudflare,以及消息Please enable cookies
  • 将User-Agent添加到标头,例如"User-Agent": "MyBot/1.0"没有任何改变

我不知道该如何处理,我想知道是否还有其他人遇到过此问题。感谢您的帮助。

编辑:

以下是所需的文档:

起作用的卷曲代码

curl -H "Authorization: Bot [...]" "https://discord.com/api/guilds/[...]/members/[...]"

带有表示令牌或ID的省略号[...]

修改2:

Google Apps脚本使用以下不可修改用户代理:

Mozilla/5.0 (compatible; Google-Apps-Script; beanserver; +https://script.google.com; id: [...])

即使我仅将Mozilla部件纳入curl命令中,即

curl -H "Authorization: Bot [...]" -H "user-agent: Mozilla" "https://discord.com/api/guilds/[...]/members/[...]"

我得到相同的1020错误代码

解决方法

您需要按照此格式设置用户代理 https://discord.com/developers/docs/reference#user-agent

User-Agent: DiscordBot ($url,$versionNumber)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。