Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176

Авторизация на openedu.ru

09.05.2018, 22:04. Показов 4308. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Мне тут захотелось авторизоваться на openedu.ru исользуя requests.
Но вот вдруг возникла проблема, при использовании следующего кода
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests
from html.parser import *
 
headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    # 'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
    'Connection': 'keep-alive',
    'Host': 'sso.openedu.ru',
    'X-Requested-With': 'XMLHttpRequest',
    'Referer': 'https://openedu.ru/'
}
s = requests.Session()
s.get('https://openedu.ru/') #нужно для того, чтобы получить этот csrf, он хранится в cookie
ans = s.post('https://sso.openedu.ru/login/', data = {
    'username': 'ivanovich2', #аккаунт рабочий, был создан специально для помощи, и меньшей возни
    'password': 'Ivanov123'
}, headers = headers, cookies = s.cookies.get_dict())
print(ans.status_code)
Я получаю в ответ что-то вроде
Code
1
2
3
Ошибка доступа (403)
Ошибка проверки CSRF. Запрос отклонён.
В отладочном режиме доступно больше информации. Включить отладочный режим можно, установив значение переменной DEBUG=True.
Как можно передать и правильно получить этот csrf токен, чтобы наконец авторизоваться? И что за переменная DEBUG?

Добавлено через 39 минут
Цитата Сообщение от elch10 Посмотреть сообщение
print(ans.status_code)
Извиняюсь, я имел в виду это
Python
1
print(ans.text)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2018, 22:04
Ответы с готовыми решениями:

Виртуальная лаборатория Openedu, макросы
Неделя 7 Напишите макрос do-sym-nums, который позволяет перечислить все симметричные числа из заданного диапазона. Будем называть...

Поиск подмассива в массиве (задача с сайта openedu)
Никак не получается решить задачу на сайте, выдает ошибку( Проверял код в Visual Studio 2019 - все работает без проблем. Сам код: ...

Очень надо и быстро. Clisp лабораторная с openedu номер 3
Прочитать трехмерный массив из стандартного потока ввода. Массив может содержать элементы различных типов – целые, вещественные,...

6
 Аватар для Wi0M
395 / 123 / 48
Регистрация: 26.10.2013
Сообщений: 734
16.05.2018, 00:07
для начала надо ознакомиться вообще что такое CSRF и для чего нужно) как раз для таких вот случаев кстати и нужно) Создаешь сессию и перед отправкой запроса на авторизацию получаешь страницу и выковыриваешь из формы токен CSRF, затем подставляешь в запрос и отправляешь)

Добавлено через 1 минуту
а ты когда данные для post запроса смотрел, не видел что там csrf токен отправляется?))
0
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176
16.05.2018, 14:15  [ТС]
Цитата Сообщение от Wi0M Посмотреть сообщение
выковыриваешь из формы токен CSRF
Из какой формы? csrf токен у них вроде не хранится в форме, или я ошибаюсь?
Цитата Сообщение от Wi0M Посмотреть сообщение
а ты когда данные для post запроса смотрел, не видел что там csrf токен отправляется?))
У них он отправляется в поле cookie, ты думаешь тогда зачем я это сделал(18 строчка)?
Цитата Сообщение от elch10 Посмотреть сообщение
}, headers = headers, cookies = s.cookies.get_dict())
csrf как раз хранится в s.cookies.get_dict()
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.05.2018, 14:34
Цитата Сообщение от elch10 Посмотреть сообщение
У них он отправляется в поле cookie,
Он есть и в форме:
<input type='hidden' name='csrfmiddlewaretoken' value='sR6z91qfaLVnin4uas06cnjoTCvvKOJf' />
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
div class="auth-section">
      <form class="form-horizontal" method="post"
          action="/login/?"
          id="login_auth">
        <input type='hidden' name='csrfmiddlewaretoken' value='sR6z91qfaLVnin4uas06cnjoTCvvKOJf' />
        
        <div id="auth_form">
            
                <label for="" class="no-capitalization">Логин или e-mail:</label>
                
                <input class="span12" id="id_username" name="username" placeholder="" tabindex="1" type="text" />
            
                <label for="" class="no-capitalization">Пароль:</label>
                
                <input class="span12" id="id_password" name="password" placeholder="" tabindex="1" type="password" />
            
        </div>
И отправляется вместе с post-запросом.
P.S. Но, возможно, они делают какую-то еще проверку - у меня по простому залогиниться не вышло.
1
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176
16.05.2018, 14:37  [ТС]
ааа, спасибо, тогда мне остается значение этого токена просто вставить в соответствующее полсе переменной headers?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.05.2018, 15:46
Лучший ответ Сообщение было отмечено elch10 как решение

Решение

Вставлять нужно в словарь data post запроса.
Однако, как я написал чуть выше, залогиниться у меня не вышло.
Может где-то туплю, но сервер дает много редиректов и requests у меня возвращает 404-ой код ответа после двух:
...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
history = resp.history
        if history:
            for hist in history:
                print('{} |GET:{:30} |Redirect на:{}'.format(
                        hist,
                        hist.request.url,
                        hist.headers.get('Location','') 
                    )
                ) 
            '''
            <Response [302]> |GET:https://sso.openedu.ru/login/  |Redirect на:https://sso.openedu.ru/
            <Response [302]> |GET:https://sso.openedu.ru/        |Redirect на:https://openedu.ru/course/
            <Response [404]>
            '''
Хотя, если глянуть в отладчик браузера, редиректов должно быть больше. После указанных мной идут редиректы на:
Code
1
2
3
4
5
https://sso.openedu.ru/oauth2/authorize?
https://sso.openedu.ru/oauth2/authorize/confirm
https://sso.openedu.ru/oauth2/redirect
https://openedu.ru/complete/npoedsso/?
https://openedu.ru/course/
https://openedu.ru/course/ это конечная точка логина с кодом ответа 200. Но до нее чего-то не доходит...
1
16.05.2018, 21:39

Не по теме:

думаю после второй можно самому редирекнуться на 4-ую.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2018, 21:39
Помогаю со студенческими работами здесь

OpenEdu Учат программировать, делать сайты а фильтр починить не могут!
При попытке выбрать из 800 курсов только те что ближе к компьютерным наукам оказалось применение фильтра бесполезно - выбрал фильтр -...

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

Авторизация
Ребят, помогите, пожалуйста, не работает почему-то... Сижу уже 3 дня... На самой странице форма для авторизации: &lt;tr&gt; ...

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

Авторизация вк
Сколько уже искал, пробовал, ничего не работает. Можете дать исходник авторизации вк через API?


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru