Python Selenium: как получить файлы cookie и отформатировать их для использования в запросе http - PullRequest
0 голосов
/ 01 ноября 2018

Мне интересно, как лучше всего получить файлы cookie из экземпляра селена webdriver (chromedriver) и преобразовать их в строку cookie, которую можно передать в качестве заголовка http. Вот способ, которым я пытался это сделать: получить список словаря для каждого файла cookie, который обеспечивает селен, а затем вручную добавить знаки равенства и точки с запятой, чтобы отформатировать его, как это было бы в заголовке Cookie. Проблема в том, что это не работает, на сайте, который я тестирую, возвращается 500 внутренняя ошибка сервера, которая, я полагаю, вызвана. плохая обработка запроса, и б. неправильный запрос, в частности, часть 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, которая не работает?

Искренне спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете сохранить текущие куки как объект python, используя pickle. Например:

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)
0 голосов
/ 01 ноября 2018

Используйте json, чтобы выгрузить куки в итерацию, которую вы можете отформатировать:

import json
cookies_list = list(json.dumps(get_cookies))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...