本站一直采用
当然,本文不会局限于 GoIndex 这个项目,同时也会和大家介绍一下类似的可用于谷歌云盘直链下载的前端、接口。
交流群:Newlearnerの水群
简介
GoIndex,即 Google Drive Directory Index,是部署在 CloudFlare Workers 的程序,调用了rclone的接口。可以将 Google Drive 文件以目录形式列出,并直连下载。流量走 CloudFlare ,网速由 CloudFlare 决定。因此,该项目的可用性完全取决于 CloudFlare 是否提供免费的服务。如果将来 CloudFlare 上市之后取消了免费计划,那么该方案成本会上升一个台阶。
目前是测试版,页面的风格和
9月9日更新:1.0.2版本,加入了添加前端文件缓存功能和文件预览功能(临时)
9月12日更新:1.0.6版本,加入新主题 classic
Github地址:https://github.com/donwa/goindex
Demo地址:https://index.gd.workers.dev(material)https://indexc.gd.workers.dev(classic)
下面来说说 GoIndex 的优点:
- 开源免费
- 可直链下载文件,免翻
- 目前支持mp4视频在线播放
- 调用 CloudFlare Workers,没有额外成本
- 从零到一的飞跃,即质变
- 利用无限盘或共享盘的机制可以做大型分享云盘
部署流程
1、访问 https://install.gd.workers.dev,点击获取验证码
2、点击之后跳转到谷歌验证界面,允许rclone应用程序访问,会获得一串认证码,复制到「Auth认证码」一栏。关于「目录ID」打开团队盘(文件夹或别人共享的文件夹),看地址栏。https://drive.google.com/drive/folders/{这后面一堆代码就是id},将这串代码复制到「目录ID」这一栏。接着填写「根目录密码」,默认为 index。最后点击生成代码。
3、将生成的JS代码保存,用同一个谷歌邮箱注册 cloudflare。注册好之后,进入首页,点击「Get started with Workers」。
作者在新版本正式加入了「主题选择」和「MP4在线播放」功能:
- 主题选择(9.12更新)
在新 index.js 中作者加入了「根目录访问认证」这一功能,在第三步得到的JS代码中,有以下片段:
1 2 3 4 5 6 7 8 9 10 |
var authConfig = { "siteName": "GoIndex", // 网站名称 "root_pass": "index", // 根目录密码,优先于.password "version" : "1.0.6", // 程序版本 "theme" : "material", // material classic "client_id": "202264815644.apps.googleusercontent.com", "client_secret": "X4Z3ca8xfWDb1Voo-F9a7ZxJ", "refresh_token": "", // 授权 token "root": "root" // 根目录ID }; |
在「themes」选项后面填写主题的名称,可供选择的主题有”material”和”classic”,自行查看 Demo。在这里我们还可以命名网站名称,设置根目录密码。
- MP4在线播放(9.9更新)
作者在1.0.2版本中加入了文件预览功能,其中包括视频在线播放。大家更新到1.0.2或更高版本之后无需使用以下代码即可实现mp4在线播放,也就是重装GoIndex,会自动安装最新版。
(以下代码适用于1.0.1及以下版本)把以下代码放入<head></head>之间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<script src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layer/2.3/layer.js"></script> <script> $(function () { $('.mdui-list').on('click','li',function(){ var href = $(this).children('a').attr('href'); console.log(href); if(href.lastIndexOf(".mp4") > -1) { layer.open({ type: 1, title: decodeURI(href.substring(href.lastIndexOf("/") + 1, href.length)), shadeClose: true, shade: 0.8, area: ['100%', '100%'], content: '<center><video controls autoplay=true preload=auto style="width:80%;object-fit: cover;" src="' + href + '"></video></center>' }); return false; } }); }); </script> |
4、进入 Workers 之后,会看到一个名为 worker.dev 的域名,这是CF提供的域名,一旦确认不可修改。接着输入一个自定义前缀(例如xxx),点击 Set up domain。在 Script 里复制刚才的代码code,右下角Run可以在右边看到浏览状态,左边上方可以修改地址,例如修改为111并保存。那么 111.xxx.workers.dev 就是你的域名地址了。打开这个域名,你就会看到谷歌网盘目录索引网页!
5、如果不想使用预设的 worker.dev 域名,在执行完以上操作之后,绑定一个自己的域名到 CloudFlare。进入 DNS 管理页面,选择「Workers」。点击右侧的「Add route」,并根据提示设置route。route一项请填写你绑定cf的域名,自定义前缀,提前解析好,结尾跟上 /*。例如:gd.newlearner.site/*
6、设置文件夹密码
上面提到我们可以设置「首页登录认证」,对于文件夹,作者依然沿用了之前OneIndex的.password
方案。将写有密码的.password
文件上传到GD目录,则该目录需要密码验证后方可访问。
密码文件只能保护该文件不被列举,不能保护该文件夹的子文件夹不被列举,也不保护文件夹下文件不被下载。
程序文件中 root_pass
只为根目录密码,优先于 .password
文件
安全与隐私问题
有人可能会质疑,直接从 install.gd.workers.dev 通过验证,是否存在风险?
风险是有的,因为该网页可以保存谷歌用户的 refresh_token 从而读取你的GD文件,这从技术上可行。但我也提到了,作者是 OneIndex 开发者,做的贡献有目共睹,没有必要做这样的事情。作者本人也公开表示这个网页不会自动保存用户的 refresh_token。
同时,该程序也调用了rclone的 client_id 和 client_secret,如果对这个程序也有疑问,可以选择不用或者自己造轮子。
下面来讲一下不通过 install.gd.workers.dev 网页部署该程序的大致流程:
- 在本地安装 rclone
- 按照 https://rclone.org/drive 流程进行授权
- 执行 rclone config file 查看 rclone.conf 路径,找到root_folder_id和refresh_token记录下来
- 下载 https://github.com/donwa/goindex 中的 index.js 并填入 root 和 refresh_token
- 复制代码 到 CloudFlare 部署
如果之前已经成功部署,也可以到这里取消授权:https://myaccount.google.com/security
拓展
利用 CloudFlare Workers 是个好思路,基于此又有一些成品轮子和大家见面,这利一并介绍下。
-
萌咖 GoogleDrive API
萌咖大佬也用 workers 造了一个直连下载谷歌云盘文件的轮子,不过没有前端页面,只有一个 API 接口。
普通模式API:https://api.moeclub.org/GoogleDrive/<FileID>,走 谷歌CDN
高级接口模式API:https://api.moeclub.org/GoogleDrive/<FileID>/NoLimit,走 Cloudflare CDN,支持断点续传
这里的<FileID>是谷歌云盘分享链接中 id= 后面的一串字符,举个例子:https://drive.google.com/open?id=1x5SoOpOWSS5jxJSU7XyHlhG2EiPgHGGM,则<FileID>为1x5SoOpOWSS5jxJSU7XyHlhG2EiPgHGGM。
⚠️注意:一定要通过分享链接获取文件ID,经本人测试:团队盘、他人分享的文件不可以使用此API,只适用于个人(自己)网盘的分享
-
CF – Workers
沿用的依然是上面的部署方式,但作者自己写了一个 index.js,把页面做成了一个搜索框样式直链下载。支持在线播放视频和直链下载文件。
Github:https://github.com/reruin/workers/blob/master/link/index.js
Demo:https://link.reruin.workers.dev
安装的时候把上文粘贴的代码换成项目中的JS代码即可。
使用:
link.reruin.workers.dev/gd/<FileID> 中转下载
/gda/<FileID>?output=redirect 原始链接下载
/gda/<FileID>?output=json 获取文件详细信息(JSON格式)
/gda/<FileID>?output=preview 预览该文件(仅支持图片、视频、音频)
/gda/<FileID>?output=media 尝试使用转码模式播放视频文件(如wmv,rmvb)
羊毛虽好,请勿竭泽而渔。善待cf,从我做起。想要用得好,请自行申请EDU无限谷歌云盘或者加入他人的团队盘!
参考文章:
播放代码加入没效果,请问能公布播放代码正确的加入方法吗
因为作者昨晚更新了 index.js 部分代码,导致该 mp4 代码失效了,修复了之后我会发布到这里
谢谢大佬告知,期待您的更新
已更新,试着删除 rclone 授权和 workers,重新用新代码部署。
收到,谢谢
那么问题来了,15G的免费容量不够用啊,怎么搞个不限的。
用国外EDU邮箱注册无限容量谷歌盘 / 购买 G suit / 找人带你开共享团队盘
视频只能播放mp4格式,能不能增加对其他格式的支持
目前是测试版本,如果将来有这方面的更新我会同步更新博客。
Thanks for passing this beautiful information. I will check into it and feedback you.
现在功能越来越强大了!!
大佬我配置woerkers的时候预览是正常的,但是域名无法打开,谷歌提示使用了不受支持的协议,ERR_SSL_VERSION_OR_CIPHER_MISMATCH。目测好像是因为没有证书?但是我找不到workers申请证书的地方,这worker.dev也不是我的我也没法申请啊,求救大佬指点。
workers 的证书不需要在再次配置,cf 本身自带的。再检查下其他地方是否存在问题,如果确实不可以,带上报错和截图去 GitHub 提 issue
goindex能进根目录,也能下载文件,但是点击二级目录的时候就提示这个:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "fileNotDownloadable",
"message": "Only files with binary content can be downloaded. Use Export with Google Docs files.",
"locationType": "parameter",
"location": "alt"
}
],
"code": 403,
"message": "Only files with binary content can be downloaded. Use Export with Google Docs files."
}
}
愁人,折腾半天了
应该是Google Drive“快捷方式”文件的原因,正常文件可以访问,但团队盘链接过来的快捷方式就访问不了