如何解决使用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"
没有任何改变
我不知道该如何处理,我想知道是否还有其他人遇到过此问题。感谢您的帮助。
编辑:
以下是所需的文档:
- discord:https://discord.com/developers/docs/reference
- UrlFetchApp:https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
起作用的卷曲代码是
curl -H "Authorization: Bot [...]" "https://discord.com/api/guilds/[...]/members/[...]"
带有表示令牌或ID的省略号[...]
修改2:
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/[...]"
解决方法
您需要按照此格式设置用户代理 https://discord.com/developers/docs/reference#user-agent
User-Agent: DiscordBot ($url,$versionNumber)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。