Python 的 http.server 模块可以为短期测试或可信传输提供静态文件。它不是生产 Web 服务器,也不提供身份验证、授权、TLS、速率限制或针对恶意流量的强化处理。
网络共享 · 第 3 课
简单 HTTP 服务器
学习如何使用 Python HTTP 服务器临时公开一个受控目录。
准备共享目录
创建只包含打算公开文件的专用目录。启动前应检查隐藏文件、符号链接、权限和敏感元数据。不要共享主目录、仓库根目录、凭据目录或系统路径。
使用 --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 服务器
现在,你可以在暴露范围有限的情况下运行临时 Python HTTP 服务器。
只提供专用且经过审查的目录。
绑定到范围最窄的适当地址。
测试预期访问和非预期边界。
之后停止监听器并清理临时访问。