После исследования выглядит, что URL, который вам нужно опубликовать для входа в систему: http://54.161.205.225/Project/accounts/login/?next= / Project /
Вы можете решить, что вам нужно отправить в запрос на публикацию с помощью вкладки Chrome DevTools, Network. Это говорит нам о том, что вам нужно отправить поля username
, password
и csrfmiddlewaretoken
, которые вам нужно извлечь со страницы.
Вы можете получить его, извлекая его из ответа первого получить запрос. Он хранится на странице следующим образом:
<input type="hidden" name="csrfmiddlewaretoken" value="OspZfYQscPMHXZ3inZ5Yy5HUPt52LTiARwVuAxpD6r4xbgyVu4wYbfpgYMxDgHta">
Так что вам понадобится какое-то регулярное выражение, чтобы получить его. Вы решите это.
Итак, сначала вы должны создать session
. Затем загрузите страницу входа с запросом get. Затем отправьте запрос с вашими учетными данными на тот же URL. И тогда ваша сессия получит необходимые куки, которые затем позволят вам публиковать на желаемый URL. Это пример ниже.
import requests
# Create session
session = requests.session()
# Add user-agent string
session.headers.update({'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) ' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'})
# Get login page
response = session.get('http://54.161.205.225/Project/accounts/login/?next=/Project/')
# Get csrf
# Do something to response.text
# Post to login
response = session.post('http://54.161.205.225/Project/accounts/login/?next=/Project/', data={
'username': 'example123',
'password': 'examplexamplexample',
'csrfmiddlewaretoken': 'something123123',
})
# Post desired data
response = session.post('http://url.url/other_page', data={
'data': 'something',
})
print(response.status_code)
Надеюсь, это поможет вам. Удачи.
Для получения дополнительной информации проверьте этот вопрос по запросам: Python Запросы и постоянные сеансы