本站一直采用 donwa 开发的 OneIndex 作为网站的分享网盘,今天和大家来说说 donwa 大佬的又一力作:GoIndex。从此,GoogleDrive 也有了免费的直链目录索引前端,可以直接分享给别人,也可以自己作为私密盘使用。感谢各位开发者的辛勤劳动。
当然,本文不会局限于 GoIndex 这个项目,同时也会和大家介绍一下类似的可用于谷歌云盘直链下载的前端、接口。
交流群:Newlearnerの水群

简介
GoIndex,即 Google Drive Directory Index,是部署在 CloudFlare Workers 的程序,调用了rclone的接口。可以将 Google Drive 文件以目录形式列出,并直连下载。流量走 CloudFlare ,网速由 CloudFlare 决定。因此,该项目的可用性完全取决于 CloudFlare 是否提供免费的服务。如果将来 CloudFlare 上市之后取消了免费计划,那么该方案成本会上升一个台阶。
目前是测试版,页面的风格和 OneIndex 类似,但是作者没有做容错和缓存,也没有做管理后台。这些是可以通过添加一些代码来解决的,期待后续作者的更新。
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在线播放」功能:
在新 index.js 中作者加入了「根目录访问认证」这一功能,在第三步得到的JS代码中,有以下片段:
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。在这里我们还可以命名网站名称,设置根目录密码。
作者在1.0.2版本中加入了文件预览功能,其中包括视频在线播放。大家更新到1.0.2或更高版本之后无需使用以下代码即可实现mp4在线播放,也就是重装GoIndex,会自动安装最新版。
(以下代码适用于1.0.1及以下版本)把以下代码放入<head></head>之间:
<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 网页部署该程序的大致流程:
拓展
利用 CloudFlare Workers 是个好思路,基于此又有一些成品轮子和大家见面,这利一并介绍下。
萌咖大佬也用 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,只适用于个人(自己)网盘的分享
沿用的依然是上面的部署方式,但作者自己写了一个 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无限谷歌云盘或者加入他人的团队盘!
参考文章:
GoIndex预览版
GD 直链工具 cf-worker 版
回应下GoIndex获取token的风险问题以及临时解决方案