Мой блог
Как смонтировать любой сайт в виде папки на Linux с помощью HTTPDirFS
Обычно веб-страницы открываются исключительно в браузере, где пользователи просматривают разделы, изучают изображения и скачивают файлы по отдельности. Однако в операционной системе Linux открытая утилита монтировать любой сайт в виде папки позволяет иначе взаимодействовать с сетевым контентом, превращая удаленный веб-сервер в локальную файловую систему через FUSE.
Подобный подход дает возможность просматривать содержимое через стандартный файловый менеджер точно так же, как и обычные папки на жестком диске. В материале рассматриваются установка утилиты из исходного кода, запуск в специальном режиме и практическое применение для работы с удаленными ресурсами.



Зачем использовать HTTPDirFS
Инструмент не заменяет специализированные программы вроде wget, curl или продвинутые утилиты для веб-скрейпинга. Его практическая ценность раскрывается тогда, когда требуется просмотреть удаленные файлы и извлечь выборочные объекты без необходимости скачивать всю директорию целиком. Утилита эффективна при изучении открытых каталогов, содержащих тысячи изображений, документов или видеоматериалов. Вместо полной загрузки архива можно смонтировать удаленную папку и открывать нужные элементы по мере необходимости.


Аналогичным образом технология выручает, когда HTML-страницы ссылаются на удаленные медиафайлы. Вместо написания скриптов для парсинга ссылок и массовой загрузки ресурсов можно задействовать HTTPDirFS, которая выставит обнаруженные элементы в виде путей файловой системы. После этого стандартные команды оболочки и файловые утилиты смогут напрямую взаимодействовать с этими объектами.
Сборка и установка утилиты
Для экспериментов обычно используется актуальная версия из репозитория разработки, так как пакетные сборки могут не содержать нужного режима работы с веб-сайтами. Процесс начинается с установки необходимых системных утилит и библиотек разработки.
Команда для установки зависимостей в дистрибутивах на базе Debian/Ubuntu:
sudo apt update
sudo apt install git build-essential meson ninja-build \
libfuse3-dev libcurl4-openssl-dev libgumbo-dev
Набор зависимостей может отличаться в зависимости от версии репозитория, поэтому при ошибках сборщика Meson стоит сверяться с инструкциями проекта. Следующим шагом клонируется репозиторий проекта и выполняются команды конфигурации и компиляции:
git clone https://github.com/fangfufu/httpdirfs.git
cd httpdirfs
meson setup build
meson compile -C build
Скомпилированный исполняемый файл помещается в директорию build/httpdirfs. Перед началом работы рекомендуется проверить версию и доступные параметры командной строки с помощью ключей --version и --help.
Монтирование веб-сайта в режиме просмотра
Главным параметром для работы с веб-ресурсами является флаг --website-mode. Он преобразует ресурсы с типом контента text/html в директории, а также делает доступными связанные медиафайлы и прочие активы через файловую систему. Поскольку данный режим по умолчанию отключен, его требуется активировать вручную.
В качестве демонстрационного примера часто используют тестовые сайты вроде Books to Scrape, содержащие книжные заголовки, ссылки на категории и обложки. Сначала в домашнем каталоге создается точка монтирования:
mkdir -p "$HOME/HTG-Test"
Затем из папки с исходным кодом запускается процесс монтирования с активным веб-режимом:
./build/httpdirfs --website-mode -f \
https://books.toscrape.com/ "$HOME/HTG-Test"
Параметр -f удерживает процесс в активном состоянии в терминале, позволяя отслеживать вывод и сообщения программы во время работы.
Доступ к удаленным файлам без скачивания
После обработки начальной страницы указанный каталог можно открыть в графическом файловом менеджере. Смонтированная файловая система отображает HTML-страницы категорий и конкретных товаров вместе с обложками и прочими ресурсами, на которые ссылается сайт.
Некоторые страницы отображаются в виде папок, позволяя изучать вложенные материалы без предварительной загрузки всего веб-ресурса. Приложения могут обращаться к найденным элементам через привычные пути файловой системы. Итоговый результат зависит от архитектуры конкретного сайта: ресурсы, зависящие от генерации контента через JavaScript или сложные интерактивные сценарии, могут отображаться не полностью, так как утилита не заменяет полноценный движок браузера.
