Используйте запросы Python для входа в приложение laravel - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу использовать запрос python для входа в приложение Laravel и получения содержимого первой страницы после входа в систему. Я попытался:

import requests
import re

URL = 'laravelapp.url'

session = requests.session()

front = session.get(URL)
csrf_token = re.findall(r'<input type="hidden" name="_token" value="(.*)"', front.text)[0]

print(csrf_token)
print(session.cookies['XSRF-TOKEN'])

payload = {
    'email': 'email@example.com',
    'password': 'testtest',
    '_token': csrf_token,
}

r = requests.post(URL + '/login', data=payload)

print(r)

Но, к сожалению, это возвращает только ошибку 419.Так что, похоже, что-то не так с токеном csrf?Но я не могу понять, что происходит, куки должны управляться .sessions(), и я извлек токен csrf из формы входа в систему и поместил его в качестве параметра для данных публикации.Итак, чего не хватает?

1 Ответ

0 голосов
/ 03 февраля 2019

Вы должны отправить куки вместе с вашим запросом, как в:

import requests
import re

URL = 'laravelapp.url'

session = requests.session()

front = session.get(URL)
csrf_token = re.findall(r'<input type="hidden" name="_token" value="(.*)"', 
front.text)[0]

cookies = session.cookies

payload = {
    'email': 'email@example.com',
    'password': 'testtest',
    '_token': csrf_token,
}

r = requests.post(URL + '/login', data=payload, cookies=cookies)

print(r.text)
...