Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 22.02.2023
Сообщений: 4
1

Парсер файлов на Python. Не проходит авторизация

22.02.2023, 15:54. Показов 759. Ответов 4

Author24 — интернет-сервис помощи студентам
Добрый день. Форумом пользуюсь давно, однако вопрос задаю впервые.

Вопрос: При авторизации по логину и паролю на сайте не проходит авторизация, данные введены верные.

Код сгенерирован нейронкой, пробовал различные методы входа, через библиотеку selenium, по куки. (Не просто попросил код у нейронки и запустил его без изменений). Не работает. Сижу вторые сутки пытаюсь разобраться в чем дело, но понять не могу.

Суть скрипта(кратко):

Авторизуется на странице входа, переходит на страницу со списком файлов, ищет файл, в котором присутствует слово "fk_gsem", если такой есть - скачивает на рабочий стол.

----------------------------------
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
import os
import requests
from bs4 import BeautifulSoup
 
# Логин и пароль для авторизации
username = 'your_username'
password = 'your_password'
 
# Создаем сессию, чтобы сохранить куки после авторизации
with requests.Session() as session:
    # Отправляем POST-запрос с логином и паролем, чтобы авторизоваться
    login_url = 'https://sts.urfu.ru/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fistudent.urfu.ru&wctx=https%3a%2f%2fistudent.urfu.ru%2f_auth%2fdefault.aspx'
    login_data = {'UserName': username, 'Password': password}
    response = session.post(login_url, data=login_data)
 
    # Проверяем успешность авторизации
    if 'Вход в систему выполнен' not in response.text:
        print('Не удалось авторизоваться')
        exit()
 
    # Если авторизация прошла успешно, переходим на страницу с файлами
    files_url = 'https://istudent.urfu.ru/s/fileslist'
    response = session.get(files_url)
 
    # Парсим HTML-код страницы с файлами с помощью BeautifulSoup
    soup = BeautifulSoup(response.text, 'html.parser')
 
    # Ищем все ссылки на файлы Excel на странице
    excel_links = soup.select('a[href$=".xlsx"]')
 
    # Перебираем все ссылки на файлы Excel, пока не найдем нужный
    for link in excel_links:
        # Переходим на страницу файла
        file_url = link['href']
        file_response = session.get(file_url)
 
        # Если файл содержит слово "fk_gsem", то скачиваем его и выходим из цикла
        if 'fk_gsem' in file_response.content.decode('utf-8'):
            # Получаем имя файла из ссылки
            filename = file_url.split('/')[-1]
 
            # Скачиваем файл и сохраняем на рабочий стол с новым именем
            with open(os.path.join(os.path.expanduser('~'), 'Desktop', 'new_file.xlsx'), 'wb') as f:
                f.write(file_response.content)
            break
    else:
        print('Не найдено ни одного файла, содержащего "fk_gsem"')
----------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2023, 15:54
Ответы с готовыми решениями:

Авторизация на сайте через парсер Python
Хочу написать парсер для сайта, где необходимо пройти авторизацию, чтобы получить доступ к...

Не проходит авторизация
Доброго времени суток. Помогите пожалуйста найти проблему: Для авторизации использую данную...

Не проходит авторизация
Всем привет. Есть веб-интерфейс для создания аудио-конференций. Проблема заключается в том, что не...

Авторизация не проходит
Доброго времени суток! Помогите пожалуйста понять, куда дальше рыть в авторизации: 1) Есть...

4
2430 / 1473 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
22.02.2023, 22:05 2
В логин должно дописываться @at.urfu.ru, запрос должен быть вида.
Код
UserName=user_login%40at.urfu.ru&Password=user_password&AuthMethod=FormsAuthentication
Через Selenium вообще все просто вроде бы.
Python
1
2
3
4
5
6
7
8
9
10
driver.get('https://sts.urfu.ru/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fistudent.urfu.ru&wctx=https%3a%2f%2fistudent.urfu.ru%2f_auth%2fdefault.aspx')
 
login = driver.find_element(By.XPATH, "//input[@id='userNameInput']")
login.send_keys('user_login')
 
password = driver.find_element(By.XPATH, "//input[@id='passwordInput']")
password.send_keys('user_password')
 
submit = driver.find_element(By.XPATH, "//span[@id='submitButton']")
submit.click()
0
2 / 2 / 0
Регистрация: 22.02.2023
Сообщений: 4
23.02.2023, 19:52 3
Когда с авторизацией не получается я захожу через undetected_chromedriver или selenium, прохожу вручную авторизацию, забираю печеньки и потом пользуюсь. Для requests cookies сохраняю в json-файл. Может это по деревенски , но...))
0
3 / 3 / 0
Регистрация: 28.12.2020
Сообщений: 22
25.02.2023, 00:37 4
Как сказал комментатор выше - заходи через селениум вручную с забиранием куки через pickles. Удобно пользоваться юпитером в случае, когда пошагово работаешь с кодом и селениумом. А потом когда куки заберёшь в файл - будешь спокойно логиниться
1
0 / 0 / 0
Регистрация: 22.02.2023
Сообщений: 4
26.02.2023, 11:47  [ТС] 5
Да, я так и сделал. Спасибо за помощь Переписал код под селениум, он автоматом все открывает и сохраняет сессию.
0
26.02.2023, 11:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2023, 11:47
Помогаю со студенческими работами здесь

Авторизация не проходит
написал такой скрипт, только вот не пойму почему всегда срабатывает что "авторизация не прошла",...

Не проходит авторизация на сайте
<?php //Строки для занесения логина, пароля и имени if (isset($_POST)) { $login = $_POST; if...

Не проходит авторизация пользователя
в программе не осуществляется авторизация пользователя, пишет ошибки:

Dovecot не проходит авторизация
Приветствую! Не могу зайти с Roundcube и с Thunderbird Кто знает, что не так? Логи: Roundcube...

Не проходит авторизация на сайте
Пытаюсь программно авторизоваться на сайте, но как бы не пытался, все ровно при запросе данных...

Не проходит авторизация Вконтакте
Здравствуйте, пытаюсь пройти авторизацию вк через POST запрос. Получаю action. Но при отправке...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru