@mikesaven

Как программно получить определенный Cookies(SID) при авторизации на сайте с использованием Python?

Уважаемые участники форума!

Я сталкиваюсь с задачей получения cookies после авторизации на сайте банка, используя Python. Моя цель — автоматизировать процесс входа и получить необходимые cookies для дальнейших действий.

Согласно документации. Аутентификация проходит на странице Банка, которая вызывается по ссылке, содержащей адрес возврата. SID должен содержаться в cookie ответа в поле auth_sid при успешной аутентификации. Пример SID: 0034696077-bae38d. Так как аутентификация проходит на странице Банка, ее требуется вызывать из ПО которое будет использовать API.

Я попытался использовать библиотеку requests для отправки POST-запроса на страницу входа, предоставив учетные данные, но столкнулся с некоторыми трудностями.

Понял что нужно использовать программное открытие браузера. Пробую selenium. Но нужного cookies в списке не приходит.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time

# Настройка опций для запуска Chrome в headless режиме
chrome_options = Options()
chrome_options.add_argument("--headless")  # включение headless режима
chrome_options.add_argument("--no-sandbox")  # режим без песочницы
chrome_options.add_argument("--disable-dev-shm-usage")  # отключить использование общей памяти
chrome_options.add_argument("--disable-gpu") 
# Инициализация драйвера Selenium с опциями
driver = webdriver.Chrome(options=chrome_options)

# Открыть страницу входа
driver.get("https://gg.Login?auth_return_url=https://gg.by:8243")

# Найти элементы ввода для логина и пароля
login_input = driver.find_element(By.NAME, 'sso_p_Login')
password_input = driver.find_element(By.NAME, 'sso_p_Password')

# Ввести учетные данные
login_input.send_keys('19293924')
password_input.send_keys('ssdvccc22fr')

# Отправить форму
password_input.send_keys(Keys.RETURN)

# Дать время для обработки ответа
time.sleep(5)

# Из них можно будет достать SID
cookies = driver.get_cookies()
print(cookies)  # Выведет список cookies


auth_sid = next((cookie['value'] for cookie in cookies if cookie['name'] == 'auth_sid'), None)
print(auth_sid)
# Закрыть браузер
driver.quit()


Единственный способ, как получается достать кук, когда заходишь и логинишься по ссылке в браузере, постоянно смотришь в режиме разработчика приложения -> cookies и снимаешь на камеру телефона..., кук проскакивает на секунду. Потом можно его достать из стоп кадра и работать сессию. Но это не совсем то что нужно для работы с API...

Возможно, кто-то из вас сталкивался с подобной задачей и может поделиться опытом или предоставить пример кода для успешной авторизации на сайте банка с использованием Python. Какие библиотеки или подходы лучше всего использовать? Как достать необходимый кук?

Заранее благодарен за любую поддержку и советы!
  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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