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

Discord API端点调用requests库失败,浏览器重放XHR却正常

解决Discord API添加用户时的401 Unauthorized错误

针对你遇到的问题,以下是几个关键的修复点和对应的解决方案:


1. 令牌有效性与格式错误

你的代码中'authorization': 'TOKEN'是占位符,必须替换为真实的Discord令牌:

  • 如果是机器人账号,格式应为'Bot YOUR_BOT_TOKEN'
  • 如果是用户令牌(注意:使用用户令牌自动化操作违反Discord服务条款,可能导致账号封禁),直接填入完整令牌字符串
    同时要确保令牌未过期、权限包含添加关系的相关权限。

2. 手动设置Content-Length导致的不匹配

requests库会自动计算并设置Content-Length请求头,你手动指定的'content-length': 2可能与实际请求体长度不符,引发服务器验证失败,必须删除这个头。

3. 请求体格式错误

你传递的json='{}'是字符串类型,而requests的json参数需要接收字典对象。即使空对象是API允许的,字符串格式也会导致请求解析失败,应改为json={}。

4. 请求头大小写不匹配

代码中的'referrer-Policy'需要改为'Referrer-Policy'(首字母大写),Discord服务器对请求头大小写敏感,错误的格式会影响验证。

5. 可选:x-super-properties的兼容性问题

这个头用于识别客户端环境,你当前的取值对应Windows Brave浏览器,如果你的请求环境与该信息不匹配,可能被服务器拦截。可以先尝试去掉这个头,若依然失败再生成匹配当前环境的Super Properties值。


修正后的代码

import requests

# 替换为你的真实令牌
TOKEN = "YOUR_ACTUAL_TOKEN"
# 替换为目标用户ID
USER_ID = "TARGET_USER_ID"

headers = {
    'accept': '*/*',
    'accept-language': 'en-US,en;q=0.9',
    'authorization': TOKEN,
    'content-type': 'application/json',
    'sec-ch-ua': '\'Not_A Brand\';v=\'99\', \'Brave\';v=\'109\', \'Chromium\';v=\'109\'',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '\'Windows\'',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin',
    'sec-gpc': '1',
    'x-context-properties': 'eyJsb2NhdGlvbiI6IlVzZXIgUHJvZmlsZSJ9',
    'x-debug-options': 'bugReporterEnabled',
    'x-discord-locale': 'en-US',
    # 若去掉后失败,可恢复该行并确保值匹配当前环境
    # 'x-super-properties': 'eyJvcyI6IldpbmRvd3MiLCJicm93c2VyIjoiQ2hyb21lIiwiZGV2aWNlIjoiIiwic3lzdGVtX2xvY2FsZSI6ImVuLVVTIiwiYnJvd3Nlcl91c2VyX2FnZW50IjoiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEwOS4wLjAuMCBTYWZhcmkvNTM3LjM2IiwiYnJvd3Nlcl92ZXJzaW9uIjoiMTA5LjAuMC4wIiwib3NfdmVyc2lvbiI6IjEwIiwicmVmZXJyZXIiOiIiLCJyZWZlcnJpbmdfZG9tYWluIjoiIiwicmVmZXJyZXJfY3VycmVudCI6IiIsInJlZmVycmluZ19kb21haW5fY3VycmVudCI6IiIsInJlbGVhc2VfY2hhbm5lbCI6InN0YWJsZSIsImNsaWVudF9idWlsZF9udW1iZXIiOjE3MTYyMSwiY2xpZW50X2V2ZW50X3NvdXJjZSI6bnVsbH0=',
    'Referrer-Policy': 'strict-origin-when-cross-origin'
}

r = requests.put(f'https://discord.com/api/v9/users/@me/relationships/{USER_ID}', json={})

match r.status_code:
    case 204:
        print('Added a user')
    case _:
        print(f'Unexpected error: {r.status_code} | {r.text}')

额外注意事项

  • 优先使用机器人账号操作,避免使用用户令牌违反Discord服务条款
  • 确保机器人账号已被授予CREATE_INSTANT_INVITE等相关权限,且有权访问目标用户所在的服务器
  • 若问题仍存在,可先用Postman等工具直接测试API请求,排除代码层面的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:46:04