简体   繁体   English

使用 Selenium cookies 和 postman 在 ZA7F5F35426B92741139231B56382 中生成 POST 片段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM