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

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

Источник: https://habr.com/ru/post/587708/


Интересные статьи

Интересные статьи

Может быть, не все знают. В интернете работает Консорциум Всемирной паутины (World Wide Web Consortium или W3C). Именно он разрабатывает принципы и стандарты, которые потом внедряют производители ...
Начнем моделировать генетику популяции при помощи методов Монте-Карло, на примере рыбок в аквариуме, задавая генотип исходной популяции и пересчитывая его изменение от по...
Во вторник, 2 июня в 20:00 Ашот Оганесян будет отвечать на ваши вопросы об утечках данных в нашем инстаграм-аккаунте. Вы можете задать ему свой вопрос в комментариях к этому посту...
По состоянию на 9 марта 2020 мы имеем резкое снижение рынков США начиная с исторического максимума в 20-числах февраля 2020, которое на данный момент составило около -16%. Новости пестрят заголов...
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...