Может ли MechanicalSoup войти на страницу, требующую проверки подлинности SAML? - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь загрузить некоторые файлы с сайта единого входа (SSO). Похоже, что SAML аутентифицирован, вот где я застрял. После аутентификации я смогу выполнять запросы API, которые возвращают JSON, поэтому нет необходимости интерпретировать / очищать.

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

Вот что у меня есть на данный момент:

import mechanicalsoup
from getpass import getpass
import json

login_url = ...
br = mechanicalsoup.StatefulBrowser()
response = br.open(login_url)
if verbose: print(response)

# provide the username + password
br.select_form('form[id="loginForm"]')
print(br.get_current_form().print_summary()) # Just to see what's there. 
br['UserName'] = input('Email: ')
br['Password'] = getpass()
response = br.submit_selected().text
if verbose: print(response)

В этот момент я получаю страницу, сообщающую, что javascript отключена, и что я должен нажать «Отправить», чтобы продолжить. Поэтому я делаю:

br.select_form()
response = br.submit_selected().text
if verbose: print(response)

Вот где я получаю жалобу на потерю информации о состоянии.

Вывод:

<h2>State information lost</h2>

State information lost, and no way to restart the request<h3>Suggestions for resolving this problem:</h3><ul><li>Go back to the previous page and try again.</li><li>Close the web browser, and try again.</li></ul><h3>This error may be caused by:</h3><ul><li>Using the back and forward buttons in the web browser.</li><li>Opened the web browser with tabs saved from the previous session.</li><li>Cookies may be disabled in the web browser.</li></ul>

Единственные попадания, которые я нашел на очистка логинов SAML происходит с использованием подхода селен (и иногда сводится к запросам).

Возможно ли это с помощью механического суппорта?

1 Ответ

0 голосов
/ 31 января 2020

В моей ситуации для входа требуется Javascript. Мой первоначальный вопрос о получении доступа к SAML не был истинной средой. Так что на этот вопрос по-настоящему не было ответа.
Спасибо @Daniel Hemberger за помощь, которую я понял в комментариях.

В этой ситуации MechanicalSoup не является правильным инструментом (из-за Javascript) и В итоге я использовал селен, чтобы пройти аутентификацию, а затем использовал запросы .

...