selenium Python Selify:如何获取cookie并将其格式化以在http请求中使用

icomxhvb  于 2022-11-10  发布在  Python
关注(0)|答案(3)|浏览(143)

我想知道从SelensWebDRIVER示例(ChromeDRIVER)获取Cookie并将其转换为可以作为http头传递的Cookie字符串的最佳方法。以下是我尝试过的方法:获取Selify提供的每个Cookie的词典列表,然后手动添加等号和分号来格式化它,就像它在Cookie头中一样。问题是:这不起作用,在我测试的站点上,它返回500内部服务器错误,我认为这是由A.对请求的糟糕处理和B.糟糕的请求引起的,特别是Cookie部分。

cookies_list = driver.get_cookies()
cookieString = ""
for cookie in cookies_list[:-1]:
    cookieString = cookieString + cookie["name"] + "="+cookie["value"]+"; "

cookieString = cookieString  + cookies_list[-1]["name"] + "="+ cookies_list[-1]["value"]

print(cookieString)

有没有更简单的方法来做到这一点,和/或我格式化不起作用的Cookie字符串有什么问题。
衷心感谢您的帮助。

neekobn8

neekobn81#

all_cookies=self.driver.get_cookies();
cookies_dict = {}
for cookie in all_cookies:
    cookies_dict[cookie['name']] = cookie['value']
print(cookies_dict)

您可以将这些传递给请求函数。

0lvr5msh

0lvr5msh2#

您可以使用PICKLE将当前的Cookie保存为一个Python对象。例如:

import pickle
import selenium.webdriver 

driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))

稍后再将它们添加回来:

import pickle
import selenium.webdriver 

driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)
z18hc3ub

z18hc3ub3#

使用json将cookie转储到一个迭代器中,您可以格式化该迭代器:

import json
cookies_list = list(json.dumps(get_cookies))

相关问题