[英]Use Selenium cookies with postman generated POST snippet in Python
I'm automating a task which requires me to POST some data along with cookies that update every few minutes.我正在自动化一项任务,该任务需要我发布一些数据以及每隔几分钟更新一次的 cookies。 In order to get the updated cookies I use Selenium to refresh the page and then
driver.get_cookies()
.为了获得更新的 cookies 我使用 Selenium 刷新页面然后
driver.get_cookies()
。
I have a template for the POST request from Postman so all I have to do is replacing the old cookies with the new cookies from selenium.我有来自 Postman 的 POST 请求模板,所以我所要做的就是用来自 Z362FF0596AD78C25 的新 cookies 替换旧的 cookies。
The template:模板:
import requests
url = "https://SECRET_URL"
payload={}
files=[
]
headers = {
'Accept': '*/*',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68',
'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryGjr6z5IrrtgTB6kb',
'Cookie': 'resource_filter313=%7B%22ScheduleId%22%3A%22313%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter315=%7B%22ScheduleId%22%3A%22315%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3A%22%22%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter323=%7B%22ScheduleId%22%3A%22323%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter7=%7B%22ScheduleId%22%3A%227%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; schedule_calendar_toggle=false; SimpleSAMLAuthToken=_b2d58eddf859a022f343f72695eb8297d32ea5f7b0; SimpleSAMLSessionID=4dcd7e60c53eb05ff6cda9edee39a505; tree311={"open_nodes":["13"],"selected_node":"14"}'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
To clarify, all I need is to replace 'Cookies'
value in headers
with the correctly formatted cookies from selenium.澄清一下,我只需要用来自 selenium 的正确格式的 cookies 替换
headers
中的'Cookies'
值。 Thanks!谢谢!
If you want this:如果你想要这个:
'Cookie': 'resource_filter313=%7B%22ScheduleId%22%3A%22313%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter315=%7B%22ScheduleId%22%3A%22315%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3A%22%22%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter323=%7B%22ScheduleId%22%3A%22323%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter7=%7B%22ScheduleId%22%3A%227%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; schedule_calendar_toggle=false; SimpleSAMLAuthToken=_b2d58eddf859a022f343f72695eb8297d32ea5f7b0; SimpleSAMLSessionID=4dcd7e60c53eb05ff6cda9edee39a505; tree311={"open_nodes":["13"],"selected_node":"14"}'
To look pretty like this:看起来像这样:
'Cookie':'resource_filter313={"ScheduleId":"313","ResourceIds":[],"ResourceTypeId":null,"MinCapacity":null,"ResourceAttributes":[],"ResourceTypeAttributes":[]};resource_filter315={"ScheduleId":"315","ResourceIds":[],"ResourceTypeId":"","MinCapacity":null,"ResourceAttributes":[],"ResourceTypeAttributes":[]};resource_filter323={"ScheduleId":"323","ResourceIds":[],"ResourceTypeId":null,"MinCapacity":null,"ResourceAttributes":[],"ResourceTypeAttributes":[]};resource_filter7={"ScheduleId":"7","ResourceIds":[],"ResourceTypeId":null,"MinCapacity":null,"ResourceAttributes":[],"ResourceTypeAttributes":[]};schedule_calendar_toggle=false;SimpleSAMLAuthToken=_b2d58eddf859a022f343f72695eb8297d32ea5f7b0;SimpleSAMLSessionID=4dcd7e60c53eb05ff6cda9edee39a505;tree311={"open_nodes":["13"],"selected_node":"14"}'
You need to decode it like this:你需要像这样解码它:
from urllib.parse import unquote
bad_cookie = 'resource_filter313=%7B%22ScheduleId%22%3A%22313%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter315=%7B%22ScheduleId%22%3A%22315%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3A%22%22%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter323=%7B%22ScheduleId%22%3A%22323%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; resource_filter7=%7B%22ScheduleId%22%3A%227%22%2C%22ResourceIds%22%3A%5B%5D%2C%22ResourceTypeId%22%3Anull%2C%22MinCapacity%22%3Anull%2C%22ResourceAttributes%22%3A%5B%5D%2C%22ResourceTypeAttributes%22%3A%5B%5D%7D; schedule_calendar_toggle=false; SimpleSAMLAuthToken=_b2d58eddf859a022f343f72695eb8297d32ea5f7b0; SimpleSAMLSessionID=4dcd7e60c53eb05ff6cda9edee39a505; tree311={"open_nodes":["13"],"selected_node":"14"}'
good_cookie = unquote(bad_cookie)
print(good_cookie)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.