Запуск с сохранением авторизации на сайтах selenium

Я пишу код который будет раз в какое-то время запускать сайт, дело в том что на нём авторизация через дискорд и чтобы действие выполнилось я должен уже быть в аккаунте на сайте.

Текущий код запускает от нового пользователя

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

driver = webdriver.Chrome()
driver.get("https://discordserver.info/1082180028151906316/like")

Я видел вариант что можно добавить параметры для запуска с профиля

chrome_options.add_argument("--profile-directory=Profile 3")

Такой вариант запускает также без входа в аккаунт

chrome_options.add_argument("--user-data-dir=C:\\Users\\Кирилл\\AppData\\Local\\Google\\Chrome\\User Data")  # Путь к вашему профилю Chrome
chrome_options.add_argument("--profile-directory=Profile 3")

А такой вариант уже входит в нужный профиль но не открывает сайт

Кто-то может помочь разобраться? P.S. Ещё нужно чтобы оно запускалось в фоновом режиме


Ответы (1 шт):

Автор решения: Matvj

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

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
from selenium.webdriver.chrome.options import Options

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

driver = webdriver.Chrome(executable_path="C:\\Users\\chromedriver.exe", chrome_options=chrome_options) 
driver.get("https://discordserver.info/1082180028151906316/like")
sleep(120)
print("Close")

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

Дополнительная информация:

  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://m.youtube.com/playlist?list=PLqGS6O1-DZLp1kgiQNpueIMCHRNzgHa1r, https://qna.habr.com/q/1330430, https://codeby.net/threads/metody-obxoda-zaschity-ot-avtomatizirovannogo-po-v-brauzere-chrome-pod-upravleniem-selenium-v-python.81358/.

→ Ссылка