使用谷歌提供的免费 API 来部署 Youtube 镜像站

"且珍惜"

Posted by Jin on November 8, 2019

嗯,还是上次那位狗子朋友,还是那版本过旧无法安装 xxR 的 Mac 电脑。不要对号入座哟

这次搭建的是油管镜像站,套用了 CDN 来给网站加速,国内无需 xxx 即可直连。对接谷歌官方 API 实现了以下功能:

  • 视频搜索
  • 频道搜索
  • 频道 & 分类内容浏览
  • 支持多种格式视频下载
  • 支持视频分辨率切换,支持 720P 高清视频
  • 支持字幕切换

上一张图:

img


实现原理

该项目采用 GPL 开源协议发布,是一款基于 PHP 开发的 Youtube 流量代理脚本。

虽然标题写着镜像站,但实际上这个网站并不是通过反向代理或镜像来实现的,而是通过谷歌官方提供的免费 YouTube API 来获取 YouTube 资源,当用户访问某个视频资源时,该程序就会通过 API 访问对应资源,读取谷歌服务器上的视频并一块一块写入到虚拟主机/服务器的内存中,最后转发给你的浏览器,虚拟主机/服务器起到一个流量中转跳板的作用。

需要注意的是,这个程序无法实现类似优酷/腾讯视频等大型视频网站的搭建,最多支持2-4人同时观看 (视虚拟主机/服务器配置而定)。

注意事项

- 不要在国内网络商家提供的主机或者服务器上安装该项目,如阿里云,腾讯云等;

- 不要给服务器或主机绑定已经备案的域名,如 CN 域名;

- 大规模传播易造成域名被封或其它严重后果

前期准备

这个项目的实现成本较低,如果使用免费 PHP 虚拟主机 & 免费域名搭建的话可以实现完全免费。但是由于前车之鉴,所以不推荐使用免费域名。域名可在 Namecheap 和 Namesilo 购买,.xyz 域名低至 $ 0.99/年。

搭建只需要:

  • 国外 VPS 或 PHP 虚拟主机 x 1
  • 域名 x 1
  • SSL 证书 x 1 (如果用 VPS 搭建则无需准备证书)

因为手里已经有传家宝了,所以这次没有使用虚拟主机来搭建。该文章只记录使用 VPS 搭建的过程。

Youtube Data API 获取

  • 首先需要可以科学上网的环境 & 一个谷歌账号

  • 打开 https://console.developers.google.com/

  • 若弹出服务条款更新窗口,全部选“是” ,并点击“接受”;如果没有弹出此窗口可以忽略并进行下一步

img

  • 点击“选择项目”

img

  • 点击 + 图标创建一个新项目

img

  • 使用默认的名称即可;也可以填写自定义名称,点击“创建”

img

  • 创建完成之后,点击顶部“选择项目”,找到刚创建的项目,点“打开”

img

  • 点击“启用 API 和服务”

img

  • 在页面左侧下拉列表中找到 YouTube

img

  • 选择 YouTube Data API 并启用

img

img

  • 点击“创建凭据”

img

  • 问题答案依次选 “YouTube Data API v3”;“网页服务器”;“公开数据”。接着点“我需要哪些凭据?”

img

  • 复制 API 密钥并点击“完成”

img

安装宝塔面板

根据 VPS 的系统来选择安装命令。我的传家宝是 Debian 9 系统,所以使用了如下安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

安装完后弹出如下界面:

img

点击链接输入用户名和密码登录;登陆面板后,会提示安装网站环境套件,LNMP 或 LAMP。因为暂时不打算在传家宝上搭建其它网站,所以我只勾选安装了 LNMP 中的 Nginx 和 PHP 组件。由于 PHP 7.3 版本多次安装失败,我选择了 PHP 7.1 版本。

添加站点

  • 点击宝塔面板侧栏 “网站 - 添加站点”,格式如 xxx.com, 回车,继续添加 www.xxx.com,其它默认,点击“提交”

申请 SSL 证书

域名使用 DNS 服务解析至当前服务器 IP 后,即可在宝塔面板申请 SSL 证书。

  • 域名添加完成后,点击站点右边的“设置 - SSL - Let’s Encrypt”,填写真实的管理员邮箱并勾选刚才添加的域名,点击“申请”;

Let’s Encrypt 是最出名的免费 SSL 证书之一,免费域名也可申请。证书有效期3个月,面板有自动脚本实现无限续签。

  • 申请完成后会自动配置 HTTPS 和 SSL 证书,务必开启右上角的“强制 HTTPS”功能。

img

站点加密

  • 紧接着配置完 SSL 和 “强制 HTTPS”,点击左侧“网站目录 - 开启密码访问”,依次填写授权账号和访问密码。

此步骤非必须,但是为了防止别人随意访问和降低被禁几率,建议还是开启。后续网站登录成功后会写入浏览器 Cookie,到期前下次访问都无需再次输入密码。

上传程序文件

由于该项目的名称已经成为了敏感词,为了避免博客被 * 这里就不放链接了,项目源码可以在我的 Github 里找到。

  • 点击宝塔面板左侧“文件”,进入刚才新建站点的目录:根目录/www/wwwroot/xxx.com

  • 点击“上传”,在弹出的上传文件窗口中,点击“添加文件”,然后选择下载好的 zip 文件,点击“开始上传”;上传成功后,即可关闭上传文件窗口

  • 上传成功后,删除首页的自动生成的 index.html 文件

  • 选中刚才上传的 zip 文件并解压,解压后将 zip 文件删除

  • 进入解压出来的同名文件夹,将含有 install.php,ajax,embed 等等等所有文件和文件夹全选,并点击”剪切“

  • 退至 www/wwwroot/xxx.com 目录下,并选择 ”全部粘贴“

安装程序

  • 访问刚才绑定的域名,后缀加上 /install.php,格式如下:https://xxx.com/install.php

  • 输入刚才配置的用户名和密码后进入,阅读协议并同意以进入下一步

img

  • 接着会出现如下页面:

img

这是一个运行环境检测页面,如果发现有某项不支持,那么需要重新设置 WEB 环境以符合系统需求,并重新执行安装。

如果主机环境符合所有条件,接下来就是配置参数了。

  • Youtube API V3 KEY:填写最前面申请的 YouTube API 密匙

  • 国家代码:填一个 ISO3166 标准的国际代码,如 JP = 日本;建议避免香港和台湾

  • 网站名字:打开网站后,浏览器标签中显示的名字

  • 站点名字:打开网站后,网站页面左上角显示的名字

  • 加/解密密匙:一个无序的字符串,乱填也行

  • 你的邮箱:请务必认真填写真实有效的 Email 地址!建议填写国外邮箱 gmail,yahoo 等,用于接收版权内容投诉

完整并且正确填写每一项内容后点”继续“,然后系统会自动创建配置文件。

当看到这样的提示,说明站点已经全部安装完毕,可以开始尽情地观看视频了。

img

img

搭建过程中有任何问题都可以在下方评论区留言(没看见评论区是因为国内禁用了这个评论系统)。


后记

之所以略去项目的名称和链接是因为原作者迫于压力已经停止了开发维护并删除了源码,而程序名称也成了敏感词。朋友们低调自用,且用且珍惜。

部分视频点开无法播放并会显示 “The media could not be loaded, either because the server or network failed or because the format is not supported” 一说是由于视频受版权保护,二是由于 YouTube 算法升级,之前解析抓取下载链接的方法失效。有些视频刷新几次可以解决。

最近在研究可以播放 1080P 的版本,据说可以解决某些视频无法播放的问题,部署测试完毕后会继续更新。

—— Jin 于 2019.11