基于 BaiduPCS-Go SDK 的 Web 界面,把百度网盘 CLI 变成远端下载器 + 文件管理器。
- 依赖上游 SDK,不改上游一行代码 — 跟随更新只需
go get -u - Authelia Header 认证 — 多用户隔离,无需自建用户系统
- 账号共享 — 一个百度账号可共享给多个用户,凭证只存一份,不暴露 BDUSS
- 下载到服务器 — 远端下载器模式,多线程 + 断点续传(阶段2)
- 单二进制部署 — React 前端
go:embed嵌入
Authelia (反代认证) ──► baidupcs-web (单二进制)
│ 读 Remote-User header 识别用户
│ 按 user 隔离百度账号(BDUSS)
▼
baidupcs SDK (NewPCS)
▼
百度网盘 API
复用边界(来自上游,均非 internal,可外部 import):
baidupcs/— 纯 SDK,NewPCS(appID, bduss)无全局状态pcsutil/taskframework/— 任务调度引擎pcsutil/checksumconverter— 工具库
上游 internal/pcscommand 等无法 import(含 fmt.Println 输出 + 全局 config 耦合),故在本项目 internal/service 重写薄壳,返回 JSON。
- Go ≥ 1.23
- Node.js(构建前端)
- 部署在 Authelia 反代之后(生产)
# 1. 安装依赖
go mod tidy
# 2. 开发模式运行(config.yaml 设 auth.dev_allow_all: true,跳过 Authelia)
go run main.go
# 3. 构建前端
cd web && npm install && npm run build && cd ..
# 4. 构建单二进制
go build -o baidupcs-web .
./baidupcs-web所有 /api/* 需经过 Authelia 认证(开发模式除外)。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/accounts |
列出当前用户可见的百度账号(含他人共享的,shared: true) |
| POST | /api/accounts |
绑定账号 {bduss, stoken?, uid, name, workdir?} |
| DELETE | /api/accounts/:uid |
解绑(仅账号所有者) |
| POST | /api/accounts/:uid/activate |
切换当前账号 |
| GET | /api/accounts/:uid/shares |
列出该账号已共享给哪些用户(仅所有者) |
| POST | /api/accounts/:uid/shares |
共享给某用户 {user_key: "bob"}(仅所有者) |
| DELETE | /api/accounts/:uid/shares/:userKey |
撤销对某用户的共享(仅所有者) |
| GET | /api/files/list?path=/&order_by=name&order=asc |
列目录 |
| GET | /api/files/meta?path= |
文件元信息 |
| GET | /api/files/search?path=/&keyword=&recurse= |
搜索 |
| POST | /api/files/mkdir |
{path} |
| POST | /api/files/remove |
{paths:[]} |
| POST | /api/files/move |
{from, to} |
| POST | /api/files/copy |
{from, to} |
| POST | /api/files/rename |
{from, to} |
| GET | /api/quota |
空间配额 |
每个账号绑定一个用户,但绑定者可把账号共享给其他用户(如 A 共享给 B、C):
- 仅所有者可管理共享 — 在账号切换菜单的「🔑 共享当前账号」中填写对方 Authelia 用户名即可
- 凭证只存一份 — BDUSS/STOKEN 不复制、不暴露给被共享者;被共享用户看到的是同一份凭证,名称/工作目录以所有者的设置为准
- 被共享用户登录后即可在账号菜单中看到并切换使用该账号(带「共享」标记),可用于文件浏览、下载、上传、分享、转存、回收站
- 解绑/共享配置仅限所有者,被共享用户无法解绑或修改
- 撤销共享后,对方立即不可见
go get -u github.com/qjfoidnh/BaiduPCS-Go && go mod tidy && go test ./...零 patch 冲突。go.mod 锁定已验证版本,定期主动升级。