调用Roblox用户描述API返回401 Unauthorized问题求助
解决Roblox用户描述API POST请求401未授权问题
你的代码存在几个关键问题,导致请求始终返回401未授权,以下是问题分析和修复方案:
问题点
- CSRF Token获取逻辑错误:直接用无会话的
requests.post请求auth.roblox.com,没有携带你的.ROBLOSECURITY令牌,无法触发正确的CSRF Token返回;且Roblox通常通过GET/HEAD请求返回CSRF Token,而非POST。 - Cookie设置方式错误:
DescriptionSession.cookies['Cookie']的写法不符合requests库的Cookie设置规范,正确的方式是直接指定.ROBLOSECURITY作为Cookie键。 - 请求体格式错误:Roblox API要求请求体为JSON格式,你直接传递字典会默认以form-data格式发送,不符合接口要求。
- 多Session冗余创建:重复创建Session会丢失会话上下文,应该复用同一个Session完成所有请求流程。
修复后的代码
import requests # 替换为你的有效.ROBLOSECURITY令牌 ROBLOSECURITY = "你的真实ROBLOSECURITY值" session = requests.Session() # 先设置会话Cookie session.cookies[".ROBLOSECURITY"] = ROBLOSECURITY # 发送HEAD请求触发CSRF Token返回(HEAD比GET更高效) csrf_response = session.head("https://users.roblox.com/v1/description") csrf_token = csrf_response.headers.get("x-csrf-token") if csrf_token: session.headers["x-csrf-token"] = csrf_token # 用json参数传递请求体,确保格式正确 update_response = session.post( "https://users.roblox.com/v1/description", json={"description": "Test"} ) print(f"状态码: {update_response.status_code}") print(f"响应内容: {update_response.content.decode('utf-8')}") else: print("未成功获取CSRF Token")
额外注意事项
- 确保
ROBLOSECURITY是有效且未过期的令牌,无效令牌会直接返回401。 - Roblox API有请求频率限制,请勿频繁发送请求,避免被限流。
- 账号需处于正常状态,无权限限制(比如未被封禁)才能修改个人描述。
内容的提问来源于stack exchange,提问作者xqzzcodes
相关产品推荐
相关产品推荐

