Вход на сайт с использованием Python запросов с сеансами - PullRequest
2 голосов
/ 26 февраля 2020

Я просматриваю веб-сайт и собираю токен для повара ie, но я все еще не получаю статус зарегистрированного.

Вот мой код:

headers = {'Referer': 'https://www..com/accounts/login/'}

s = requests.Session()
# Get cookie
s.get('https://www..com/accounts/login/')
csrftoken = s.cookies['csrftoken']

payload = {
    'id_username': 'my_username',
    'id_password': 'my_password',
    'csrfmiddlewaretoken': csrftoken
}

p = s.post('https://www..com/accounts/login/', data=payload, headers=headers)
print(p.text)

Я не вижу явной ошибки при печати p.text, однако напечатанный HTML по-прежнему отображает вместо имени пользователя «Вход», а не мое имя пользователя, что происходит при входе в систему с помощью браузера.

Ты видишь, чего мне не хватает? Я думаю, что токен csrf снова был сброшен после входа в систему, но как я могу получить это, когда он передается при входе в систему?

Спасибо.

1 Ответ

2 голосов
/ 05 марта 2020

здесь, чтобы получить награду: P

Ваш код в порядке. Даже заголовок referer хорошо сформирован.

Но вот так должна выглядеть ваша полезная нагрузка:

payload = {
    'username': 'my_username',
    'password': 'my_password',
    'csrfmiddlewaretoken': csrftoken
}

Вы всегда go по имени поля с этими запросами, а не по идентификатору. Я только что успешно вошел в систему.

Удачи в проекте и не забывайте применять меры предосторожности, когда играете с чем-либо, кроме игрушечных денег.

ps .: единственной другой отсутствующей полезной нагрузкой будет «следующий» "но, видимо, не обязательно.

...