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

时间:2018-11-01 05:26:35

标签: python selenium cookies

我想知道从硒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字符串有什么问题。

衷心感谢您的帮助。

3 个答案:

答案 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