Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
beginner
 Аватар для Mikail7D6
301 / 213 / 104
Регистрация: 02.08.2022
Сообщений: 348

Создание сессии в Selenium

08.02.2025, 18:50. Показов 1838. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Пишу код который должен авторизоваться на сайте и в будущем отправлять некоторые данные со страниц отдельных лотов.
Написал код который вводит пароль и почту в соответствующие поля и нажимает кнопку Enter тем самым авторизуясь на сайте.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
 
driver = webdriver.Chrome()
 
driver.get('https://login.gaijin.net/en/sso/login/procedure/')
 
email = driver.find_element("id", "email")
email.send_keys("") #почта
 
passworld = driver.find_element("id", "password")
passworld.send_keys("") #пароль
 
passworld.send_keys(Keys.ENTER)
Теперь нужно создать что-то на подобии Сессии в requests, чтобы программа запоминала что я уже вошел на сайт и позволяла "гулять" по сайту без затруднений, я попробовал использовать куки, но у меня не получилось, возможно это из-за того что у сайта отдельная страница авторизации, а я пытался залить куки на главную страницу.
Прошу помощи в данном вопросе
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2025, 18:50
Ответы с готовыми решениями:

Как получить доступ к активной сессии гугл хрома через selenium?
Здравствуйте. Подскажите как получить доступ к активной сессии гугл хрома через selenium? Написал программу, которая заходит на сайт и...

Создание сессии в tensorflow 2.x
После чтения документации остались вопросы, нафига так сделано: вместо tf.Session() нужно городить огород с совместимостью со старой...

