Сессия Python-запросов, работающая с CSRF - PullRequest
0 голосов
/ 04 июня 2019

Итак, у меня есть два куска кода. Это работает:

import requests

url = 'http://XXXXXX.com.au?xxxxx'
r = requests.get(url,auth = ('user', 'password'), headers = {'X-CSRF-TOKEN': 'Fetch'})
token = r.headers['x-csrf-token']
c = requests.utils.dict_from_cookiejar(r.cookies)

reqData = {'param' : 'value'}
headers = {'X-CSRF-TOKEN': token}
r = requests.post(url, auth = ('user', 'password'), data = reqData, headers = headers, cookies = c)

Этот не:

import requests

s = requests.Session()
url = 'http://XXXXXX.com.au?xxxxx'

s.auth = ('user', 'password')
s.headers.update({'X-CSRF-TOKEN': 'Fetch'})
r = s.get(url)
token = r.headers['x-csrf-token']

c = s.cookies

reqData = {'param' : 'value'}
headers = {'x-csrf-token': token}
r = s.post(url, data=reqData, headers=headers, cookies=c)

Я попробовал второй код с явным копированием и передачей с помощью файлов cookie и без него, а также преобразовал его из cookiejar в dict. Не удалось получить проверку токена CSRF.

Я рад, что пока пользуюсь первым вариантом, но что именно я делаю не так с Session? Может быть, это просто особенность данного веб-сервера?

...