При создании своего бота я столкнулся с одной неприятной проблемой, заключалась она в том, что авторизация на сайте слетала на следующий день. Для корректной работы бота требовалось чтобы авторизация не слетала больше месяца, как при работе с обычным браузером.
Аргументы которые помогли решить мой вопрос:
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, облегчающая установку драйвера для браузера.
Дополнительная информация, полученная в ходе работы:
Стандартный профиль chrome-а не удается использовать в headless режиме и наоборот.
Если надо пройти двухфакторную аутентификацию на сайте через headless chrome, то можно добавить следующий аргумент:
--remote-debugging-port=9222
Он поднимет удаленный сервер по адресу localhost:9222 через который можно управлять headless chrome-мом.
При отключении детекта chromedriver-а ( аргумент:
--disable-blink-features=AutomationControlled
), chrome перестал сохранять данные профиля. Помогли исправить ситуацию следующие аргументы:--profiling-flush=n
– сбрасывает данные профиля в файл через n-ое число секунд.--enable-aggressive-domstorage-flushing
– минимизирует потерю данных.
Все аргументы были взяты отсюда: https://peter.sh/experiments/chromium-command-line-switches
Спасибо за прочтение.