requests меняет значение параметра
У меня возникла следующая проблема: в ключе, который я передаю в качестве параметра метода 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
Ответы (1 шт):
Вы пытаетесь передать ключ в URL-кодированном виде, из-за чего и возникает проблема с двойным URL-кодированием. Передайте ключ в исходном виде, и проблема решится.
В вашем случае, вам надо заменить в том, что вы считаете ключом, последовательности %2f на символ /
PS если в вопросе вы привели ваш настоящий ключ - немедленно смените его!