NI-FI — проблема аутентификации на странице для загрузки файла

В настоящее время я пытаюсь получить файл .zip с веб-страницы, используя для этого nifi. Я могу создать прямую ссылку для загрузки файла, но приложению необходимо войти на страницу, прежде чем открывать прямую ссылку. Я пытался использовать процессоры InvokeHTTP, ListWebDAV и FetchWebDAV, но не смог сделать это должным образом. Я даже пытался добавить логин и пароль в качестве атрибутов, используя тот же идентификатор, который используется страницей (logon, temp_password). Также пытался использовать код Python, но мне не удалось получить с ним хороших результатов.

Каждый раз, когда я пробовал любой из этих методов, я получал небольшой файл на InvokeHTTP со ссылкой для загрузки, в которой говорилось, что требуется авторизация, и он загружает файл, который является исходным кодом страницы входа. Пытался искать почти везде в интернете без особого успеха :/

Теперь я пытаюсь заставить процессор фактически войти на страницу и сохранить ее таким образом, чтобы процессор вызова мог загрузить zip-файл, используя прямую ссылку.

Если у кого-то есть другая идея о том, как я могу решить эту проблему, я буду очень благодарен.

Я могу предоставить больше информации, если это необходимо, в настоящее время я использую Ni-Fi 1.1.2.

Заранее спасибо;


person Bryan Gillies    schedule 11.12.2017    source источник
comment
Вы знаете, какая авторизация требуется? Если вы можете скачать zip через браузер, то будет хорошо поймать все запросы (клавиша F12) с заголовками и телами, а затем повторить их с помощью nifi.   -  person daggett    schedule 12.12.2017


Ответы (1)


В зависимости от механизма аутентификации, используемого страницей, вам, вероятно, потребуется связать вместе два InvokeHTTP процессора. Предполагая, что на первой странице есть поле формы, которое вы заполняете с именем пользователя и паролем, вы создадите одно InvokeHTTP, которое использует метод POST для отправки формы с предоставленными учетными данными и получает ответ, который содержит какой-то токен (идентификатор сеанса, так далее.). Вы извлечете это значение (либо из заголовка ответа, либо из содержимого страницы) и предоставите его второму InvokeHTTP в качестве заголовка запроса. Использование функции «Инструменты разработчика» вашего браузера, как предложил daggett, для наблюдения за процессом аутентификации, позволит вам точно определить, где предоставляются эти значения.

person Andy    schedule 12.12.2017