Как авторизоваться на сайте с защитой от CSRF?

есть необходимось сделать парсинг сайта, вся ниформация на нем доступна только после авторизации, с авторизацией возникают проблемы.
сайт вероятнее всего на django, при отправке пост запроса на сервер уходит логин, пароль, флаг "запомни меня" и csrf токены(один в куках, другой из тела страницы) проблема в том что на все мои потуги возвращается 500
пример кода:
import requests,re

session = requests.Session()
r1 = requests.get('https://report.xxx.ru/user/security/login')
csrftoken = re.findall(r"[^\"\>\{\}\\]{86}==", r1.text) #вычленяем csrftoken из тела страницы
print(r1.cookies)

data={'login-form[username]': 'login', 'login-form[password]': 'password', 'login-form[rememberMe]': '0', '_csrf': csrftoken[1]}

r2 = session.post("https://report.xxx.ru/user/security/login", params=data)
print(data)
print(r2.status_code)
print(r2.text)

r = session.get('https://report.xxx.ru/report/report/view?id=1')

может кто подсказать с чем связанна данная проблема, или как ее продиагностировать?
upd: искомый результат это 302 код при успешной авторизации
  • Вопрос задан
  • 2395 просмотров
Решения вопроса 1
@GhostGavr Автор вопроса
проблема была в том что передавать параметры формы авторизации и токены csrf необходимо было используя data а не params
r2 = session.post("https://report.xxx.ru/user/security/login", data=data)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Revencu
@Revencu
Добавьте в requests allow_redirects=True

Можно добавить и verify=False
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы