共计 2460 个字符,预计需要花费 7 分钟才能阅读完成。
大家早就对「谷歌无限容量」这个名字不陌生了,原理就是利用国外的教育邮箱认证,实现谷歌云盘的无限容量。最近 telegram 上面火了一个 github 项目UDS(Unlimited Drive Storage),可以实现个人版网盘的无限容量。
原理
将文件的二进制编码为 base64 并存入 Google Docs 中,下载时再从 base64 转为文件的二进制编码,从而还原文件。
因为谷歌现在的政策是 Google Docs(谷歌在线文档)是免费且不限制容量的,因此可以实现这一目的。当然,也不排除谷歌发现自己被薅羊毛之后添加限制或者解除 Google Docs 的 unlimited storage 政策,这是后话了。
作者到这篇博文写作之时依然在不断 commits,赞一个!
部署
Github 项目地址:UDS
环境:python3 以上及其依赖,当然还需要国际互联网
- 安装 python3 和 pip
Linux:
yum install python3 pip3
apt install python3 python3-pip
macOS:
brew install python3
需要提前安装 homebrew 这个包管理器
以上也可以直接编译安装
Windows:自己谷歌
⚠️关于缺失的依赖,缺什么装什么,例如:
如果报错 ModuleNotFoundError: No module named‘googleapiclient’,输入pip3 install --upgrade google-api-python-client 即可
- 申请谷歌 api
地址:https://developers.google.com/drive/api/v3/quickstart/python
申请好之后下载 credentials.json
文件备用。
- Git clone 并完成验证
以下步骤均在 本机 操作:
git clone https://github.com/stewartmcgown/uds.git #注意这里一定要 cd 进目录,否则会报错‘Failed with: NoClientSecretError’cd /path/to/uds #移动刚刚下载好的 api 文件到 ups 文件夹并改名为 client_secret.jsonmv /path/to/credentials.json /path/to/uds/client_secret.json #初始化
python3 uds.py
完成之后会自动跳转到浏览器,并开始谷歌账户的验证和登录。在终端中也会出现跳转网站的网址:
浏览器出现「The authentication flow has completed.」即可。
这样就算完成了部署,下面可以开始使用了。该 git clone 动作可以在远端服务器上面完成,也可以直接在自己电脑上面完成。
⚠️在 服务端 部署的时候,需要手动复制网址到本机浏览器完成验证,验证完成后会给一串认证码。并使用 python3 uds.py --noauth_local_webserver
开始初始化步骤。
使用
python3 uds.py push Uploads a file from this computer [path_to_file]
python3 uds.py bunch Uploads files from this computer [word_in_file] [path_to_file]
python3 uds.py pull Downloads a UDS file [id]
python3 uds.py batch Downloads UDS files [word_in_file]
python3 uds.py grab Downloads a UDS file [name]
python3 uds.py list Finds all UDS files [query]
python3 uds.py update Update cached UDS data
python3 uds.py delete Deletes a UDS file [id]
python3 uds.py erase Deletes a UDS file [name]
python3 uds.py wipe Deletes UDS files [word_in_file]
解析:可以看到我用 mbp 上传一个不到 50 兆的视频文件足足用了 4 分钟,下载该文件用了 6 分钟。抛开互联网网速,编码和解码也需要较长时间。因此该方法虽然可以做到无限容量,但是以传输和下载速度为代价。所以不建议大家上传大体积的文件。
安全性来讲也是很不错的,别人拿不到你的 client_secret.json
就别想解码下载了。
大家看到最后一栏,list 之后多出来了一个 uds.py
文件,那是我在远端服务器部署好之后尝试上传的。也证明了只要有 client_secret.json
文件在手,也可以实现跨设备上传和下载,网盘的标配功能。
不足:
uds core 依然存在着不足,具体体现在:
- 纯命令行需要掌握 Linux 基础,然而很多人只是想要一个无限容量的谷歌网盘
- 程序对
client_secret.json
文件依赖性大,如何合理的托管是个问题 - 跨设备下载和上传文件依然存在诸多不便(非自己电脑情况下),并且无法用一键傻瓜脚本解决
- 没有分享功能,也不能转存他人文件
- 需要国际互联网,这就意味着国内服务器不可以直接部署。
当然最后一条并不是该项目的错
WEBgui
demo:传送门
项目地址:uds-web
作者为了解决可视化以及跨设备登录等问题开发了 uds 的 web 版,通过谷歌账号可以登录。
也可以自己部署:
screen -S uds-web
git clone https://github.com/stewartmcgown/uds-web.git
cd uds-web
npm install
npm run serve
截至 19.5.25,该项目处于不可用状态,表现为:登录谷歌账号不需要账号密码,似乎没有写好?不能上传和下载任何文件,只是一个框架。有可用更新后我会继续更新博文。
不过有门槛总是好的,不至于一拥而上将羊毛薅光,希望该方法可以给需要大容量存储的人带来便利。
参考文章: