最近在Google drive上转存了李志的音乐合集,想做一个网页提供在线试听,但因为众所周知的原因,Google drive在墙内无法正常访问,于是就通过CloudFlare Workers部署goindex来代理Google drive。
一、创建 Google 项目
跳转创建项目页面,输入项目名之后确认创建

接着会跳转到OAuth 同意屏幕,User Type选择外部

修改应用注册,必填项为应用名称、用户支持电子邮件以及底下的开发者联系信息,其他可不填,保存即可


接下来的测试用户添加自己的邮箱即可

二、开启 Google Drive API
跳转开启 Google Drive API页面,开启该功能

开启成功后如下

三、创建 OAuth client ID
跳转创建 OAuth client ID页面,应用类型选择桌面应用,名称随意,完成后点击创建

创建成功会返回客户端 ID和客户端密钥,自行保存,后面需要用到

四、安装 Rclone
下载地址,根据自己的系统版本选择下载之后解压
五、CMD 运行 Rclone
有两种方法,就Win10系统举例
- 在
Rclone解压的目录的地址栏输入cmd,打开当前路径的命令行终端 - 在系统环境变量
Path添加Rclone的路径
在之后获取Google Drive的refresh token时需要访问到Google的服务,所以必不可免的需要用到代理,但CMD默认是不走代理的,可自行设置临时代理。
六、设置CMD临时代理
以v2ray为例,打开设置-参数设置查看本地监听端口和协议。
在windows的cmd终端中,执行下面命令:
set http_proxy=socks5://127.0.0.1:10808
set https_proxy=socks5://127.0.0.1:10808
七、使用 Rclone 获取 refresh_token
在终端上执行rclone config,选择n新建,名字随意

选择18即Google Drive

之后填写先前获取的client id和client secret,scope权限选择1,即所有权限

service_account_file回车不填即可
Edit advanced config也是回车默认No
Use auto config选择n

之后就会提示输入验证码,复制rclone authorize "drive" "xxx"

开启另外一个终端执行复制的命令,这里需要给cmd终端设置临时代理
之后会跳转到浏览器,登录并授权

显示如下即代表成功获取

回到终端复制返回的验证码,并在第一个终端输入
根据自己的盘是不是Team Drive选择,得到的token里就有我们需要的refresh_token

八、部署到 Goindex到CloudFlare Workers
前往CloudFlare,到Workers页面下,创建服务



点击快速编辑,填入Goindex的源码并将client_id client_secret refresh_token 内容替换为自己的,保存并部署。
九、设置反代
因为CloudFlare的workers.dev域名被墙,可以添加自己的域名来访问,但需要先把域名托管到CloudFlare,也可以设置反向代理来访问workers.dev域名。这里通过vercel一键部署反向代理。
项目地址:利用Vercel做反向代理,访问GitHub网站.
修改vercel.json中Github地址为自己的CloudFlare Workers项目地址,一键部署即可。