Найти - Пользователи
Полная версия: Авторизация на сайте
Начало » Python для новичков » Авторизация на сайте
1
roggerg
Мне надо реализовать автризацию на 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)
Приходит 403 ответ. Почему не проходит авторизация?
Использую питон 3.5
scidam
Нужно запомнить csrftoken, который передается в cookie и передать его в post запросе при авторизации.

Попробуйте следующее:

 mysession = requests.session()
mysession.get(url)
user_data.update({'csrfmiddlewaretoken': mysession.cookies['csrftoken']})
response = mysession.post(url, data=user_data)

И, конечно, парсить почту через web-интерфейс mail.ru будет очень не просто; Поэтому, скорее всего вы бы хотели использовать общение с почтовым сервером по протоколу IMAP (есть для этого Python библиотека)…
roggerg
scidam
Нужно запомнить csrftoken, который передается в cookie и передать его в post запросе при авторизации.Попробуйте следующее:
Спасибо, с вашими рекомендациями авторизация прошла. Не могли бы вы объяснить что делает эта строчка, я понимаю что идет запрос на получение страницы но почему она не присвоена какой-нибудь переменной.
mysession.get(url)

Этот способ авторизации будет работать для всех сайтов с http?

Так а для общения с сервером про протоколу IMAP мне ведь нужно подобную авторизацию сделать? Или для этого использовать возможности библиотеки IMAP
scidam
Строчка “mysession.get(url)” нужна, чтобы получить текущее значение csrf токена. csrf токен сохраняется в mysession.cookies, и его нам нужно отдать при отсылке формы, иначе запрос не пройдет (сайт-то работает на django и использует стандартную защиту от csrf-атак).

> Этот способ авторизации будет работать для всех сайтов с http?

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







roggerg
scidam
Строчка “mysession.get(url)” нужна, чтобы получить текущее значение csrf токена. csrf токен сохраняется в mysession.cookies, и его нам нужно отдать при отсылке формы, иначе запрос не пройдет (сайт-то работает на django и использует стандартную защиту от csrf-атак).> Этот способ авторизации будет работать для всех сайтов с http?Конечно нет. Сервер может иметь хитрые способы проверить кто пытается авторизоваться/зарегистрироваться робот или человек. Начиная от простой проверки заголовков запроса и/или использования javascript скриптов на странице, чтобы оценить по поведению на странице не робот ли выполняет запросы.

Спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB