Вопрос-Ответ

How to save and load cookies using Python + Selenium WebDriver

Как сохранить и загрузить файлы cookie с помощью Python + Selenium WebDriver

Как я могу сохранить все файлы cookie в Selenium WebDriver на Python в файл .txt, а затем загрузить их позже?

В документации почти ничего не говорится о функции getCookies.

Переведено автоматически
Ответ 1

Вы можете сохранить текущие файлы cookie в виде объекта 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)
Ответ 2

Если вам нужны файлы cookie от сеанса к сеансу, есть другой способ сделать это. Используйте параметры Chrome user-data-dir, чтобы использовать папки в качестве профилей. Я запускаю:

# You need to: from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(options=chrome_options)
#for selenium 4.15.2 options instead of chrome_options
#driver = webdriver.Chrome(options=chrome_options)
driver.get("www.google.com")

Здесь вы можете выполнить вход в систему, который проверяет взаимодействие с человеком. Я делаю это, а затем нужные мне файлы cookie теперь каждый раз, когда я запускаю Webdriver с этой папкой, все находится там. Вы также можете вручную установить расширения и использовать их в каждом сеансе.

При втором запуске все файлы cookie находятся там:

# You need to: from selenium.webdriver.chrome.options import Options    
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(options=chrome_options)
#for selenium 4.15.2 options instead of chrome_options
#driver = webdriver.Chrome(options=chrome_options)
driver.get("www.google.com") # Now you can see the cookies, the settings, extensions, etc., and the logins done in the previous session are present here.

Преимущество в том, что вы можете использовать несколько папок с разными настройками и файлами cookie, расширениями без необходимости загружать, выгружать файлы cookie, устанавливать и деинсталлировать расширения, изменять настройки, изменять логины входа с помощью кода и, таким образом, не нарушать логику работы программы и т.д.

Кроме того, это быстрее, чем делать все это с помощью кода.

Ответ 3

Помните, вы можете добавлять файлы cookie только для текущего домена.

Если вы хотите добавить файл cookie для своей учетной записи Google, выполните следующие действия

browser.get('http://google.com')
for cookie in cookies:
browser.add_cookie(cookie)
Ответ 4

Всего лишь небольшая модификация кода, написанная Роэлом Ван де Пааром, поскольку вся заслуга принадлежит ему. Я использую это в Windows, и оно отлично работает, как для настройки, так и для добавления файлов cookie:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('chromedriver.exe',options=chrome_options)
driver.get('https://web.whatsapp.com') # Already authenticated
time.sleep(30)
python python-2.7 selenium