requests请求:返回信息illegal base64 character 25.
一个登录接口,密码是base64加密的字符串,传参后,接口返回illegal base64 character 25。
使用jmeter跑这个接口,不勾选编码,就可以跑成功,勾选编码也是返回illegal base64 character 25。
使用python的requests请求不知道怎么解决这个问题,请各位帮忙看一下
参考:https://blog.csdn.net/Dongguabai/article/details/118192526
可以使用 urllib.parse 模块中的 quote() 方法将参数进行 URL 安全编码。例如:
import requests
import base64
import urllib.parse
url = "https://example.com/login"
username = "your_username"
password = "your_password"
password_b64 = base64.b64encode(password.encode('utf-8')).decode('utf-8')
params = {
"username": username,
"password": password_b64
}
encoded_params = urllib.parse.urlencode(params, safe='-_').replace('%3D', '')
response = requests.post(url, data=encoded_params)
print(response.text)
在上述代码中,我们首先将明文密码进行 base64 编码,并将编码后的字符串作为密码传递给登录接口。然后,我们使用 urllib.parse.urlencode() 方法对参数进行编码,并指定 safe 参数为 - 和 _,以避免出现一些非法字符。最后,我们通过 replace() 方法将结尾的所有 = 号移除,以保证参数的正确性。
不知道你这个问题是否已经解决, 如果还没有解决的话: