我把它放在这里是因为我花了很多时间和分析网络交互才找到这个答案...
我必须使用Python/Requests登录到一个Swagger/OpenAPI。我可以用浏览器登录到网站,但是要用Requests登录,我需要x_csrf_token/sails.sid
组合...
在尝试并失败了这里和其他地方的所有答案后,我检查了浏览器通信。结果发现唯一的方法是先获取'sails.sid',然后对未记录的(?) /csrfToken进行GET请求...
base_host = '...'
base_path= '/api/v2'
base_url = base_host + base_path
data = {
"email": "...",
"password": "..."
}
resp = requests.post(f"{base_url}/login", data=data)
session_cookie = resp.cookies
session_dict=session_cookie.get_dict()
sails_sid = session_dict.get('sails.sid','could not get valid [sails.sid]')
print(f'sails.sid:{[sails_sid]}')
然后:
cookies = {
'sails.sid': sails_sid,
}
headers = {
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0',
}
r2 = requests.get(f"{base_url}/csrfToken", cookies=cookies, headers=headers)
print(r2.json())
请注意,在我的情况下,它是电子邮件/密码...我通过使用Firefox检查分析了浏览器,所以这可能也是您的最后选择...