BaiduPCS-Go CLI 使用教训
平台约定:本机主力环境是 Linux(Arch)——命令以 bash 为先、可直接执行;Windows 专属步骤一律收进「Windows(PowerShell)」小节,不在 Linux 段落里混用。
百度网盘命令行客户端(qjfoidnh fork,Windows 侧 scoop 装的是 v4.0.1)。以下教训区分「实测确认」与「[INFERENCE] 社区经验」;命令速查与下载/限速结论两平台通用,安装、登录态位置与扫码出图分平台。
安装(实测)
Linux(bash)
Arch 官方仓库自带该包,不需要 scoop(本机无 scoop):
sudo pacman -S baidupcs-go # extra/baidupcs-go 4.0.2-1(qjfoidnh fork,本机实测在库)
pacman -Ql baidupcs-go | grep bin/ # 装完核对二进制名
二进制名待验证:上游 Go 项目产物叫 BaiduPCS-Go(连字符),Arch 包名是 baidupcs-go,装完用上面那条 pacman -Ql 看实际落地的可执行文件名再敲命令。
备选:go install github.com/qjfoidnh/BaiduPCS-Go@latest(本机未装 go),或从 release 下 BaiduPCS-Go-v4.0.1-linux-amd64.zip 解压。
Windows(PowerShell)
- CLI:
scoop install lemon/baidupcs-go(dorado 无此包;lemon、scoopet 均有 4.0.1) - GUI 客户端:
scoop install scoopet/baidunetdisk(8.6.8.102;post_install 报$TEMP删不掉是已知无害噪音) - shim 名是
BaiduPCS-Go(连字符;不是baidupcs) - scoop persist 持久化了
config(登录态/配置)和Downloads(默认下载目录 savedir),重装不丢登录 - Linux 侧没有 scoop、没有 shim 层,也没有
scoopet/baidunetdisk那种 GUI 包(Linux 版百度网盘 GUI 待验证;CLI 侧不受影响)
命令速查(实测)
两平台二进制同名,下列命令 Linux/Windows 通敲:
BaiduPCS-Go -v # 查版本。version 子命令不存在,报“未找到命令”
BaiduPCS-Go login # 交互式登录
BaiduPCS-Go login -bduss=xx -stoken=yy # BDUSS+STOKEN 登录
BaiduPCS-Go login -cookies="BDUSS=..; BAIDUID=..; STOKEN=.." # 整串 Cookie
BaiduPCS-Go who / loglist / su # 当前账号 / 账号列表 / 切换账号
BaiduPCS-Go ls / cd / pwd / tree
BaiduPCS-Go download, d [--test 测试不落盘] [--ow 覆盖]
BaiduPCS-Go upload, u <本地> <网盘目录>
BaiduPCS-Go locate, lt # 下载直链
BaiduPCS-Go share / transfer # 分享 / 转存
BaiduPCS-Go offlinedl, od # 离线下载
BaiduPCS-Go quota / search / rm / mv / cp / mkdir / meta / recycle
BaiduPCS-Go config / config set -名=值
登录(实测)
- 三种方式:交互式(按提示)、
-bduss+-stoken、-cookies整串 - BDUSS 获取:Chrome 登录 pan.baidu.com → F12 → Network → 刷新 → 复制 Cookie 里的 BDUSS/STOKEN;或直接 Application → Cookies
- 登录态存配置目录:Windows 在 scoop persist 的
config;Linux 跟 XDG 走(待验证具体路径,先跑BaiduPCS-Go config看它打印的"配置保存目录") - 多账号用
loglist/su管理 - 登录态会过期:报
代码: 31045 user not exists/loglist为空就是要重登,走下方扫码流程
自动化扫码登录(实测成功路径)
OMP browser 工具是 headless 隐藏浏览器,用户看不到窗口无法直接扫码。可用流程:
-
browser open https://pan.baidu.com,点「去登录」出扫码弹窗(aria 快照里 button "去登录") -
二维码元素是
img.tang-pass-qrcode-img(285×285),src 是passport.baidu.com/v2/api/qrcode?sign=...;刚点开时 src 是 loading.gif,要page.waitForFunction等 src 含qrcode?sign= -
全页截图发给用户会糊、扫不出——必须局部截二维码元素或抓原图,再放大 3~4 倍(NearestNeighbor,别用平滑插值)给用户扫:
- 抓图用 run 作用域的 Node
fetch(src)写盘;不要page.goto(二维码src)——会摧毁登录弹窗状态(导航回去后 QR img 元素没了,得重新点登录)
Linux(bash)
magick qr.png -filter point -resize 400% qr_big.png # 本机 imagemagick 7.1,-filter point = 最近邻 xdg-open qr_big.png # 交给默认图片查看器,用户扫码Windows(PowerShell)
# 原实现:PowerShell System.Drawing,以 NearestNeighbor 插值放大 3~4 倍(脚本未存留,按此要点写即可) # 打开图片给用户:Start-Process 走默认图片关联可能无弹窗(Win11 照片应用关联异常,实测踩过)。稳妥用法: Start-Process rundll32 -ArgumentList '"C:\Program Files\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen <图路径>' -PassThru # 1.5s 后查 HasExited,已退出再回落 msedge.exe <图路径> - 抓图用 run 作用域的 Node
-
run 里循环
page.cookies()轮询BDUSS出现(2s/次,超时 170s),扫码确认后拿到 BDUSS+STOKEN -
BaiduPCS-Go login -bduss=.. -stoken=..→who验证。BDUSS 含$字符,bash 里必须单引号包裹(两平台同样:单引号/字面量传入,别让 shell 展开) -
收尾:
browser close、删临时二维码图(Linuxrm qr.png qr_big.png)
注意:STOKEN 在 pan.baidu.com 域的 cookie 里也能拿到;二维码有效期几分钟。
下载/搜索行为(实测)
- 落盘目录是
savedir\<uid>_<用户名>\,不是 savedir 根。例:Windows savedir 设D:\Downloads,实际落在D:\Downloads\1712471085_xxx\;Linux 同理,savedir 设~/Downloads则落在~/Downloads/1712471085_xxx/ search只匹配文件名(不搜目录名、不搜内容),-r递归,--path=/全盘;-l详细模式列为:序号/FS ID/APP ID/大小/创建时间/修改时间/MD5/路径- 下载日志里
Unsolicited response received on idle HTTP channel是无害噪音,不影响结果 - SVIP 账号实测单文件 ~13MB/s(max_parallel=1 默认值下)
- SVIP 双文件并发实测(2026-08-03):
max_parallel=8+max_download_load=2,两分卷并行合计 ~40MB/s(单流 27+13),117.6GB 约 50 分钟 - 长时间下载用
hub start挂后台 +ready.log匹配「下载」确认启动,比 bash 前台等稳 - 下载的文本文件可能是 GBK 编码,
cat报 “stream did not contain valid UTF-8”,用iconv -f GBK -t UTF-8读(bash 直接可用) - 大文件下载 SB 线程后速度会从 ~13MB/s 降到 ~3MB/s(百度限速),重启下载可临时恢复
- 抗限速实测(SVIP,117.6GB/10 分卷):
max_parallel=8+max_download_load=2双车道,每连接传 ~2GB 后被限到 1-2MB/s;杀掉进程重启即可恢复 20-30MB/s,断点续传零损失(部分分卷从 .BaiduPCS-Go-downloading 续传)。全程重启 1 次,46 分钟下完,平均 ~45MB/s
搜索/发现浏览器/用户数据(实测)
search 对找浏览器密码数据不高效——Login Data、Cookies 等关键词不匹配文件名。有效方法:
ls /根目录找可疑备份目录(/Backup、/Data、/Sync、/wechat等)- 下最小 Part(如 Part1.tar.zst,1.5GB),用
tar -tf窥内容探头 - 看顶层目录:
.ssh/、.bash_history、AppData/、.config/是 Linux 用户目录;Windows/、用户/是 Windows 备份 - Chrome Login Data 存于
AppData/Local/Google/Chrome/User Data/Default/Login Data(SQLite),但 Linux Chrome 密码用 GNOME Keyring/kwallet 加密,无原机密钥不可解 - 确认有用再下全部(如 /Backup 10 parts 共 26.9GB)
限速与并发(实测 config 建议值)
max_parallel默认 1,官方帮助原话“非svip不可>1”——非 SVIP 账号调高并发无效/被限;SVIP 账号(quota >2TB 可判)可config set -max_parallel=8+-max_download_load=2- 下载慢先调
cache_size(默认 64KB,可 1KB~256KB) pan_ua默认伪装安卓官方客户端 11.12.3,勿乱改,改了可能被风控upload_policy默认skip(重名跳过),要覆盖用overwrite,同步语义用rsync
已失效/坑(实测)
- 秒传已失效:
sumfile帮助明写“目前秒传功能已失效”,不要依赖秒传脚本 - 原版 iikira/BaiduPCS-Go 已停更,4.x 是 qjfoidnh fork 延续,issue 提到 fork 仓库
[INFERENCE] 社区经验(未实测,使用时留意)
- 第三方 PCS 接口有账号限速/封禁风险,重要数据操作建议用小号
- 高频/大批量操作易触发风控,必要时
config set -proxy=或降速 locate直链有时效,需配合 pan_ua 一致才能 200
新教训追加
遇到新坑直接更新本文件对应章节;实测过的放「实测」区,道听途说标 [INFERENCE]。
微信扫一扫