Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров17K

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

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

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

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

Теги:
Хабы:
+6
Комментарии0

Публикации

Истории

Работа

Python разработчик
142 вакансии
Data Scientist
63 вакансии

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн