wget-c проверка сертификата веб-сайта

Очень маловероятно, что механизм для этого существует. Просто думайте о том, сколько путей там состоит в том, чтобы изменить значение огибающей переменной в оболочке.

У Вас может быть некоторая удача с set -x все же.

2
29.08.2011, 13:26
1 ответ

Типы аутентификации

HTTP поддерживает аутентификацию исходно, и это - то, что Вы использовали. Собственная Аутентификация HTTP редко используется, как бы то ни было. HTTP также позволяет данным формы быть отправленными на сервер; большинство веб-сайтов, включая тот, с которым Вы пытаетесь работать, использует эту основанную на форме аутентификацию вместо Аутентификации HTTP, потому что это более удобно для пользователя и настраиваемо.

Как аутентификация формы работает

Когда клиент HTTP запрашивает ресурс с сервера HTTP, много данных отправляется в HTTP-заголовке. Важная часть для основанной на форме аутентификации является cookie. Cookie является просто названием ряда key=value пары. Несколько cookie могут быть отправлены в Запросе HTTP.

Когда запрос на ограниченный ресурс войдет, сервер будет искать определенный аутентификационный маркер в сеансовых куки. Если это не существует, это означает, что клиент не вошел в систему, таким образом, это возвращает форму входа в систему вместо требуемого ресурса. Если маркер действительно существует и допустим, это означает, что клиент вошел в систему, таким образом, сервер возвращает ресурс, который требовали.

Так, как мы получаем тот специальный аутентификационный маркер, и как мы отправляем его? Мы получаем его путем утверждания, что вход в систему формируется с допустимыми данными. После того как сервер аутентифицирует клиент, он передает cookie обратно в HTTP-заголовке. Мы должны сохранить тот cookie и передать его в со всеми будущими запросами.

Медные гвозди

Сбор информации

Просмотрите источник для страницы входа в систему. Вы уже загрузили, это с помощью wget, просто откройте это в текстовом редакторе. Искать <form...> в источнике. В целом могут быть несколько, и Вам, возможно, придется выяснить, какой - для представления данных входа в систему. В том Вы работаете с теперь, существует всего одна форма. Затем ищите весь <input...> теги. Они имеют данные, которые будут отправлены как часть данных формы. Особенно интересный name=... часть. Это - ключевая роль key=value пары, и независимо от того, что Вы заполняете, часть значения.

Страница, с которой Вы работаете, имеет следующие поля Login, Password, AdminSiteaccessURI, LoginButton, и RedirectURI. </form> конец формы - Вы не должны выглядеть дальнейшими. Мы должны отправить все те ключи с соответствующими значениями. Некоторые значения заполнены в Вами - который включает Login и Password, другие, можно принять значение, которое уже присутствует в поле. Если Вы смотрите на RedirectURI, Вы будете видеть, что это имеет a value= атрибут сервер заполнил URI для фактического ресурса, который Вы запрашивали во-первых.

Существует еще одна основная информация: где и как мы отправляем данные? Это может быть найдено в <form...> тег. Это будет иметь метод и действие. Действие не имеет полного URL; это имеет URL относительно основы, но Вам будет нужен полный URL, поэтому добавьте основу к относительному URL. Действием является URL для представления, и действие сообщает, является ли это POST или ПОЛУЧИТЬ запрос. Страница Вы работаете с потребностями данные, отправленные с помощью метода POST.

Представление данных входа в систему

Теперь, когда мы знаем то, что мы собираемся отправить, мы должны на самом деле сделать это. Мы можем использовать wget для этого. При рассмотрении страницы справочника Вы найдете a --post-data=string опция; это показывает Вам, как отформатировать его: key1=value1&key2=value2.... Это просто key=value для каждой пары, связанной a &. Это не единственная опция, в которой мы нуждаемся.

Помнить аутентификационный маркер? Сервер передаст его обратно как часть ответа, и мы должны сохранить его. Просматривая страницу справочника снова для "cookie", Вы будете видеть несколько важных опций. --save-cookies file и --keep-session-cookies.

Создайте свою командную строку с теми опциями и выполните ее, имея в виду URL, которому Вы отправляете, не ресурс, который Вы первоначально пытались получить - необходимо отправить URL, на который указывают <form action=...> атрибут. Необходимо закончить с сеансовыми куки в файле, и возможно (если wget успешно следует за перенаправлениями HTTP), файл PDF как вывод. Если это не получило файл PDF, Вы просто отправите другой запрос (на этот раз ни с кем --post-data), но на этот раз, включайте cookie, которые Вы сохранили перед использованием '-файл cookie загрузки'.

Это должно сделать это!

1
27.01.2020, 22:24
  • 1
    Альтернативный подход: Войдите в систему в графическом браузере (например, Firefox), заставьте его экспортировать все свои cookie (может потребовать дополнения как allcokies), и укажите на wget на файл cookie: wget --load-cookies /path/to/cookie.txt. –  Gilles 'SO- stop being evil' 30.08.2011, 00:18

Теги

Похожие вопросы