Могу ли я сделать запрос GET на страницу за входом в систему без входа в систему - PullRequest
0 голосов
/ 14 апреля 2019

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

  1. Открыть окно и войти в систему вручную
  2. Перейдите на нужную мне страницу
  3. Захватить все куки, заголовки и т. Д.и session_id этой страницы
  4. Используя Python, выполните запрос GET с URL-адресом этой страницы и отправьте трассировку, захваченную на шаге 3
  5. Получите файл CSV

Является ли это возможным?Что будет примером для этого сценария?Могу ли я сделать это с помощью веб-драйвера selenium, например, выполнить вход в систему вручную, сохранить трассировку и затем использовать ее для открытия нужной мне страницы с driver.get (url)?

1 Ответ

1 голос
/ 14 апреля 2019

Могу ли я сделать запрос GET на страницу за входом в систему без входа в систему?

Да, конечно, но ответ HTTP будет, вероятно, 401 или 302 кода (Несанкционированный или перенаправление на вход в систему), поскольку у вас нет прав на выполнение этого действия.

См. Также: Протокол передачи гипертекста (HTTP / 1.1): семантика и содержимое

  1. Открыть окно и войти в систему вручную

  2. Захватить все файлы cookie, заголовки и т. Д., А также session_id этой страницы

  3. Используя Python, выполните запрос GET с URL-адресом этой страницы и отправьте трассировку, захваченную на шаге 3

Просто для ясности, когда вы открываете браузер,протокол SSL / TLS инициирует соединение с удаленным сервером, чтобы создать новый зашифрованный сеанс, который вы будете использовать для входа в систему и другой навигации по сайту.

Затем при выполнении запроса Python GET (которыйне является вкладкой вашего браузера), чтоСоединение не будет выполнено, потому что клиенту не удалось согласовать сеанс SSL / TLS, поскольку клиент, в данном случае ваш сценарий, никогда не выполнял TLS Handshake .

Даже если вы предоставляете перехваченный ранее сеанс HTTP, который отличается (протокол уровня 7)

См. Также: Версия протокола безопасности транспортного уровня (TLS) 1.3

Получите файл CSV

Опять вы пытаетесь сделать что-то, для чего не создано веб-приложение.

Вместо этого некоторые организации предоставляют REST API для извлечения определенных данных без обязательных сеансов HTTP

См. Также: Передача представительного состояния

ps, пожалуйста, предоставьтенекоторые отзывы, если ответы помогают вам, мы все делимся и учимся;)

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