先说能干什么,朋友分享你一份谷歌云盘资源,你稍微那么一操作,这个就能放到你的本地盘中,还不占用本地硬盘空间,你在加个 plex 或者 emby,一个妥妥的云库影音诞生了。

现在我的操作就是,在 tg 的 bot 上直接使用/copy aaa bbb ,它就在会后台去执行拷贝,完事了直接推送我成功。

先说下大概流程,心理有谱,再继续操作,我们要知道每一步的目的,不能瞎搞,否则,越做越乱。首先我们是基于谷歌团队共享盘 1P 的大小上做文章的,然后出的这些工具都是合理的使用这个空间。rclone是一个云盘挂载工具,能够让你在本地使操作云盘的数据。AutoRclone这里我们用它来生成 SA 的账户,以及相关添加到团队成员,来突破【补充具体限制】限制。gd-utils 我们用来把工具跟 tg 打通,在 tg 的 bot 上使用操作语句,完成远程操作。

简而言之就是 我们用 RClone把谷歌云盘挂载到我们 VPS 本地,本来就可以完事了,但是谷歌的 API 有每日上次 750G 的限制,那咋办呢,聪明的前辈们,想到可以通过创建很多用户,每个用户 750G,创建 100 个不就可以满足了吗,然后就出现啦 AutoRclone的工具。生成后用户不得动态使用吗?然后 gd-utils就可以把你的 sa 账户来动态使用,并绑定 tg 使用,同类的还有 gclone(一个魔改 rclone 的工具)也能满足。

点击OAuth同意屏幕,用户类型选择外部,应用名称随便填写,比如“rclone”就可以。用户支持电子邮件和开发者联系邮箱都填写您自己的就可以,点击保存并继续,剩下的参数都是用默认就可以了。

点击凭据,屏幕上方点击创建凭据,选择OAuth 客户端ID

名称随便填,点击创建。创建后会向您提供您的客户端ID 和客户端密码,务必记下这些数据,并且填写到rclone中。

最后选择OAuth同意屏幕,选择发布应用。此时应该能看到发布状态变为了正式版。

sudo-v;curlhttps://rclone.org/install.sh|sudobash

可以使用 rclone --version 来检查是否已经安装。

命令行输入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
>nEnter namefornew remote.
name
>google-driveOption Storage.
Type of storage to configure.
Choose a number from below, or
typeinyour own value.1/ 1Fichier\(fichier)2/ Akamai NetStorage\(netstorage)3/ Aliasforan existing remote\(alias)4/ Amazon Drive\(amazon cloud drive)5/ Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, China Mobile, Cloudflare, ArvanCloud, Digital Ocean, Dreamhost, Huawei OBS, IBM COS, IDrive e2, IONOS Cloud, Lyve Cloud, Minio, Netease, RackCorp, Scaleway, SeaweedFS, StackPath, Storj, Tencent COS, Qiniu and Wasabi\(s3)6/ Backblaze B2\(b2)7/ Better checksumsforother remotes\(hasher)8/ Box\(box)9/ Cache a remote\(cache)10/ Citrix Sharefile\(sharefile)11/ Combine several remotes into one\(combine)12/ Compress a remote\(compress)13/ Dropbox\(dropbox)14/ Encrypt/Decrypt a remote\(crypt)15/ Enterprise File Fabric\(filefabric)16/ FTP\(ftp)17/ Google Cloud Storage(this is not Google Drive)\(google cloud storage)18/ Google Drive\(drive)19/ Google Photos\(google photos)20/ HTTP\(http)21/ Hadoop distributedfilesystem\(hdfs)22/ HiDrive\(hidrive)23/ In memory object storage system.\(memory)24/ Internet Archive\(internetarchive)25/ Jottacloud\(jottacloud)26/ Koofr, Digi Storage and other Koofr-compatible storage providers\(koofr)27/ Local Disk\(local)28/ Mail.ru Cloud\(mailru)29/ Mega\(mega)30/ Microsoft Azure Blob Storage\(azureblob)31/ Microsoft OneDrive\(onedrive)32/ OpenDrive\(opendrive)33/ OpenStack Swift(Rackspace Cloud Files, Memset Memstore, OVH)\(swift)34/ Oracle Cloud Infrastructure Object Storage\(oracleobjectstorage)35/ Pcloud\(pcloud)36/ Put.io\(putio)37/ QingCloud Object Storage\(qingstor)38/ SMB / CIFS\(smb)39/ SSH/SFTP\(sftp)40/ Sia Decentralized Cloud\(sia)41/ Storj Decentralized Cloud Storage\(storj)42/ Sugarsync\(sugarsync)43/ Transparently chunk/split large files\(chunker)44/ Union merges the contents of several upstream fs\(union)45/ Uptobox\(uptobox)46/ WebDAV\(webdav)47/ Yandex Disk\(yandex)48/ Zoho\(zoho)49/ premiumize.me\(premiumizeme)50/ seafile\(seafile)Storage>18Option client_id.
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/
If you leave this blank, it will use an internal keywhichis low performance.
Enter a value. Press Enter to leave empty.
client_id
>462247176789-xxxxxxx.apps.googleusercontent.comOption client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret
>GOCSPX-1xxxxzmordOption scope.
Scope that rclone should use when requesting access from drive.
Choose a number from below, or
typeinyour own value.
Press Enter to leave empty.
1/ Full access all files, excluding Application Data Folder.\(drive)2/ Read-only access tofilemetadata andfilecontents.\(drive.readonly)/ Access to files created by rclone only.3|These are visibleinthe drive website.|File authorization is revoked when the user deauthorizes the app.\(drive.file)/ Allowsreadandwriteaccess to the Application Data folder.4|This is not visibleinthe drive website.\(drive.appfolder)/ Allows read-only access tofilemetadata but5|does not allow any access toreador downloadfilecontent.\(drive.metadata.readonly)scope>1Option service_account_file.
Service Account Credentials JSON
filepath.
Leave blank normally.
Needed only
ifyou want use SA instead of interactive login.
Leading
`~`will be expandedinthefilename as will environment variables such as`${RCLONE_CONFIG_DIR}`.Enter a value. Press Enter to leave empty.
service_account_file
>Edit advanced config?
y
)Yes
n
)No(default)y/n>nUse auto config?
* Say Y
ifnot sure
* Say N
ifyou are working on a remote or headless machine

