Uplay用户名抢占工具Post请求无响应,返回空白内容问题求助
排查Uplay账号创建POST请求无响应的问题
结合你的代码和场景,我整理了几个大概率导致POST请求返回空白、账号创建失败的排查方向,咱们一步步来解决:
1. 请求体格式不匹配(最可能的原因)
你当前用data=payload发送POST请求,但Ubi的用户创建接口大概率只接受JSON格式的请求体。data参数会把payload编码成表单格式(application/x-www-form-urlencoded),和接口预期的格式完全不符,导致接口无法解析请求,直接返回空白。
解决方法:把data=payload替换成json=payload,requests会自动帮你设置Content-Type: application/json请求头,完美匹配接口要求:
r = self.session.post("https://public-ubiservices.ubi.com/v3/users", headers=self.headers, json=payload)
2. Payload字段存在非法值
你的payload里有几个None值(age, firstName, lastName),Ubi的注册接口大概率不允许这些字段为null:
age字段:既然已经传了dateOfBirth,可以直接删掉这个字段,或者计算对应年龄传入(比如34);firstName和lastName:多数注册接口是必填项,不能传None,试试改成空字符串""或者随便填个合法值(比如"Test"和"User")。
调整后的payload示例:
payload = { "dateOfBirth": "1989-01-18T00:00:00.00000Z", 'confirmedEmail': email, 'email': email, 'country': 'GB', 'firstName': "Test", 'lastName': "User", 'nameOnPlatform': username, 'password': password, 'preferredLanguage': 'en', 'legalOptinsKey': 'eyJ2dG91IjoiNC4wIiwidnBwIjoiNC4wIiwidnRvcyI6IjIuMSIsImx0b3UiOiJlbi1HQiIsImxwcCI6ImVuLUdCIiwibHRvcyI6ImVuLUdCIn0' }
3. 缺少必要的请求头或会话状态
你的请求头只包含了基础字段,但真实浏览器注册时会携带更多验证信息,比如Origin、Referer,而且可能需要先访问注册页面获取必要的Cookie:
- 先补全请求头:
headers = { "Ubi-AppId": "c5393f10-7ac7-4b4f-90fa-21f8f3451a04", "Ubi-RequestedPlatformType": "uplay", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36", "Origin": "https://account.ubisoft.com", "Referer": "https://account.ubisoft.com/en-GB/register" }
- 在初始化会话时先访问注册页面,获取合法Cookie:
def __init__(self): self.session.get("https://account.ubisoft.com/en-GB/register", headers=self.headers)
4. 增加响应调试信息
你现在只打印了r.text,可以多打印一些响应细节,帮你快速定位问题:
print(f"Status Code: {r.status_code}") print(f"Response Headers: {dict(r.headers)}") print(f"Response Text: {r.text}")
不同状态码的含义很明确:
- 400:请求参数错误(比如payload格式/字段不对)
- 403:权限验证失败(比如缺少头、被反爬拦截)
- 500:服务器内部错误(大概率不是你的问题)
5. 规避反爬机制
Ubi有反爬检测,高频请求或者缺少浏览器特征容易被拦截:
- 在检测到可用用户名后,加个2-3秒的延迟再发起创建请求;
- 补全
Accept、Accept-Language等浏览器常用请求头,让请求更接近真实用户行为。
建议先从请求格式问题(把data改成json)开始排查,这是最常见的触发原因,解决后再验证其他点。
内容的提问来源于stack exchange,提问作者user16246484
相关产品推荐
相关产品推荐

