Сохранение веб-сессии из открытой формы входа в систему Python - PullRequest
0 голосов
/ 22 апреля 2020

Я пишу сценарий Python для небольшого приложения, которое нужно очистить в Интернете. Содержимое, которое я хочу, находится за экраном входа в систему, но из-за характера веб-страницы (и моего варианта использования) я бы предпочел представить пользователю фактический экран входа в систему, а не публиковать сохраненные переменные из сценария Python.

Можно ли как-то представить пользователю официальную страницу входа на сайт в окне и записать сеанс для использования в моей программе (с запросами, угрем, электроном или аналогичным)?

POSTLOGINURL = 'www.example.com/login'
REQUESTURL = 'www.example.com/page_to_scrape'

    payload = {'username': 'myusername', 'password': 'mypassword'}

    with requests.Session() as session:
        post = session.post(POSTLOGINURL, data=payload)
        t = print(session)
        r = session.get(REQUESTURL)
        print(r.text)

Страница REQUESTURL (казалось бы, вошла в систему) печатается как страница «идентифицирующего мою цифровую идентификацию», которая обычно перенаправляется с помощью JavaScript в браузере на запрашиваемую страницу. Есть ли способ обойти это с помощью инструментов выше или аналогичных (проверка происходит только один раз)?

1 Ответ

0 голосов
/ 22 апреля 2020

Сеанс входа в систему, вероятно, хранится в кулинарии ie. Таким образом, вы можете сохранить информацию повара ie.

with requests.Session() as session:
        post = session.post(POSTLOGINURL, data=payload)
        t = print(session)
        r = session.get(REQUESTURL)
        cookie = session.cookie
        with open('somefile', 'wb') as f:
            pickle.dump(cookie, f)

Затем просто загрузите файл в сеанс в следующий раз.

session = requests.session()
with open('somefile', 'rb') as f:
    session.cookies.update(pickle.load(f))
...