Заполнение формы на сайте с помощью request в Python, и вывод результата
Доброе время суток всем ! Не могу разобраться что не так. Хочу заполнить форму на сайте: https://my.gov.uz:8040/ru/communal-services/default/view?id=3 Через просмотр кода в Chrome Network, увидел что именно отправляет браузер когда отправляется форма. На основе вывода выделил для себя свои необходимые поля для заполнения:
datas = {
"_csrf-infokiosk" : csrftoken[-1],
"CommunalService[region_id]" : "def",
"CommunalService[sub_region_id]" : "def",
"CommunalService[account_number]" : "def"
}
На сайте стоит защита CSRF, нашел путь его обхода:
r1 = requests.get('https://my.gov.uz:8040/ru/communal-services/default/view?id=3')
csrftoken = re.findall(r"[^\"\>\{\}\\]{86}==", r1.text) #вытаскиваю csrftoken из страницы
Но код возвращает ошибку 400. Помогите разобраться, что я делаю не так?
Весь код:
import requests
import re
r1 = requests.get('https://my.gov.uz:8040/ru/communal-services/default/view?id=3')
csrftoken = re.findall(r"[^\"\>\{\}\\]{86}==", r1.text) #вычленяем csrftoken из тела страницы
print(csrftoken[-1])
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/80.0.3987.160 Chrome/80.0.3987.163 Safari/537.36'
}
datas = {
"_csrf-infokiosk" : csrftoken[-1],
"CommunalService[region_id]" : "def",
"CommunalService[sub_region_id]" : "def",
"CommunalService[account_number]" : "def"
}
regionid = input("Enter Region: ")
subregid = input("Enter ESP: ")
accnumbr = input("Enter Account Number: ")
datas["CommunalService[region_id]"] = regionid
datas["CommunalService[sub_region_id]"] = subregid
datas["CommunalService[account_number]"] = accnumbr
url = "https://my.gov.uz:8040/ru/communal-services/default/view?id=3"
s = requests.Session()
loging = s.post(url, params = datas, headers = headers)
f = open("result.txt", "w+")
f.write(loging.text)
f.close()
Для теста:
D:\Python>python main.py
Enter Region: 26
Enter ESP: 262
Enter Account Number: 0606210