我想知道从硒webdriver实例(chromedriver)中获取cookie并将其转换为可以作为http标头传递的cookie字符串的最佳方法。这是我尝试过的方法:获取硒提供的每个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字符串有什么问题。
衷心感谢您的帮助。
答案 0 :(得分:0)
使用json将cookie转储为可格式化的可迭代程序:
import json
cookies_list = list(json.dumps(get_cookies))
答案 1 :(得分:0)
您可以使用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)
答案 2 :(得分:0)
我找到了更好的方法。
例如:如果要获取名为 '__ivc' 的 cookie 的过期时间
all_cookies=self.driver.get_cookies();
cookies_dict = {}
for cookie in all_cookies:
cookies_dict[cookie['name']] = cookie['expiry'] // You can insert expiry/value/domain/priority in the value of dctionary
print(cookies_dict)
print(cookies_dict.get('__ivc'))
输出将如下所示:
{'_ga': 1685026815, '__ivc': 1685026816, '_ga_MNGCCS5STP': 1685026815}
1685026816