基于 yt-dlp 的 Web 视频下载器,支持 TLS 指纹伪装绕过基础 Cloudflare 拦截、多线程下载、实时进度显示、抖音无水印、明暗主题切换。
curl_cffi 模拟 Chrome 指纹,可绕过 Cloudflare Bot Fight Mode 等 TLS 层 403 拦截(不支持 JS 质询/Turnstile)bestvideo+bestaudio 方案,支持 m3u8/HLS 等只有分离流的源localStorage 记住选择.webmdocker-compose up -d 启动git clone https://github.com/meimolihan/fan-video-dl.git
cd fan-video-dl
docker-compose up -d
访问 http://localhost:5200
默认账号 admin / admin888
⚠️ 请务必在登录后修改默认密码,或在部署时通过
AUTH_USERNAME/AUTH_PASSWORD环境变量覆盖。
无需克隆仓库,一条命令自动安装:拉取源码、创建 /var/lib/fan-video-dl venv、安装 yt-dlp/curl_cffi/ffmpeg、注册 systemd 服务。
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-video-dl/main/scripts/install.sh)" -p 5200 -y
参数说明:
| 参数 | 说明 | 默认值 |
|---|---|---|
-p, --port | 监听端口 | 5200 |
-d, --install | 程序安装目录 | /var/lib/fan-video-dl |
-D, --data | 数据目录(用户库 / SECRET_KEY) | ${安装目录}/data |
-L, --downloads | 下载文件目录 | ${数据目录}/downloads |
-s, --src | 本地源码仓库路径(需含 app.py) | 自动从 GitHub 拉取 |
-y, --yes | 免交互,未指定项全部用默认值 | - |
示例(自定义安装/数据/下载目录到独立磁盘):
bash -c "$(curl -sSL https://raw.githubusercontent.com/meimolihan/fan-video-dl/main/scripts/install.sh)" \
-p 5200 -d /opt/fan-video-dl -D /var/lib/fan-video-dl-data -L /mnt/down-disk/downloads -y
国内网络拉取源码缓慢时,用镜像仓库加速:
FAN_VIDEO_DL_REPO=https://ghfast.top/https://github.com/meimolihan/fan-video-dl.git bash -c "$(curl ...)" -p 5200 -y
升级方式:再次执行同样的 install.sh 命令(数据自动保留)。命令行工具:fan-video-dl help。
登录访问 http://<服务器IP>:5200,默认账号 admin / admin888(登录后请立即修改)。
# 安装系统依赖
sudo apt install ffmpeg
# 安装 Python 依赖
pip install -r requirements.txt
# 启动
python app.py
访问 http://localhost:5200
| 组件 | 说明 |
|---|---|
| Flask | Web 后端框架 |
| gunicorn | 生产级 WSGI 服务器(单 worker 多线程) |
| yt-dlp | 视频下载核心引擎 |
| curl_cffi | TLS 指纹伪装(绕过基础 Cloudflare 拦截)/ 抖音API请求 |
| douyin_downloader | 抖音无水印视频下载模块 |
| ffmpeg | 视频合并/转码 |
| 原生 JS | 前端,无框架依赖 |
| 环境变量 | 默认值 | 说明 |
|---|---|---|
PORT | 5200 | Web 服务端口 |
AUTH_USERNAME | admin | 登录用户名 |
AUTH_PASSWORD | admin888 | 登录密码 |
SECRET_KEY | 自动生成并持久化 | Flask Session 密钥(重启后保持登录) |
fan-video-dl/
├── app.py # Flask 后端
├── douyin_downloader.py # 抖音无水印下载模块(含 ttwid 自动刷新)
├── cli.py # 内置 CLI 管理命令 (status/credentials/uninstall 等)
├── templates/
│ └── index.html # Web UI(明暗主题)
├── scripts/ # 运维脚本 (install/uninstall/backup/recover/build-and-push)
├── version.txt # 版本号(发版脚本维护)
├── downloads/ # 下载文件目录
├── data/ # 用户数据库 + 持久化 SECRET_KEY
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── .dockerignore
└── README.md
本项目采用语义化版本号格式:vX.Y.Z(如 v1.0.0)
scripts/build-and-push.sh vX.Y.Z 自动更新 version.txt、提交并推送 tag.github/workflows/release.yml)自动完成:构建并推送 Docker 镜像(Docker Hub + GHCR)、创建 GitHub Release、同步 CNB 镜像仓库RELEASE_NOTES.md(或发版时用 -m 传入)version.txt / CI 注入的 APP_VERSION查看所有版本:Releases
-d 程序目录 / -D 数据目录 / -L 下载目录自定义;修复旧安装目录被误识别为源码、导致升级无法拉取新版的问题--merge-output-format mp4 --remux-video mp4,修复部分 YouTube 视频输出 .webm(v1.1.2)localStorage 记住选择本项目仅供学习和个人使用。使用者需自行承担因使用本工具而产生的一切法律责任。
downloads/ 目录中,供在线播放和文件管理如版权方认为本工具涉及侵权,请通过 Issues 联系。
MIT
Content type
Image
Digest
sha256:a270cc554…
Size
231.2 MB
Last updated
9 days ago
docker pull mobufan/fan-video-dl