我的网盘是这样分的:
百度网盘里是早几年的资料,那会儿没得选。阿里云盘主要用来看剧,空间大、不限速。夸克是朋友们分享资源用的,别人发我个链接,我就得装一个。移动云盘(139)是办宽带送的会员,几个 T 的空间不用白不用,拿来当冷备份。
四个盘,四个 App,四套账号密码。
麻烦是一点点攒起来的。
找文件的时候最烦。明明记得东西在网盘里,但不记得在哪一家,只能一家一家翻。翻到第三家的时候,已经忘了自己一开始要找什么。
搬家更折腾。有一批素材要从百度挪到阿里,按老办法是先下载到本地、再传上去。中间断一次网,就得从头再来。
分享出去的链接也是笔糊涂账。以前放过几十条链接,过一阵子自己也说不清哪条还活着,直到有人跑来问「你这个打不开了」。
最后压垮我的是闲鱼。我在上面卖点东西,每次上架都要手动把网盘链接贴进商品附言,一个商品贴一次。上架十个,就得贴十次。
忍了很久,最后决定自己写一个。就是现在开源出来的云桥 CloudBridge。
它现在长这样
四家网盘的文件都塞进同一个列表里:进目录、筛选、新建、重命名、删除、拖拽上传,操作方式完全一样,不用再去适应四个 App 各自的脾气。
支持的是百度网盘、阿里云盘、夸克网盘、中国移动云盘(139)。同一套代码做了两种形态:
| 形态 | 说明 | 适合谁 |
|---|---|---|
| Windows 桌面版 | Electron 应用,会话用 Windows DPAPI 加密,本地读写文件没有大小限制 | 个人主力机,要传大文件 |
| x86 Docker 版 | 单容器 = Node 服务 + 无头 Chromium + 打包好的前端,浏览器直接访问 | 挂在服务器 / NAS / 小主机上 7×24 跑,多设备共用一份账号池 |
几个我比较常用的功能
跨盘转存
把「下载再上传」这一步省掉了。勾一批文件,选几个目标账号,可以跨网盘,然后就不用管了。目录结构原样保留,每个文件单独给结果,中间断了还能接着跑。
批量分享
有效期、公开还是私密、要不要提取码,设一次,然后批量生成。
生成的链接是各家官方的分享链接,不是自己搭的短链。别人点开就是正常的网盘分享页,提取码校验也在。
分享健康度
四家的分享记录汇总在一张表里,带有效期和状态。
点一下「健康度检查」,它会从外部实际探测每一条链接,告诉我哪条已经打不开了。失效的可以一键取消。
这个功能治好了我多年的心虚。
任务中心
上传、转存、分享的任务都在一张表里:排队、运行中、暂停、完成、部分失败、失败、已取消,每个文件的结果都能查。
批量任务经常要跑几十分钟,所以进度是记在服务端的。刷新页面、换台电脑打开,进度都还在。这点是专门做的,因为之前吃过亏。
账号池
四家的账号集中在一个页面:扫码登录(移动云盘走凭据)、会话有效性校验、容量和会员等级、累计容量统计。哪个账号掉线了,页面上直接有重登入口。
闲管家同步
对接闲管家(goofish.pro)的卖家后台,把「销售中 / 已售」的商品批量同步成网盘分享附言模板,支持白名单和模板变量。
这个功能对我来说是刚需。前面说过,上架的时候一个一个贴链接实在太难受了。
技术上的几个选择
不用官方开放平台 API
网盘开放平台给的能力是残缺的:跨盘转存没有,分享记录读不到,容量和会员等级也拿不到。
所以云桥直接调用各家网页端当前在用的接口。能力是全的,代价也明摆着:接口一变就得跟着改,风控一收紧就得跟着调。仓库里我写得很直白,用之前你应该知道这件事。
密钥缺失就拒绝启动
Docker 版用 CLOUDBRIDGE_SESSION_KEY 做 AES-256-GCM 加密。密钥没给,程序直接拒绝启动,而不是悄悄把会话明文写进数据卷。
起不来总比悄悄降级强。
用无头 Chromium,不硬啃接口
网页端接口里有一部分依赖真实浏览器的运行环境和签名。与其硬啃,不如让 playwright-core 驱动一个无头 Chromium,按官方页面的方式发请求。慢一些,但不容易失效。
数据放在哪
账号、会话、任务、分享记录都保存在本机用户数据目录,或者容器的 /data 卷,不进仓库、不进代码。Windows 上优先用 DPAPI 加密,Docker 用 AES-256-GCM。
跨盘转存会在本地或容器里产生中转文件,流程结束或启动时会清掉。
仓库里没有真实的账号、Cookie、令牌、手机号和内网地址,测试数据全是占位符。
现在还做不到的
- 版本号还是 0.1.0,远没到打磨好的程度;
- 网盘接口不是稳定的公开 API,服务商调整的时候相关功能就得跟着改;
- 仓库里没有安装包,得自己构建;
- 移动云盘不支持短信和扫码自动登录,官方登录页有滑块验证码,只能粘贴授权凭据;
- 请只对自己有权访问的账号和文件使用。
想装来试试
仓库:github.com/dandanliangle/multi-cloud-drive-manager
Windows 桌面版:
npm install
npm run dev # 开发模式:Vite + Electron
npm run build # 生产构建
npm startDocker 版(x86_64):
npm install && npm run build
mkdir -p docker && printf 'CLOUDBRIDGE_SESSION_KEY=%s\n' "$(openssl rand -hex 32)" > docker/.env
docker compose -f docker/docker-compose.yml up -d --build
# 浏览器打开 http://<服务器IP>:8080密钥要留着,换掉的话已经保存的登录会话就解不开了。
技术栈是 Electron 36、React 18、TypeScript 5、Vite 6、Fastify 5,配 WebSocket 和 playwright-core。
部署步骤、功能清单和架构说明都在仓库的 docs/ 目录里。用的时候遇到问题,或者哪家网盘的接口又变了,来提 issue。
0 RESPONSES
Reader responses
Leave a little of the warmth from this story below.