Я пытаюсь просканировать старый сервер Reviewboard, которым я владею, чтобы создать статическую копию и заархивировать ее. Я делаю это с помощью wget, следуя рекомендациям нескольких людей, используя рекомендуемый способ сканирования и загрузки сервера, например, такой:
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --domains $DOMAIN --http-user $USERNAME --ask-password $THE_SERVER
Однако сервер требует аутентифицированный вход LDAP, поэтому все, что я получаю, это страница входа и некоторые связанные файлы. Та же проблема возникает, если я просто делаю это --user
вместо --http-user
.
Мой вопрос: можно ли выполнить аутентификацию LDAP с помощью wget, и если да, то как?
Так как я уверен, что появятся следующие комментарии:
- Я уже создал JSON-архив с помощью rb-tools, но мне бы очень хотелось иметь статическую веб-копию.
- У меня есть возможность разрешить анонимный доступ только для чтения, поскольку я являюсь администратором сервера, но я хотел бы избежать этого, если это возможно.
решение1
LDAP не является аутентификациеймеханизм– это всего лишь счетхранилищебэкэнд; по сути, это то же самое, что и хранение учетных записей в MySQL или подобном. Таким образом, не существует такого понятия, как "LDAP-аутентификация", если речь идет о HTTP-клиентах.
Фактические механизмы HTTPимеет«Basic» или «Digest» для входа на основе пароля или «Negotiate» для входа на основе Kerberos; этот --http-user
вариант будет работать, если ваш веб-сайт использует один из них.
Однако ваш сайт, скорее всего, использует страницу входа на основе форм/cookie-файлов, которая для HTTP-клиентов совершенно неотличима от обычного перенаправления на обычную веб-страницу. Wgetне будетиметь возможность автоматически распознавать и заполнять эти формы.
Если это так, то что вымогсделать, это войти через ваш обычный веб-браузер, затем скопировать необходимые сеансовые куки в файл "cookie jar" wget (или, возможно, передать их напрямую с помощью --header
). Тогда веб-сайт распознает вас как вошедших в систему.
Если вы откроете "Инструменты разработчика" → "Сеть" в Chrome или Firefox, каждый сетевой запрос будет иметь опцию "Копировать как cURL", которая дает вам полную curl
командную строку. Найдите конкретную --header …
опцию, которая отправляет ваш сеансовый cookie, и передайте ее wget.