Модуль Python http.server может раздавать статические файлы для кратковременного теста или доверенной передачи. Это не производственный веб-сервер: он не предоставляет аутентификацию, авторизацию, TLS, ограничение частоты запросов или усиленную обработку враждебного трафика.
Совместное использование сети · Урок 3
Простой HTTP-сервер
Узнайте, как временно открыть контролируемый каталог с помощью HTTP-сервера Python.
Подготовка общего каталога
Создайте отдельный каталог только с теми файлами, которые предполагается открыть. Перед запуском проверьте скрытые файлы, символические ссылки, права и конфиденциальные метаданные. Не раздавайте домашний каталог, корень репозитория, каталог учётных данных или системный путь.
Сделайте общий корень явным с помощью --directory:
$ python3 -m http.server 8000 --directory /srv/temporary-share
Если индексного файла нет, модуль обычно создаёт список каталога. Любой, кто может обратиться к прослушиваемому адресу, потенциально способен перечислить и загрузить раздаваемое содержимое.
Зачем использовать --directory /srv/temporary-share?
Управление адресом прослушивания
Если подключаться должен только тот же хост, привяжите сервер к обратной петле:
$ python3 -m http.server 8000 --bind 127.0.0.1 --directory /srv/temporary-share
Для общего доступа в доверенной сети осознанно привяжитесь к подходящему адресу интерфейса и проверьте политику межсетевого экрана. Запуск без ограничивающей привязки обычно прослушивает все доступные интерфейсы, из-за чего каталог может оказаться открыт шире требуемой сети.
Кто обычно может обратиться к серверу, привязанному к 127.0.0.1?
Проверка доступа
На раздающем хосте запросите известный файл и проверьте ответ:
$ curl -f http://127.0.0.1:8000/example.txt
Для разрешённого удалённого теста используйте выбранный адрес интерфейса вместо обратной петли. Убедитесь и в доступности нужного файла, и в недоступности файла за пределами корня документов. Сам по себе успех в браузере не подтверждает правильную область раскрытия или конфиденциальность.
Какой порт явно выбран в команде python3 -m http.server 8000?
Остановка и очистка
Запускайте временную службу в контролируемом терминале и после завершения передачи остановите её сочетанием Ctrl-C. Убедитесь, что прослушивание исчезло:
$ ss -ltn 'sport = :8000'
Удалите временные копии согласно правилам обработки данных и отмените временное правило межсетевого экрана. Для постоянной, аутентифицированной или доступной из интернета раздачи используйте поддерживаемый сервер с настроенными управлением доступом и TLS.
Что следует сделать после завершения временной передачи?
Урок завершён
Вы завершили Простой HTTP-сервер
Теперь вы можете запускать временный HTTP-сервер Python с ограниченной областью раскрытия.
Раздавайте только отдельный проверенный каталог.
Привязывайтесь к наиболее узкому подходящему адресу.
Проверяйте требуемый доступ и нежелательные границы.
После работы останавливайте прослушивание и удаляйте временный доступ.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт