我遇到了以下问题:我作为参数传递给 get 方法的键包含一个“%”符号。上网搜索,发现有些字符是以“%+ASCII码”的格式传输的。所以“%”符号被编码为“%25”,它打破了我的线索!例如https://...&authkey=Ib%2f0L...是工作链接,https://...&authkey=Ib%252f0Lp...是导致密钥错误的链接。如何解决这个问题?提前致谢。
url = 'https://hk4e-api-os.hoyoverse.com/event/gacha_info/api/getGachaLog'
params = {
'authkey_ver': 1,
'sign_type': 2,
'auth_appid': 'webview_gacha',
'init_type': 301,
'lang': 'ru',
'authkey': "TRdSqWRIb%2f0Lpdo4u8aHJNdAsIzSOy%2fr",
'gatcha_type': 301,
'page': 1,
'size': 6,
'end_id': 0
}
res = r.get(url, params = params)
print(res.url)
如果您手动将密钥插入链接,则一切正常,如果您将密钥作为参数传递,则它会被修改并且请求返回密钥错误:
{
"data": null,
"message": "authkey error",
"retcode": -100
}
有效密钥示例:
TRdSqWRIb%2f0Lpdo4u8aHJNdAsIzSOy%2fr
作为参数传递后的键:
TRdSqWRIb%252f0Lpdo4u8aHJNdAsIzSOy%252fr
您正在尝试以 URL 编码形式传递密钥,这就是发生双重 URL 编码问题的地方。以原始形式传递密钥,问题将得到解决。
%2f
在您的情况下,您需要用角色的序列替换您认为的关键/
PS如果您在问题中提供了您的真实密钥,请立即更改!