@who_is_your__idol
Совсем начинающий энтузиаст(горе-программист?)

Как сделать, чтобы selenium открывал уже авторизированную страничку?

Привет, эксперты! Нужна помощь. Как сделать так, чтобы при запуске скрипта, соответственно, переходе по ссылке, каждый раз не открывалась новая сессия? Типа, каждый раз, по новой, приходится авторизироваться на сайте. Но на сайте нет формата логин/пароль. Там авторизация только через тг (подтверждение сессии). Собственно, нужно сделать так, чтобы селениум открывал браузер с уже сохранённой сессией. Код прикрепляю ниже

from selenium import webdriver
from selenium.webdriver.common.by import By
import time


driver_path = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"


driver = webdriver.Chrome()


driver.get('https://')


button_element = driver.find_element(By.CLASS_NAME, 'checkin-day-today-label-check')
button_element.click()



time.sleep(10)  
driver.quit()
  • Вопрос задан
  • 188 просмотров
Пригласить эксперта
Ответы на вопрос 2
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Как сделать так, чтобы при запуске скрипта, соответственно, переходе по ссылке, каждый раз не открывалась новая сессия?

Самый простой вариант - использовать отдельный профиль хрома (независимая постоянная сессия браузера):
import os
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# ChromeDriver path (https://sites.google.com/chromium.org/driver/downloads)
chromedriver_path = r'C:\project\chromedriver.exe'

# Chrome profile path
profile_dir = r'C:\project\chrome-profiles\1'

# Create chrome profile (run in console):
# $ chrome C:\project\chrome-profiles\1
#
# or
#
# auto create chrome profile (if need)
if not os.path.exists(profile_dir):
    os.makedirs(profile_dir)

# Using chrome profile
options = webdriver.ChromeOptions()
options.add_argument(f'--user-data-dir={profile_dir}')

# Init
service = Service(executable_path=chromedriver_path)
driver = webdriver.Chrome(service=service, options=options)

# Open website
driver.get('https://maps.yandex.ru/')

# Delay and close driver
time.sleep(10)
driver.quit()

Проверяем:

Первый запуск скрипта с переходом на maps.yandex.ru, геолокация запрещена по умолчанию - разрешаем:
668e3052bf021461087359.png

второй запуск скрипта с переходом на maps.yandex.ru, геолокация уже разрешена (сессия сохранилась):
668e30657546e504380167.png
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL
Сохрани куки в файл после авторизации
driver.get("http://www.blabla.bla")
pickle.dump(driver.get_cookies(), open("cookies.pkl", "wb"))

Потом загружай
driver.get("http://www.blabla.bla")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы