Отправить POST запрос с данные формы (
), используя requests

С помощью Chrome -> F12 -> Networks узнал что посылает POST запрос на сервер.

Сайт генерит код "user-registration-login-nonce". При попытке войти на сайт, используя requests, не могу войти. Если же вхожу в браузер, добываю собственно код вручную , и шлю его в теле (data) POST запоса, то все работает.

Вопрос: Можно ли как то получить этот код без браузера? Или сымитировать браузер через python3 (от количества header-ов ничего не меняется, проверил), чтобы сайт выдал этот код. Может можно как то добыть код, используя requests.Session(), но тогда объясните как.

Вот собственно то, что посылает POST:

username:

password: 

user-registration-login-nonce: 951eaa1c33  # <- нужный код

_wp_http_referer: /login-page/

login: Login

redirect: 

Спасибо!


Ответы (2 шт):

Автор решения: Hamper

Если не очень заморачиваться, то смотреть надо в сторону Chrome HeadLess. В этом режиме хром ничего не показывает, но ведет себя как абсолютно полноценный браузер. Управлять им при этом можно программно.

→ Ссылка
Автор решения: Vektor Valentine
#import requests
#from bs4 import BeauifulSoup 

url = 'https://this/is/my/URL'
our_data = {'key':'value'}
hiden_key = 'user-registration-login-nonce' #Нужно достать значение к этому ключу


#Создем текущюю сессию:
ses = requests.Session()

#Отправляем первый запрос на сервер, чтобы добыть значение:
s_response = ses.post(url, data = our_data)

#Если сервер ответил корректно (status_code == 200), то извлекаем значение:
soup = BeautifulSoup(s_response.text)
hiden_value = soup.find('input', {'id' : hiden_key}).get_attribute_list('value')

#Добавляем пару ключ-значение в форму запроса:
our_data[hiden_key] = hiden_value

#Теперь, когда значение у нас, снова делаем запрос:
s_response = ses.post(url, data = our_data)
→ Ссылка