Перенаправление после AJAX-запроса, даже если заголовки и атрибуты данных передаются правильно с Python3 - PullRequest
1 голос
/ 17 марта 2019

На правительственном сайте мне удалось войти через мои кредитные данные (указанные как * питонский диктон в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...