Модуль запросов Python не публикуется в определенных полях ввода

#python #html #python-requests

#питон #HTML #python-запросы #python

Вопрос:

Я пытаюсь очистить данные с веб-сайта за экраном входа в систему, и я столкнулся с проблемой с публикацией частей информации для входа с помощью метода post () из модуля запросов python.

Я получил имена каждого поля ввода HTML, которое необходимо заполнить, и поместил их в словарь вместе с их требуемым значением, а затем передал этот словарь методу post().

HTML со страницы входа:

 <input name="ctl00$ContentPlaceHolder1$TextBox1" type="text" value="" id="ContentPlaceHolder1_TextBox1" tabindex="1" class="form-control " placeholder="username" required="">
<input name="ctl00$ContentPlaceHolder1$TextBox2" type="password" id="ContentPlaceHolder1_TextBox2" tabindex="2" class="form-control" placeholder="password" required="" value="">
  

Затем, используя значение name для создания словаря, который передается post()

 formData = { 
    "ctl00$ContentPlaceHolder1$TextBox1": "FakeUsername",            
    "ctl00$ContentPlaceHolder1$TextBox2": "FakePassword"
    }

r = session.get(loginUrl)  # get cookies necessary for login
r = session.post(loginUrl, data=formData)
  

Это работает правильно для поля имени пользователя, но не отправляет пароль в поле пароля. Если я прочитаю HTML со страницы входа в систему после публикации данных, я получу:

 <input name="ctl00$ContentPlaceHolder1$TextBox1" type="text" value="FakeUsername" id="ContentPlaceHolder1_TextBox1" tabindex="1" class="form-control " placeholder="username" required="" />
<input name="ctl00$ContentPlaceHolder1$TextBox2" type="password" id="ContentPlaceHolder1_TextBox2" tabindex="2" class="form-control" placeholder="password" required="" />
  

Параметр «значение» поля ввода пароля больше не указан, даже в качестве пустого параметра. Попытка входа в систему после этого, конечно, не работает.

Я не смог понять, почему это происходит. Я позаботился о том, чтобы заполнить все скрытые поля ввода (EVENTVALIDATION, VIEWSTATE и т.д.), А также просмотрел заголовки веб-страниц, но все еще не повезло.

Веб-сайт, на который я пытаюсь войти, это:https://panel.forcad.org/Default.aspx

Я был бы очень признателен за помощь в выяснении того, что идет не так.

Ответ №1:

Вы сказали, что просмотрели заголовки, но вы должны иметь возможность копировать поведение браузера с заголовками запросов и файлами cookie. Попробуйте скопировать точные параметры для и файлы cookie при известном успешном входе в систему. Таким образом, вы можете сузить область поиска, если вы даже можете использовать запросы для отправки данных, которые он уже хочет. Возможно, у него есть какие-то трюки JS, или некоторые запросы не могут выполнить, если вы не можете повторно войти в систему с действительными файлами cookie. В этом случае, больше обратной инженерии или попробуйте selenium. pyvirtualdisplay может скрывать браузер и может использовать JS для остановки () загрузки страницы