Selenium в chrome отваливается по таймауту
driver = webdriver.Chrome("/opt/google/chrome/google-chrome") не может подключиться к сети и выдает ошибку Traceback (most recent...

1
1320 / 539 / 67
Регистрация: 16.01.2013
Сообщений: 4,119
12.03.2026, 14:22
Mikail7D6, не тестировал код
Способ 1: Прямое использование кук из Selenium в requests (наиболее надежный)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import requests
import time
 
def login_and_get_session():
    driver = webdriver.Chrome()
    
    try:
        # Авторизация
        driver.get('https://login.gaijin.net/en/sso/login/procedure/')
        
        email = driver.find_element("id", "email")
        email.send_keys("your_email@example.com")
        
        password = driver.find_element("id", "password")
        password.send_keys("your_password")
        password.send_keys(Keys.ENTER)
        
        # Ждем завершения авторизации и редиректа
        time.sleep(5)
        
        # Получаем все куки из браузера
        selenium_cookies = driver.get_cookies()
        
        # Создаем сессию requests
        session = requests.Session()
        
        # Преобразуем куки Selenium в формат для requests
        for cookie in selenium_cookies:
            session.cookies.set(cookie['name'], cookie['value'], 
                              domain=cookie.get('domain', ''), 
                              path=cookie.get('path', '/'))
        
        # Важно! Устанавливаем корректные заголовки
        session.headers.update({
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language': 'en-US,en;q=0.5',
            'Accept-Encoding': 'gzip, deflate',
            'Connection': 'keep-alive',
        })
        
        return session, driver
        
    except Exception as e:
        print(f"Ошибка при авторизации: {e}")
        driver.quit()
        return None, None
 
# Использование
session, driver = login_and_get_session()
 
if session:
    # Теперь можно ходить по сайту с сохраненной авторизацией
    response = session.get('https://gaijin.net/ru/')  # или любой другой URL
    print(f"Статус главной страницы: {response.status_code}")
    
    # Не закрываем driver сразу, если он еще нужен
    # driver.quit()  # закрой, когда закончишь
Способ 2: Сохранение кук в файл для переиспользования
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import pickle
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import requests
import time
 
def save_cookies(driver, filename='cookies.pkl'):
    """Сохраняет куки в файл"""
    with open(filename, 'wb') as file:
        pickle.dump(driver.get_cookies(), file)
 
def load_cookies_to_session(filename='cookies.pkl'):
    """Загружает куки из файла в сессию requests"""
    session = requests.Session()
    
    if os.path.exists(filename):
        with open(filename, 'rb') as file:
            cookies = pickle.load(file)
            for cookie in cookies:
                session.cookies.set(cookie['name'], cookie['value'])
    
    return session
 
def first_time_login():
    """Первый вход - создаем и сохраняем куки"""
    driver = webdriver.Chrome()
    
    driver.get('https://login.gaijin.net/en/sso/login/procedure/')
    
    email = driver.find_element("id", "email")
    email.send_keys("your_email@example.com")
    
    password = driver.find_element("id", "password")
    password.send_keys("your_password")
    password.send_keys(Keys.ENTER)
    
    time.sleep(5)  # Ждем авторизацию
    
    # Сохраняем куки
    save_cookies(driver)
    
    # Создаем сессию с этими куками
    session = load_cookies_to_session()
    
    driver.quit()
    return session
 
# Использование
try:
    session = load_cookies_to_session()
    # Проверяем, работают ли куки
    test_response = session.get('https://gaijin.net/ru/')
    
    if test_response.status_code == 200 and 'login' not in test_response.url:
        print("Куки работают!")
    else:
        print("Куки устарели, нужна новая авторизация")
        session = first_time_login()
        
except Exception as e:
    print(f"Ошибка, выполняем новую авторизацию: {e}")
    session = first_time_login()
 
# Теперь можно работать с сессией
response = session.get('https://ваш-сайт.com/какой-то-лот')
print(response.text)
Способ 3: Использование Selenium для навигации (если requests не подходит)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
 
class SiteNavigator:
    def __init__(self):
        self.driver = webdriver.Chrome()
        self.wait = WebDriverWait(self.driver, 10)
        
    def login(self, email, password):
        """Выполняет вход на сайт"""
        self.driver.get('https://login.gaijin.net/en/sso/login/procedure/')
        
        email_field = self.driver.find_element("id", "email")
        email_field.send_keys(email)
        
        password_field = self.driver.find_element("id", "password")
        password_field.send_keys(password)
        password_field.send_keys(Keys.ENTER)
        
        # Ждем завершения авторизации
        time.sleep(5)
        
    def get_lot_data(self, lot_url):
        """Получает данные с конкретного лота"""
        self.driver.get(lot_url)
        
        # Ждем загрузки страницы
        time.sleep(3)
        
        # Здесь парсим нужные данные
        # Например:
        # title = self.driver.find_element(By.CSS_SELECTOR, 'селектор-заголовка').text
        # price = self.driver.find_element(By.CSS_SELECTOR, 'селектор-цены').text
        
        # Возвращаем данные
        return {
            'url': lot_url,
            'title': 'название лота',  # замени на реальный парсинг
            'price': 'цена'  # замени на реальный парсинг
        }
    
    def close(self):
        self.driver.quit()
 
# Использование
navigator = SiteNavigator()
navigator.login("your_email@example.com", "your_password")
 
# Получаем данные с разных лотов
lots = [
    'https://example.com/lot/1',
    'https://example.com/lot/2',
    'https://example.com/lot/3'
]
 
for lot_url in lots:
    data = navigator.get_lot_data(lot_url)
    print(f"Данные лота: {data}")
    
navigator.close()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2026, 14:22
Помогаю со студенческими работами здесь

Selenium Python не видит ALERT
написал автотест на один из сценариев по работе в результате чего выходит Всплывающее окно, с предупрждением, где надо выбрать да или...

Установить модуль selenium через pip на Windows
Привет программисты питон. есть проблема с установкой библиотеки селениум. версия питона 3.4.1. делаю все по инструкции с хабра: ...

Python Selenium и FireFox 48+
Недавно обнаружил что отвалился WebDriver FireFox т.е. раньше работало, а теперь перестало(после обновлений FF вероятно). Открывается...

Многопроцессорный парсер теряет ссылки при паринге (selenium+PhantomJS+ProcessPoolExecutor)
Я хочу написать парер для некоторого вебсайта, который имеет много JS кодов. Для этого я решил выб- рать связку...

python+selenium
Пытаюсь изучать python+selenium (python 2.7, selenium 2), тестирую портал. HTML код тестируюемой страницы <div...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru