Получение списка каталогов по http - PullRequest
13 голосов
/ 21 декабря 2010

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

Есть ли способ, скажем, с wget или что-то еще, получить список каталогов.Я попытался использовать wget в каталоге, который дает мне HTML.Чтобы избежать анализа html-документа, есть ли способ получить простой список, такой как ls, даст?

Ответы [ 6 ]

23 голосов
/ 21 декабря 2010

Я только что нашел способ сделать это:

$ wget --spider -r --no-parent http://some.served.dir.ca/

Это довольно многословно, так что вам нужно пролистать grep пару раз в зависимости от того, что вы ищете, но информация есть. Похоже, что он печатает в stderr, поэтому добавьте 2>&1, чтобы позволить grep на него. Я нашел "\ .tar \ .gz", чтобы найти все тарболлы, которые мог предложить сайт.

Обратите внимание, что wget записывает временные файлы в рабочий каталог и не очищает его временные каталоги. Если это проблема, вы можете перейти во временный каталог:

$ (cd /tmp && wget --spider -r --no-parent http://some.served.dir.ca/)
2 голосов
/ 29 октября 2016

Следующее не является рекурсивным, но оно сработало для меня:

$ curl -s https://www.kernel.org/pub/software/scm/git/

Вывод является HTML и записывается в stdout.В отличие от wget, на диск ничего не записывается.

-s (--silent) имеет значение при передаче данных, особенно в сценарии, который не должен быть шумным.

По возможности не забывайте использовать ftp или http вместо https.

1 голос
/ 01 июля 2014

То, что вы запрашиваете, лучше всего обслуживать по протоколу FTP, а не по HTTP.

HTTP не имеет представления о списках каталогов, а по FTP -.и те, которые делают, делают это как особенность сервера, а не протокол HTTP.Для этих HTTP-серверов они решают сгенерировать и отправить HTML-страницу для потребления человеком , а не потребления машины .У вас нет никакого контроля над этим, и у вас не было бы выбора, кроме как анализировать HTML.

FTP предназначен для потребления машиной, особенно с введением команд MLST и MLSD, которые заменяют неоднозначныеLIST команда.

1 голос
/ 21 декабря 2010

Если он обслуживается по протоколу http, то получить простой список каталогов невозможно. Список, который вы видите при просмотре, который является тем, который извлекает wget, генерируется веб-сервером как HTML-страница. Все, что вы можете сделать, это проанализировать эту страницу и извлечь информацию.

0 голосов
/ 30 мая 2019

Вы можете использовать IDM (интернет-менеджер загрузок).
У него есть утилита с именем «IDM SITE GRABBER», которая вводит URL-адреса http/https, и она загружает все файлы и папки из протокола http/https.

0 голосов
/ 21 декабря 2010

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

...