InterServer Web Hosting and VPS

YTVD:自己动手做一个 YouTube/B站视频下载站

308次阅读

演示地址:https://ytvd.cc/

前台演示

 

YTVD:自己动手做一个 YouTube/ B 站视频下载站

后台演示:

YTVD:自己动手做一个 YouTube/ B 站视频下载站

# YTVD:自己动手做一个 YouTube/ B 站视频下载站

## 这是个什么项目

市面上的在线视频下载网站要么广告满天飞,要么动不动就失效,索性自己动手做了一个——**YTVD**,基于 Flask + yt-dlp,一键脚本部署到自己的 VPS 上,完全自己掌控。

整个项目不依赖 Docker,纯 Python 虚拟环境 + systemd 跑起来,安装脚本会自动搞定:

- Python 虚拟环境、Flask、yt-dlp
- ffmpeg(用于合并视频音频流,4K/8K 高画质必需)
- Node.js 22(yt-dlp 解密 YouTube 签名必需的 JS 运行时)
- Nginx 反向代理 + Let's Encrypt 自动 SSL(可选,绑定域名时自动配置)
- systemd 服务,开机自启、异常自动重启
- SSL 证书自动续签(cron 定时任务)

## 功能一览

** 前台(普通用户)**

- 支持 YouTube、B 站、Twitter、抖音等主流平台
- 视频 MP4 / 音频 MP3 / 播放列表三种模式
- 画质从 360p 到 8K (4320p) 全覆盖,自动合并音视频流
- 实时下载进度(速度、剩余时间、已下载大小)
- 下载队列 + 历史记录
- ** 文件库 **:直接展示服务器上所有已下载文件,可在线下载(不依赖任务记录,重启服务文件还在)
- 深色 / 浅色双主题,一键切换
- 极简渐变风格 UI,移动端自适应

** 后台管理(`/admin`)**

- 邮箱 + 密码登录,5 次密码错误自动锁定 15 分钟,防暴力破解
- 忘记密码可通过 SMTP 邮件找回
- Cookies 管理:YouTube / B 站 / 通用平台分别配置,直接在网页粘贴,不用再 SSH 传文件
- 4 个广告位:支持 HTML/JS 代码模式或图片 + 链接模式,独立开关
- 自定义统计代码注入(Google Analytics、百度统计等)
- 站点名称自定义(首页 logo、浏览器标题、页脚同步更新)
- 文件库删除权限仅管理员可见

## 技术细节

后端是 Flask + yt-dlp,前端纯原生 HTML/CSS/JS(没有引入任何前端框架,加载快、依赖少)。数据持久化用 SQLite,存储管理员账号、广告配置、SMTP 设置等。

针对 YouTube 这几年越来越严格的反爬机制,做了几个关键适配:

- **JS Challenge 求解 **:YouTube 对签名和 n- 参数做了 JS 混淆,yt-dlp 需要配合 Node.js + 远程求解组件(EJS)才能正确解密,脚本会自动安装 Node 22 并接好这层配置
- **Cookies 分平台管理 **:不同平台用不同的登录态文件,互不干扰
- ** 格式协商兜底 **:每个画质选项都加了降级 fallback,源视频没有对应分辨率时自动选最接近的可用流,不会直接报错

## 部署教程

### 环境要求

一台干净的 Debian/Ubuntu VPS,root 权限,能访问公网。

### 第一步:下载安装包

[点击下载 loctube-debian.tar.gz]

### 第二步:解压并运行

tar -xzf loctube-debian.tar.gz
cd loctube-debian
sudo bash install.sh

脚本会依次询问:

1. ** 监听端口 **(直接回车用默认 5000)
2. ** 管理员邮箱和密码 **(用于登录 `/admin` 后台,建议安装完立刻改密码)
3. ** 是否绑定域名 **(不绑定就用 IP: 端口访问;绑定的话会自动配置 Nginx 反代)
4. ** 是否申请 SSL 证书 **(绑定域名后会问,填邮箱即可自动用 Let's Encrypt 签发)

确认安装后,剩下的全自动,几分钟跑完。

### 第三步:配置 Cookies(解决登录验证报错)

YouTube 对未登录请求经常会提示 "Sign in to confirm you're not a bot",需要配置登录态 cookies:

1. Chrome 装一个 **"Get cookies.txt LOCALLY"** 插件
2. 登录 YouTube(建议用小号,别用主账号)
3. 打开任意视频播放页,用插件导出 `cookies.txt`
4. 进后台 `/admin` → Cookies 标签 → 粘贴内容 → 保存

B 站同理。Cookies 会过期(数据中心 IP 上失效更快),过期了重新走一遍这个流程即可,不需要重启服务。

### 第四步:开始用

打开你的域名(或 `http://IP: 端口 `),粘贴视频链接,选好格式和画质,点下载。

## 多域名 & SSL 管理

如果后续想加更多域名,或者管理证书:

```bash
bash /opt/loctube/domain.sh
```

支持添加 / 删除域名、单独申请或撤销 SSL、查看 / 控制自动续签、一键更新 yt-dlp。

## 常用维护命令

```bash
systemctl status loctube # 查看运行状态
systemctl restart loctube # 重启服务
journalctl -u loctube -f # 查看实时日志
```

## 写在最后

这个项目最初只是想自己用,省得每次下视频都要在各种在线工具网站上找半天、还要忍受广告轰炸。做出来之后发现挺实用,索性整理一下分享出来。

如果你也想要一个完全自己掌控、没有广告、随时可以魔改的视频下载站,欢迎直接拿这套脚本去部署。代码不复杂,看得懂、改得动。

有问题欢迎留言交流。

正文完
 0
InterServer Web Hosting and VPS