y
)Yes(default)n)No
y/n
>nOption config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For
morehelpand alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser
(same rclone
version recommended
):
rclone authorize
"drive""eyJjbGxxxxSI6ImRyaXZlIn0"Thenpastethe result.
Enter a value.
config_token
>xxxCouldn't decode response - try again(make sure you are using a matching version of rclone on both sides: json: cannot unmarshal number into Go value oftypeoauth2.Token


Configure this as a Shared Drive
(Team Drive)?

y
)Yes
n
)No(default)y/n>nConfiguration complete.
Options:
- type: drive
- client_id:
462247176789-xxxxxxx.apps.googleusercontent.com
- client_secret: GOCSPX-1xxxxzmord
- scope: drive
- team_drive:
Keep this
"test"remote?
y
)Yes this is OK(default)e)Edit this remote
d
)Delete this remote
y/e/d
>yCurrent remotes:

Name Type
========google-drive 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

Use auto config 因为是要在vps上挂载,vps没有桌面环境,因此必须选择 n,进行远程配置。

Option config_token.
For this to work, you will need rclone available on a machine that has
a web browser available.
For
morehelpand alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser
(same rclone
version recommended
):
rclone authorize
"drive""Your Token Code"Thenpastethe result.
Enter a value.

注意,接下来要在本地执行,前面下载在本地的rclone压缩包解压后,你应该能看到一个rclone.exe,类似下图

打开终端,进入到此目录后执行rclone authorize “drive”这一行。

如果不出意外,会自动打开浏览器进入到谷歌账号登录界面,此时一定要登录被挂载的谷歌账号,并选择同意授权。由于是新申请的API,没有经过的谷歌的验证,所以谷歌会提醒该应用未经验证。但是左下角有一行小灰字,点击选择继续就能授权。

此时返回命令行,等待几秒就能看见授权的code了。

至此,rclone 的配置已经完成,可以用来上传下载数据了,也可以挂载,像本地硬盘一样操作里面的数据。

cd/root&&mkdirgoogle_driverclonemountDriveName:Folder LocalFolder --allow-other --allow-non-empty --vfs-cache-mode writes --vfs-cache-max-age 2h&rclonemountgoogle-drive:/root/google --allow-other --allow-non-empty --vfs-cache-mode writes --vfs-cache-max-age 2h&

DriveName为初始化配置填的name,Folder为Google Drive里的文档夹名,LocalFolder为服务器上的本地文档夹名。

cat>/etc/systemd/system/rclone.service<<EOF
[Unit]
Description=Rclone
AssertPathIsDirectory=LocalFolder
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone ```bash
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
AssertPathIsDirectory=LocalFolder
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount google-drive: /root/google--allow-other --allow-non-empty --vfs-cache-mode writes --vfs-cache-max-age 2h
ExecStop=/bin/fusermount -u LocalFolder
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF
```ExecStop=/bin/fusermount -u LocalFolderRestart=on-abortUser=root[Install]WantedBy=default.target
EOF

systemctl start rclonesystemctlenablerclonesystemctl restart rclonesystemctl stop rclone

骚操作,此操作可以把端口映射到本地,也可以配置上面获取谷歌token的第二种方法。

ssh-L localhost:53682:localhost:53682 root@192.168.1.2

第一次进入这个界面会弹出如上图的欢迎界面,同意之后点击同意并继续。

Google Drive API
Identity and Access Management (IAM) API
Service Usage API
Cloud Resource Manager API
IAM Service Account Credentials API

我只示例Google Drive API开启具体步骤,其余API步骤相同,一定要全部打开

在“搜索API和服务”框内输入 drive,点击Google Drive API。

稍等片刻,Google Drive API就启动成功了。

