Форум сайта python.su
0
Мне надо реализовать автризацию на mail.ru для парсинга почты.
Но для начала решил попробовать на сайте python.su
import requests url = 'http://python.su/account/signin/' email = 'email' password = 'password' user_data = {'email': email, 'password': password} response = requests.post(url, data=user_data)
Отредактировано roggerg (Окт. 1, 2017 06:16:20)
Офлайн
35
Нужно запомнить csrftoken, который передается в cookie и передать его в post запросе при авторизации.
Попробуйте следующее:
mysession = requests.session() mysession.get(url) user_data.update({'csrfmiddlewaretoken': mysession.cookies['csrftoken']}) response = mysession.post(url, data=user_data)
Отредактировано scidam (Окт. 1, 2017 08:39:12)
Офлайн
0
scidamСпасибо, с вашими рекомендациями авторизация прошла. Не могли бы вы объяснить что делает эта строчка, я понимаю что идет запрос на получение страницы но почему она не присвоена какой-нибудь переменной.
Нужно запомнить csrftoken, который передается в cookie и передать его в post запросе при авторизации.Попробуйте следующее:
mysession.get(url)
Отредактировано roggerg (Окт. 1, 2017 21:50:44)
Офлайн
35
Строчка “mysession.get(url)” нужна, чтобы получить текущее значение csrf токена. csrf токен сохраняется в mysession.cookies, и его нам нужно отдать при отсылке формы, иначе запрос не пройдет (сайт-то работает на django и использует стандартную защиту от csrf-атак).
> Этот способ авторизации будет работать для всех сайтов с http?
Конечно нет. Сервер может иметь хитрые способы проверить кто пытается авторизоваться/зарегистрироваться робот или человек. Начиная от простой проверки заголовков запроса и/или использования javascript скриптов на странице, чтобы оценить по поведению на странице не робот ли выполняет запросы.
Офлайн
0
scidam
Строчка “mysession.get(url)” нужна, чтобы получить текущее значение csrf токена. csrf токен сохраняется в mysession.cookies, и его нам нужно отдать при отсылке формы, иначе запрос не пройдет (сайт-то работает на django и использует стандартную защиту от csrf-атак).> Этот способ авторизации будет работать для всех сайтов с http?Конечно нет. Сервер может иметь хитрые способы проверить кто пытается авторизоваться/зарегистрироваться робот или человек. Начиная от простой проверки заголовков запроса и/или использования javascript скриптов на странице, чтобы оценить по поведению на странице не робот ли выполняет запросы.
Офлайн