|
【绿色工具】纯 Python 自研 HTTP 文件服务器:三秒搭建跨平台文件共享,PC_PE双环境兼容,自主可控零依赖
适用场景
- 办公室文件共享:不用搭 FTP,不用开共享权限,三秒搞定,同事扫码就能下载,与手机亲密互动。
- 手机电脑互传文件:扫码下载(用手机浏览器),不用数据线,不用装 APP,照片视频秒传
- PE 维护环境:PE 下启动,给其他机器传系统镜像、驱动、工具,维护现场必备,以手机做为强大的存储后备。
- 家庭媒体共享:共享电影文件夹,电视盒子、手机、平板直接在线播放,不用拷贝
- 临时文件分发:会议现场、培训现场,大家扫码下载资料,不用建群发文件
- 外网远程访问:有 IPv6 公网的情况下,外网也能访问家里的文件,随时随地取资料
- 大文件传输:不限制文件大小,几十 G 的镜像、视频也能稳定传输
- 需急速建立共享,本工具提供最优解。
绿色软件,不需要再打包。文件大小,压缩后6M左右,展开文件,11.4M
分压包附件下载,程序能保存更久。“下载两个自解分压包双击第一个exe的自解主包,解出文件夹《HTTP文件服务器》。进文件夹找到“控制台.bat”运行控制台,就能操作。想方便的可以发送快捷方式到桌面。
前言 在日常工作和维护中,经常需要在电脑、手机、平板之间快速传递文件,或者在 PE 维护环境下临时搭建一个文件共享通道。市面上的同类工具要么体积臃肿、要么依赖运行库、要么 PE 下无法运行、要么功能单一只能下载不能上传。 为此,我用 Python 标准库从零开发了这款 HTTP 文件服务器,全程不依赖任何第三方库,纯绿色单目录,普通 Windows 和 PE 系统双环境兼容,三秒即可启动,电脑手机外网全平台访问。
核心特点 一、自主可控,零第三方依赖
- 后端基于 Python 标准库 http.server 开发,不导入任何第三方模块
- 前端纯原生 HTML/CSS/JavaScript,不依赖任何前端框架
- 仅引用两个轻量库(qrcode.js 用于二维码、mpegts.js 用于 TS 流播放),均已本地化,无需联网
- 代码完全开源可读,没有任何后台联网、数据上传、遥测行为
- 你看到的就是全部,没有任何隐藏功能
二、纯绿色,免安装
- 整个程序就是一个文件夹,双击控制台即可运行
- 不写注册表、不创建系统服务、不修改任何系统配置
- 放在 U 盘、移动硬盘里随时可用,换台电脑直接跑
- 关闭程序后系统不留任何残留
- 总大小约 11MB(含 Python 嵌入式运行时)
三、双环境兼容
- 普通 Windows 系统:Win7/Win10/Win11 全系列兼容
- PE 维护系统:专门针对 PE 环境优化,进程管理使用 PECMD 兼容方案
- 控制台自动识别环境,PE 下用 PECMD 结束进程,普通系统用 taskkill,两种环境都能正常启停
- 不依赖 PowerShell(PE 精简版可能没有),IP 获取优先使用 netsh,中英文系统都兼容
四、三秒启动,易操作
- 双击 控制台.bat → 按 5 选择共享目录 → 浏览器访问地址,全程三秒
- 控制台黄底黑字界面,菜单清晰,数字选择,不需要记命令
- 自动获取局域网 IP 和外网 IPv6 地址,控制台直接显示访问 URL,复制即用
- 所有操作(修改端口、添加共享目录、修改密码)完成后自动重启生效,不需要手动操作
- 支持一键停止、一键重启
功能详解 1. 文件管理
- 目录浏览:清晰的文件列表,显示文件名、大小、修改时间
- 多文件上传:支持拖拽上传,一次选多个文件批量上传
- 新建文件夹:在线创建目录
- 新建文本文件:在线创建 txt 等文本文件
- 在线编辑:文本文件直接在网页上编辑保存,不需要下载再上传
- 重命名:文件和文件夹都支持在线重命名
- 删除:单个删除,无密码模式下隐藏删除按钮防止误操作
- 文件搜索:实时过滤当前目录下的文件,快速定位
- 返回上级目录:紫色醒目按钮,一键返回上一级
2. 下载与分享
- 单文件下载:点击下载按钮直接下载
- 文件夹打包下载:整个文件夹一键打包成 ZIP 下载,中文文件名正常显示
- 二维码下载:每个文件都有二维码,手机扫码直接下载,不用手动输地址
- 二维码自动适配当前访问协议(IPv4 访问显示 IPv4 地址,IPv6 访问显示 IPv6 地址)
3. 在线预览播放
- 图片预览:点击图片直接在网页上查看,支持常见格式
- 视频播放:
- MP4 等浏览器原生格式直接播放
- TS 流使用 mpegts.js 播放,支持边下边播
- 基于 HTTP Range 分段下载,不需要等整个视频下载完,点击即播
- 大文件(5G、10G)也能秒开,不会卡住
- 关闭播放窗口自动停止,不会后台继续播放
- 音频播放:弹窗播放器,关闭即停,不会新开标签页
4. 共享目录管理
- 多目录共享:可以同时共享多个文件夹,甚至整盘
- 整盘共享:支持直接共享 C 盘、D 盘等整个盘符,在网页上以盘符名称显示
- 自定义名称:每个共享目录可以自定义显示名称,不暴露真实路径
- 图形化选择:添加共享目录时弹出文件夹选择窗口,不需要手动输路径
- 列表管理:删除共享目录时以列表形式显示,数字选择,不会乱码
- 添加 / 删除后自动重启服务器生效
5. 安全与访问控制
- 密码保护:可设置访问密码,无密码模式下任何人可访问
- 无密码模式隐藏删除按钮:防止访客误删除文件
- 有密码时才显示删除、重命名等管理操作
- 密码留空即取消密码,恢复公开访问
6. 多平台访问
- 电脑端:Chrome、Edge、Firefox 等主流浏览器全兼容
- 手机端:响应式布局,手机浏览器自动适配,按钮大小适合触屏操作
- 平板端:同样适配
- 外网访问:支持 IPv6 公网访问,有公网 IPv6 的情况下外网也能访问
- 第三方播放器:提供 /files/共享目录/路径 静态路由,PotPlayer、VLC 等第三方播放器可以直接打开服务器上的视频文件播放
7. 网络特性
- IPv4/IPv6 双栈:同时支持 IPv4 和 IPv6 访问
- 自动获取 IP:控制台自动显示局域网 IPv4 和外网稳定 IPv6 地址
- IPv6 获取优先使用 netsh,兼容中英文系统,自动筛选 Public 稳定地址(不是临时地址)
- 端口可自定义,默认 8080
- 支持大文件传输,不限制文件大小
8. 控制台功能
- 启动 / 停止 / 重启服务器
- 修改端口(自动重启生效)
- 添加共享目录(图形化选择,自动重启生效)
- 删除共享目录(列表选择,自动重启生效)
- 添加 / 修改 / 取消密码(自动重启生效)
- 一键打开管理页面
- 查看当前配置
- 实时显示服务状态、端口、局域网地址、外网 IPv6 地址
使用方法 全新使用,三步搞定: 其他常用操作:
- 按 1 启动服务器 / 按 2 停止服务器 / 按 3 重启服务器
- 按 4 修改端口(默认 8080)
- 按 6 设置访问密码(留空即取消密码)
- 按 7 一键在浏览器打开管理页面
- 按 8 删除共享目录(列表数字选择)
- 按 9 查看当前配置
- 按 0 退出控制台(服务器继续后台运行)
附控制台界面图,电脑浏览器HTTP访问图,手机端浏览器访问图,共享X盘浏览器显示内容:
PE环境下控制台界面显示:
在PE只启动服务,在浏览器显示:
只启动服务在手机浏览器显示:
共享PE的X盘在浏览器显示:
写在最后 这款工具的定位是"够用、好用、放心用"。不追求功能大而全,但日常文件共享的核心需求都覆盖到了。代码完全基于 Python 标准库,没有任何黑盒依赖,你可以随时打开源码查看每一行在做什么。 双环境兼容是重点优化方向 ——PE 维护场景下很多工具跑不起来,而这个工具在 PE 下一样能正常启停、正常共享。对于经常做系统维护的朋友来说,应该能省不少事。 如果有功能建议或发现 bug,欢迎反馈。
网络安全方面:
HTTP 文件服务器在外网暴露的情况下,有一定风险,但不是 "一攻就破",主要看你怎么用。分几个层面说:
一、真正的风险点
1. 密码暴力破解(中等风险)
- 密码通过 HTTP 明文传输,没有 HTTPS 加密
- 没有登录失败次数限制,理论上可以暴力破解
- 但实际情况:IPv6 地址本身很难被扫描到(地址空间太大),攻击者首先得知道你的地址才能开始破解
- 建议:密码设复杂一点(8 位以上,字母 + 数字 + 符号),别用 123456 这种
2. 明文传输(中等风险)
- 纯 HTTP,密码和文件内容都是明文
- 同一个局域网内或网络链路中间有人抓包的话,可以看到传输内容
- 但家庭宽带场景下,被中间人抓包的概率很低
- 建议:外网传敏感文件时注意,或者套一层 VPN / 隧道
3. 路径遍历(低风险,取决于代码)
- 如果 get_real_path 函数没有正确过滤 ../,理论上可以访问共享目录之外的文件
- 但标准做法是用 os.path.realpath 校验后比对根目录,这种攻击基本防得住
- 建议:不要共享整个 C 盘 / 系统盘,只共享专门的文件目录,即使有漏洞也影响有限
4. 上传风险(低风险)
- 上传的文件直接存到磁盘,没有类型过滤
- 但上传的文件只是存着,不会被服务器执行(Python 不会执行上传的.py)
- 风险主要是:有人上传恶意文件,然后诱导别人下载
- 建议:外网使用时设置密码,不要公开匿名上传
5. 拒绝服务(低风险)
- 没有速率限制,大量请求可能拖慢服务器
- 大文件上传可能占满磁盘
- 但家庭宽带上行带宽本身就是瓶颈,攻击效果有限
- 建议:监控磁盘空间,不要把共享目录放在系统盘
二、为什么说 "不容易被攻破" 1. IPv6 天然隐蔽性
- IPv6 地址空间是 2^128,扫描整个地址段不可能
- 攻击者不知道你的 IPv6 地址,根本找不到你的服务器
- 这比 IPv4 的端口扫描安全得多(IPv4 扫一个 C 段只要几分钟)
2. 攻击面小
- 只有一个 HTTP 服务,没有数据库、没有后台管理框架、没有第三方 CMS
- 代码量小(server.py 就几百行),漏洞面自然小
- 没有使用有已知漏洞的第三方库(全是标准库)
3. 权限可控
- 服务器以当前用户权限运行,不是 System/root
- 即使被攻破,攻击者能做的也限于当前用户权限
- 共享目录之外的文件默认访问不到
三、外网使用的安全建议 措施 效果 难度
设置复杂密码 防暴力破解 简单
不共享系统盘 限制攻击影响 简单
定期更换密码 降低泄露风险 简单
不用时关闭服务器 减少暴露时间 简单
路由器防火墙限制访问 IP 白名单防护 中等
套 VPN/WireGuard 后再访问 不直接暴露 HTTP 中等
加 HTTPS(反代) 加密传输 较难
四、结论 家庭 / 个人使用场景下,这个工具外网暴露的风险是可控的。 主要原因是 IPv6 地址难以被发现,加上代码简单攻击面小。只要你: 基本不用担心被 "攻破"。真正的风险更多是密码被猜到或者地址被泄露,而不是技术层面的漏洞利用。 如果是企业环境或者需要高安全性,建议套一层 VPN 或者用 Nginx 反代加HTTPS,不要直接把这种轻量服务器暴露在公网。
|