使用Python Requests调用育碧API校验用户名时Authorization头问题排查
结论
你获取的接口返回结果完全符合设计预期,可以通过profiles数组是否为空判断用户名是否可用。
判断逻辑说明
该接口的核心功能是根据传入的nameOnPlatform(用户名)和platformType(平台类型)参数,匹配已注册的育碧账号数据:
- 若用户名已被占用,接口返回状态码200,
profiles数组中会包含匹配到的账号完整信息 - 若用户名未被注册,接口返回状态码200,
profiles数组为空
代码优化建议
你可以在现有代码中补充判断逻辑,参考示例如下:
import requests def check(): username = input("What name to check? :") print(" ") token = input("Enter token: ") # 用params参数传递查询条件,自动处理URL编码,避免特殊字符导致请求出错 params = { "nameOnPlatform": username, "platformType": "uplay" } headers = { 'Ubi-AppId':'c5393f10-7ac7-4b4f-90fa-21f8f3451a04', 'Authorization': token, 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36', 'Ubi-RequestedPlatformType':'uplay', } r = requests.get("https://public-ubiservices.ubi.com/v2/profiles", params=params, headers=headers) # 先判断请求是否成功,避免token过期等异常情况导致逻辑错误 if r.status_code != 200: print(f"请求出错,状态码:{r.status_code},错误信息:{r.text}") return res_data = r.json() if len(res_data.get("profiles", [])) == 0: print(f"用户名 {username} 可用") else: print(f"用户名 {username} 已被占用") print("Press ENTER to start checking") input("") check()
注意事项
- 使用前先确认你的授权token有效,token过期会触发401权限错误,无法正常获取查询结果
- 可以提前对输入的用户名做合法性校验,过滤掉不符合育碧命名规则的字符,减少无效请求
- 高频调用接口可能会触发育碧的反爬限制,建议合理控制请求频率
内容的提问来源于stack exchange,提问作者user15855088
相关产品推荐
相关产品推荐

