前言
GoIndex 全称 Google Drive Directory Index,它是一款可以部署在 Cloudflare Workers 上的无服务器架构 ( Serverless ) Google Drive 目录索引程序,它可以将 Google Drive 文件以目录形式列出,并且可以通过直链进行下载,如果视频是 MP4 格式还可以在线观看。由于流量是通过 Cloudflare 中转,所以即使在被限制的网络环境下也能自由的使用。本篇教程讲解的是 GoIndex 使用自定义 API 部署的过程,理论上更安全且下载速度更快。
准备工作
- Google 账号
- CloudFlare 账号
- GoIndex 源码(开发者已删库,备份仓库)
打开 index.js 可以看到一些可以自由修改的参数。其中最后四项是需要我们手动去获取的参数。
"siteName": "GoIndex", // 网站名称
"root_pass": "index", // 根目录密码,优先于.password
"version" : "1.0.6", // 程序版本
"theme" : "material", // material classic
"client_id": "",
"client_secret": "",
"refresh_token": "", // 授权 token
"root": "root" // 根目录ID
获取 client_id 与 client_secret
NOTICE: 部分教育邮箱可能无法开启 API ,这是因为管理员没有开放权限,你可以使用自己的账号去创建 API 。
- 创建 OAuth client ID,首次创建会让你配置同意屏幕,填写应用名称后直接保存即可。
- 应用类型选择其他,名称随意。(迷路点这里)
- 然后就可以看到客户端ID(client_id)和客户端密钥(client_secret),复制并保存好。
获取 refresh_token
- 安装 Rclone
curl https://rclone.org/install.sh | bash
- 输入
rclone config
命令,会出现以下信息,参照下面的注释进行操作。
点击查看
$ rclone config
...
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n # 选择n,新建
name> gd
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Box
\ "box"
7 / Cache a remote
\ "cache"
8 / Citrix Sharefile
\ "sharefile"
9 / Dropbox
\ "dropbox"
10 / Encrypt/Decrypt a remote
\ "crypt"
11 / FTP Connection
\ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
13 / Google Drive
\ "drive"
14 / Google Photos
\ "google photos"
15 / Hubic
\ "hubic"
16 / JottaCloud
\ "jottacloud"
17 / Koofr
\ "koofr"
18 / Local Disk
\ "local"
19 / Mail.ru Cloud
\ "mailru"
20 / Mega
\ "mega"
21 / Microsoft Azure Blob Storage
\ "azureblob"
22 / Microsoft OneDrive
\ "onedrive"
23 / OpenDrive
\ "opendrive"
24 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
25 / Pcloud
\ "pcloud"
26 / Put.io
\ "putio"
27 / QingCloud Object Storage
\ "qingstor"
28 / SSH/SFTP Connection
\ "sftp"
29 / Transparently chunk/split large files
\ "chunker"
30 / Union merges the contents of several remotes
\ "union"
31 / Webdav
\ "webdav"
32 / Yandex Disk
\ "yandex"
33 / http Connection
\ "http"
34 / premiumize.me
\ "premiumizeme"
Storage> 13 # 选择 13 / Google Drive
** See help for drive backend at: https://rclone.org/drive/ **
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id> # 输入 客户端ID
Google Application Client Secret
Setting your own is recommended.
Enter a string value. Press Enter for the default ("").
client_secret> # 输入 客户端密钥
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
1 / Full access all files, excluding Application Data Folder.
\ "drive"
2 / Read-only access to file metadata and file contents.
\ "drive.readonly"
/ Access to files created by rclone only.
3 | These are visible in the drive website.
| File authorization is revoked when the user deauthorizes the app.
\ "drive.file"
/ Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website.
\ "drive.appfolder"
/ Allows read-only access to file metadata but
5 | does not allow any access to read or download file content.
\ "drive.metadata.readonly"
scope> 1 # 完整权限访问
ID of the root folder
Leave blank normally.
Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.
Note that if this is blank, the first time rclone runs it will fill it
in with the ID of the root folder.
Enter a string value. Press Enter for the default ("").
root_folder_id> # 留空,回车
Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> # 留空,回车
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n # 输入 n
If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/XXXXXXX
Log in and authorize rclone for access # 复制上面的链接到浏览器中打开进行授权。
在浏览器中你可能会遇到下图的提示,这是因为 API 是我们自己创建的,并没有通过 Google 的验证。
Enter verification code> # 在这里输入网页上显示的验证码
Configure this as a team drive?
y) Yes
n) No
y/n> y # 如果是团队盘输入 y ,否则输入 n
Fetching team drive list...
Choose a number from below, or type in your own value
1 / P3TERX
\ "0ADPHQ2hJ-6ZkUk9PVA"
Enter a Team Drive ID> 1 # 检测到团队盘,这里输入 1
2019/11/06 21:44:27 ERROR : Failed saving config "team_drive" = "0ADPHQ2hJ-6ZkUk9PVA" in section "gd" of the config file: section 'gd' not found
--------------------
[gd]
type = drive
client_id = 217429025371-pfu4k1ko34p4hku860kuj5k5v038f1u4.apps.googleusercontent.com
client_secret = 2VxOZcsItLFB8htDXDn2zl_e
scope = drive
token = {"access_token":"XXXXX","token_type":"Bearer","refresh_token":"1//0eDO2FT","expiry":"2019-11-06T22:44:23.013869707+08:00"} # 保存其中的 refresh_token
team_drive = 0ADPHQ2hJ-6ZkUk9PVA
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y # 输入 y 确认
Current remotes:
Name Type
==== ====
Onedrive onedrive
gd drive
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q # 输入 q 退出
获取根目录ID(root)
这里的根目录是指 GoIndex 显示的根目录,可以是你网盘中的任意目录。打开网盘定位到某个目录或共享目录,地址栏 URL 中最后面部分的代码就是目录ID了。如果是个人网盘参数留空则是网盘根目录。
创建 Workers
- 登录 Cloudflare,点击右侧的 Workers 。
新建一个 Workers 子域名。
TIPS:后续无法更改,所以不要乱填。
- 点击
Create a Worker
新建一个 Worker
- 清空输入框中的内容,把修改好的 GoIndex 代码并粘贴进去,然后可以在左上角双击修改域名,再点击
Save and Deploy
即可。
- 最后获取到的
****.workers.dev
就是你的 GoIndex 地址了,比如我的是gd.p3terx.workers.dev
。
自定义域名
- 添加一个 CNAME 记录到前面获取到的地址。
- 然后去 Workers 点击
ADD route
- 输入自定义域名,需要注意的是后面要加上
/*
,比如我的是gd.p3terx.com/*
,下面的 workers 选择之前创建的项目。
- 如果想要 http 自动跳转到 https 需要开启
Always Use HTTPS
:
扩展玩法
如果你有谷歌云 VPS 可以通过 Aria2 下载并自动调用 Rclone 上传到谷歌网盘,谷歌云入站流量和谷歌自己服务的流量都是免费的,除了 BT 下载时上传会消耗一些收费流量外,其它几乎不会产生收费流量。GoIndex 在线观看或者下载到本地的数据走 Cloudflare 无需梯子,也不需要额外费用。如果你的谷歌网盘是无限盘就相当于0成本拥有了无限流量和无限空间的离线下载服务器和共享网盘。
相关阅读:《Aria2 + Rclone 实现 OneDrive、Google Drive 等网盘离线下载》
参考资料
GoIndex - 一个无需服务器的Google Drive目录索引方案
GoIndex谷歌网盘神器,结合CloudFlare Workers
本文作者:P3TERX
本文链接:https://p3terx.com/archives/goindex-google-drive-directory-index.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
按照方法成功了,但下载网速很慢,而且打开文件夹的速度也很慢,是什么原因呢
网速看缘分
大佬写的真好,按教程搭建,一次成功,感谢大佬 OωO
链接"启用 Google Drive API",私人账号正常,但是申请的教育edu却不能启用...是啥原因呀~
话说现在不能上传图片吗?
教育邮箱管理员没给你开权限就没办开启,你就只能用公用API了,忽略
client_id
与client_secret
,继续。图片可以上传到图床,以 MarkDown 格式发出来。评论我改了,你可以看效果。
怪不得,用了好几个申请来的教育邮箱,都不能启用。
还有,大佬,我按你的步骤获得了 GoIndex 地址后,成功部署。
但是到了“自定义域名”这里的操作是怎么来的,折腾半天都找不着你说的“添加一个 CNAME 记录到前面获取到的地址。”
还是在 CloudFlare 网站里面操作的吗?
是的,首先你的域名要被 Cloudflare 接管,然后再DNS设置页面添加解析记录。( 看来我要重新截个图了
大佬,就等你更新了,最后一步一“自定义域名-添加一个 CNAME 记录到前面获取到的地址。”摸不出个所以然来,面板的设置全都点遍了,就是找不着设置页面,强迫症患者心痒难耐。
已经更新了
我终于知道为什么找不到地方设置了,那一栏选项我没有!!账号是要充值VIP吗?
前面我说了,域名要被 Cloudflare 接管。
emmm 总觉得这个主题的排版出来怪怪的,
自己又不会写主题,所以只能凑合用。