Вам нужно сначала сделать запрос GET для этого URL-адреса и проанализировать правильное значение CSRF из ответа (в данном случае user_token
). В ответе HTML вы можете найти скрытое значение:
<input type="hidden" name="user_token" value="28e01134ddf00ec2ea4ce48bcaf0fc55">
Кроме того, кажется, что вам нужно включить файлы cookie из первого GET
запроса для следующего запроса - это можно сделать автоматически с помощью запроса. Объект Session (). Вы можете увидеть файлы cookie, например, print(resp.cookies)
из первого ответа.
Вот измененный код. Я использую библиотеку BeautifulSoup для анализа html - она находит правильное поле ввода и получает из него значение.
POST
метод впоследствии использует это значение в параметре user_token
.
from bs4 import BeautifulSoup
import requests
with requests.Session() as s:
url = 'http://192.168.43.1:8080/login.php'
resp = s.get(url)
parsed_html = BeautifulSoup(resp.content, features="html.parser")
input_value = parsed_html.body.find('input', attrs={'name':'user_token'}).get("value")
data_dict = {"username": "admin", "password": "password", "Login": "Login", "user_token":input_value}
response = s.post(url, data_dict)
print(response.content)