然后点击左上角三条横线,找到 API与服务-库 搜索其余4个API并开启(有的默认开启的就不用管了)。

点击左上角三条横线,找到 API与服务-信息中心,在这里我们可以看到我们成功开启的所有API(除了刚刚开启的5个,其余的是默认开启的,不需要管)。

配置OAuth同意屏幕并创建客户端(按照图示一步一步来)

接着添加测试用户,测试用户填写自己gmail邮箱地址,

刚刚创建的应用是测试版,测试版需要添加测试用户而且客户端ID和密码只有7天有效期,之前可以发布应用来解决,但现在谷歌修改政策,启用权限较高的API的应用必须通过谷歌验证才能正常使用。

AutoRclone项目使用的一些API权限较高,所以发布的应用必须经过谷歌验证,通常这一过程较难实现。若发布应用请求了较高应用权限而未通过验证,则会返回:您无法登录此应用,因为它不符合 Google 为保障应用安全而制定的 OAuth 2.0 政策的规定。

但是我们创建SA项目只需使用一次,7天后授权文件过期不会影响已经生成的SA正常使用!所以无需发布应用,只需要在测试版添加自己的邮箱地址仅供自己使用即可!

至此,OAuth同意屏幕配置完成,接下来创建客户端ID和密码,

此时,客户端ID与密码创建完毕,可以记下来,以后使用方便,不想记也没事,以后还能看,

点击下载授权文件,并改名为 credentials.json

这个文件和上面的客户端ID和密码只有七天有效期,若七天后,还想再生成SA,重新创一个新的客户端ID和密码,下载新的授权文件即可(不影响已生成SA的使用)!

sudoapt-get-y update&&sudoapt-get-y upgrade&&sudoapt-y update&&sudoapt-y upgrade&&sudoaptinstallwgetcurlpython3 python3-pipgitunzipscreenfuse -y

yum -y update
yum
installepel-release -y
yum
installwgetcurlpython3 python3-pipgitscreenunzipsudofuse fuse-devel -y

安装完成后,试试输 python3 -V和 pip3 -V是否正确显示版本号,如果是则说明 python 配置正确,请继续下一步;如果不是,请自行配置 python 环境。

sudogitclone https://github.com/xyou365/AutoRclone&&cdAutoRclone&&sudopip3install-r requirements.txt

将刚下载好的授权文件上传到AutoRclone根目录

上传可以使用宝塔面板或者xftp,这个不会的可以自行谷歌,如何上传?

#在AutoRclone根目录执行
python3 gen_sa_accounts.py --quick-setup 1 --new-only

这个命令的含义是创建100个SA(对于99.9999%的人100个SA都够用了),

--quick-setup 1 是创建1个项目,每个项目里面包含100个SA,若想多创建,将1改为其他数字,建议不要超过10,否则SA有被封禁的风险

执行上条命令后会出现一个链接,复制并在浏览器中打开,登陆你刚刚创建项目时填写的测试用户账号(注意别弄错了)进行授权

复制返回码并粘贴到SSH终端,点击回车,等待SA生成完毕。

我们可以执行 ls /root/AutoRclone/accounts,发现里面有100个SA授权文件,至此SA已生成完毕。

cataccounts/*.json|grep"client_email"|awk'{print $2}'|tr-d',"'|sed'0~100G'>email.txt&&catemail.txt

然后你就可以在当前屏幕上看到你的 SA 的邮箱了。或者你也可以在 email.txt
 文件里找到这些邮箱。将这些邮箱复制,准备添加到 GoogleGroups 里。

将最多 100 个邮箱复制到群组成员里,点击添加即可。

然后点击左侧的关于,找到你的群组电子邮件,将其添加到你的 GoogleDrive 的成员里。

将包含 SA 的 GoogleGroup 账号添加到 GD 里

python3 add_to_team_drive.py -d 0ANxxxUk9PVA

其中的 0ANxxxUk9PVA为你云盘文件夹的地址

dockerrun --restart=always -d\-eUSERPWD="pwd123456"\-p23333:23333\--name gd-utils\-v /root/gd-utils/sa:/gd-utils/sa\gdtool/gd-utils-docker

/root/gd-utils/sa/config.js 文件夹下配置你的参数。这三个参数其实就是 rclone配置过的,你可以直接在 cat /root/.config/rclone/rclone.conf 里看到。

tg_token :为1中获取到的bot的token

tg_whitelist:为自己的 telegram username,这个username不是显示的名称,而是tg个人网址后面的那串字符。只允许特定的用户调用机器人。

将你本地的 SA账户的那堆json上传到 /root/gd-utils/sa/ 目录下。

curl'YOUR_WEBSITE_URL/api/gdurl/count?fid=124pjM5LggSuwI1n40bcD5tQ13wS0M6wg'curl-F"url=YOUR_WEBSITE/api/gdurl/tgbot"'https://api.telegram.org/botYOUR_BOT_TOKEN/setWebhook'

在telegram 的 bot 中输入 /help

最后感谢 @茶茶 ,还有影音群群友的帮助~! 完结 撒花。