@Ivan1320

Почему POST запрос возвращает ошибку CSRF verification?

Отправляю POST запрос на сайт для добавления сообщения на форум. На сайте предварительно залогинился и скопировал куки, которые передаю в сессию запроса.
При отправки GET запросов, через данную сессию, возвращаются страницы которые доступны только зарегистрированным пользователям. Т.е. куки передаются корректно.
При отправки POST запроса возвращается
CSRF verification failed. Request aborted.

You are seeing this message because this HTTPS site requires a 'Referer
header' to be sent by your Web browser, but none was sent. This header is
required for security reasons, to ensure that your browser is not being
hijacked by third parties

Какие еще параметры нужно передавать чтобы POST запрос обрабатывался корректно?
import requests

domain = '***'
header = {
    'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
}
session = requests.Session()
cookies_dict = [
    {'domain': domain,
     'name': 'sessionid_session',
     'path': '/',
     'value': '".eJyrVopPLC3JiC8tTi2KT0pMzk7NS1GyUkpJLcnOjC8oyk_LzEnVg4oX6zmXFpfk5zpBlekg680EajM2MzEyMqwFAD-UHmM:1pFDdv:eOxByiKOAHQAyNDdJfluwLV-VaQ"'},
    {'domain': f'www{domain}',
     'name': 'csrf__token',
     'path': '/',
     'value': 'uVDrE4ethIzvkxb6ihglmzk8P5yDlYNG'},
    {'domain': domain,
     'name': '_ym_d',
     'path': '/',
     'value': '1673347722'},
    {'domain': domain,
     'name': '_ym_isad',
     'path': '/',
     'value': '2'},
    {'domain': domain,
     'name': '_ym_uid',
     'path': '/',
     'value': '1673347722418692089'},
    {'domain': domain,
     'name': '_ym_visorc',
     'path': '/',
     'value': 'w'}
]
for cookies in cookies_dict:
    session.cookies.set(**cookies)

data_forum = {'csrfmiddlewaretoken': 'uVDrE4ethIzvkxb6ihglmzk8P5yDlYNG', 'backurl': '/sp/mode/163209/threads/422416/',
              'text': 'Отличный товар!'}
request_url = f'https://www{domain}/forum/thread/422416/reply/'
response = session.post(request_url, data=data_forum, headers=header)
print(response)
print(response.text)
  • Вопрос задан
  • 251 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

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