#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 для остановки () загрузки страницы