Selenium python как сохранить данные сессии и установить кастомный путь до профиля Chrome

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

Аргументы которые помогли решить мой вопрос:

user-data-dir=PATH – Указывает расположение папки с профилями.

--profile-directory=Profile 1 – Задает папку профиля, по умолчанию стоит Default.

--allow-profiles-outside-user-dir – Позволяет указать кастомное расположение папки с профилями.

from time import sleep
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
options.add_argument('--allow-profiles-outside-user-dir')
options.add_argument('--enable-profile-shortcut-manager')
options.add_argument(r'user-data-dir=.\User')
options.add_argument('--profile-directory=Profile 1')

with webdriver.Chrome(ChromeDriverManager().install(), options=options) as driver:
    driver.get("https://www.epicgames.com/store/ru/")
    sleep(120)
    print("Close")

После включения данных аргументов, данные будут сохранятся в папку User рядом с проектом и после каждого перезапуска будут подгружаться chrome-мом.

В коде используется библиотека webdriver-manager, облегчающая установку драйвера для браузера.

Дополнительная информация, полученная в ходе работы:

  1. Стандартный профиль chrome-а не удается использовать в  headless режиме и наоборот.

  2. Если надо пройти двухфакторную аутентификацию на сайте через headless chrome, то можно добавить следующий аргумент:--remote-debugging-port=9222

    Он поднимет удаленный сервер по адресу localhost:9222 через который можно управлять headless chrome-мом.

  3. При отключении детекта chromedriver-а ( аргумент: --disable-blink-features=AutomationControlled), chrome перестал сохранять данные профиля. Помогли исправить ситуацию следующие аргументы:

     --profiling-flush=n – сбрасывает данные профиля в файл через n-ое число секунд.

    --enable-aggressive-domstorage-flushing – минимизирует потерю данных.

Все аргументы были взяты отсюда: https://peter.sh/experiments/chromium-command-line-switches

Спасибо за прочтение.

Tags:
selenium, python, headless chrome

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.