На правительственном сайте мне удалось войти через мои кредитные данные (указанные как * питонский диктон в login_data
) следующим образом:
with requests.Session() as s:
url = 'https:......../login'
r = s.get(url, data=login_data, headers=headers, verify=False)
r = s.post(url, data=login_data, headers = headers, verify=False)
print(r.content)
, который отображает HTML:
b'<!DOCTYPE html.....
и если я ищу свое имя пользователя, я нахожу <span class="rich-messages-label msg-def-inf-label">Welcome, USER..XYZ!<
, из которого я делаю успешный вход в систему.
Далее я хочу перейти к поисковому сайту (url = 'https:......./search
) сайта, на котором я сейчас захожу. Этот дочерний сайт позволяет мне искать в правительственных записях информацию об инциденте (incident-ID
) в определенный день (start_date
, end_date
).
из-за успешного входа в систему я попробовал следующее:
with requests.Session() as s:
url = 'https:......../search'
r = s.get(url, data=search_data, headers=headers, verify=False)
r = s.post(url, data=search_data, headers = headers, verify=False)
print(r.content)
Заранее я определил search_data, используя Google Chrome Inspecor для Сеть и Заголовок :
search_data:{
'AJAXREQUEST': '_viewRoot',
'theSearchForm': 'theSearchForm',
'incident-ID' : '12345',
'start_date' : '05/03/2019 00:00:00 +01:00',
'end_date' : '05/03/2019 23:59:59 +01:00',
}
и я указал, что заголовки включают больше, чем просто агент:
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Cookie': 'JSESSIONID=8351xxxxxxxxxxxxFD5; _ga=GA1.2.xxxxxxx.xxxxxxxx',
'Host': 'somehost...xyz.eu',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
}
Пока установка должна быть хорошей, нет? Но я столкнулся с проблемой, так как print(r.content)
не дает мне .html, как после входа в систему, но некоторые разочаровывающе короткие: b'<?xml version="1.0" encoding="UTF-8"?>\n<html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="Ajax-Response" content="redirect" /><meta name="Location" content="home.seam?cid=3774801" /></head></html>
это жалко, потому что я вижу в вдохновителе, что ответ на пост-запрос в браузере дает точные данные, которые я ищу. Аналогично, первый пост-запрос дает те же данные, что и моя команда python r = s.post(url, data=login_data, headers = headers, verify=False)
. Но print(r.content)
, как уже говорилось, выглядит как перенаправление, которое только возвращает меня на сайт входа в систему, сообщая , что вы уже вошли в систему .
Подводя итог:
- Первый
request.Session.get
& -.post
сработал (я получаю тот же html-ответ, что и в Инспекторе Google Chrome).
- Второй
request.Session.post
не работает, поскольку он просто приводит к странному перенаправлению (но я получаю
правильный ответ в Google Chrome Inspector).
Что мне не хватает ??? Пожалуйста помоги! : S