cr4sync login
把 Cloudreve / 第三方网盘的凭证落盘到 ./credential/ 目录。
五种模式
cr4sync login [--mail <EMAIL>] [--passwd <PWD>] # ① 账密 + 2FA
cr4sync login --qr [--device-name <NAME>] # ② 扫码 (需服务端装 qr-login-relay 插件)
cr4sync login --baidu # ③ 百度网盘 OAuth
cr4sync login --aliyun # ④ 阿里云盘中转模式
cr4sync login --pikpak # ⑤ PikPak 账密 / refresh 登录
cr4sync login --cloudreve # ⑥ 源端 cloudreve 账密登录 (迁移源)
五个分支互斥(clap conflicts_with)。
参数
| 参数 | 类型 | 适用模式 | 说明 |
|---|---|---|---|
--mail <EMAIL> | string | ① | 账号。可省,缺省回退 [credential].mail。 |
--passwd <PWD> | string | ① | 密码。可省,缺省回退 [credential].passwd。 |
--qr | flag | ② | 扫码模式开关。 |
--device-name <NAME> | string | ② | 手机端“授权登录“页显示的设备名。缺省 cr4sync-<hostname>。 |
--baidu | flag | ③ | 百度 OAuth 模式。 |
--aliyun | flag | ④ | 阿里云盘中转模式。 |
--pikpak | flag | ⑤ | PikPak 登录。 |
--cloudreve | flag | ⑥ | 源端 cloudreve 登录 (迁移源)。探测验证码, 开启则报错“cli/serve 不支持, 用 webdav 模式“。2FA 支持。token 存 credential/sources/cloudreve.json。 |
① 账密 + 2FA
cr4sync login --mail you@example.com --passwd 'YourPwd'
如果账号开了 2FA,cr4sync 会在终端提示输入 6 位验证码。
落盘 → ./credential/token.json(含 access_token + refresh_token)。
② 扫码登录
cr4sync login --qr
cr4sync login --qr --device-name "我的 NAS"
需要 Cloudreve 服务端安装 qr-login-relay 插件。渲染二维码前会先 GET /qr-login-relay/api/health 健康检查,未部署时拒绝并提示。
流程:
- 生成 X25519 keypair
POST /qr-login-relay/api/session/create拿qr_payload- 终端用 Unicode 半块字符渲染二维码
- 1500ms 轮询
/status,authorized后拿/result - X25519 共享密钥(直接当 AES-256 key,无 HKDF) + AES-256-GCM 解密
- 校验
payload.cloudreve与本机[serve.cr4].server_url同站 - 写
credential/token.json
二维码默认有效期 120 秒,超时需重新运行。Ctrl-C 随时中止。
③ 百度 OAuth
cr4sync login --baidu
流程(oob 授权码方式):
- 终端打印 oob 授权 URL(
redirect_uri=oob) - 用户在浏览器打开授权 → 授权页回显授权码
code - 粘贴
code回终端 - cr4sync 直连百度
oauth/2.0/token?grant_type=authorization_code兑换access_token+ refresh_token - 写
credential/sources/baidu.json
若在
[sources.baidu].refresh_token配置了从别处导入的 refresh_token,--baidu会跳过浏览器授权,直接用它兑换(grant_type=refresh_token)。
可选:在 [sources.baidu] 段覆盖 client_id / client_secret / redirect_uri 用独享配额应用(redirect_uri 仅影响非 oob 场景,oob 流固定 redirect_uri=oob)。
④ 阿里云盘 (中转模式)
cr4sync login --aliyun
流程(中转模式,免注册):
- 终端提示访问
https://alistgo.com/zh/tool/aliyundrive/request.html扫码获取 refresh_token - 用户粘贴 refresh_token
- cr4sync 走 alist 中转端点兑换 access_token
- 写
credential/sources/aliyun.json
若在
[sources.aliyun].refresh_token配置了 refresh_token,--aliyun会跳过交互直接用它兑换。
⑤ PikPak (账密 / refresh 双模式)
cr4sync login --pikpak
优先级 1 — refresh_token + captcha_token (成对, 优先级最高):
- 配置
[sources.pikpak]填了refresh_token+captcha_token - cr4sync 用 refresh_token 兑换 access_token
- 写
credential/sources/pikpak.json
优先级 2 — email + password 账密登录:
- 配置
[sources.pikpak]填了email+password - cr4sync 调 PikPak login API 账密登录
- 写
credential/sources/pikpak.json
风控处理:
- 账密登录失败 (被风控) 时, cr4sync 提示用户:
- 浏览器登录 PikPak (
user.mypikpak.net) - F12 -> Application -> Local Storage 找
captcha_token+refresh_token - 填入
[sources.pikpak]的refresh_token+captcha_token - 重新执行
cr4sync login --pikpak(走优先级 1)
- 浏览器登录 PikPak (
refresh_token+captcha_token永远成对出现, 优先级高于email+passworddevice_id缺省MD5(email+password), 可在[sources.pikpak].device_id覆盖- 代理:
[sources.pikpak].is_proxy+proxy(跟 migrate 一致)
凭证刷新
- Cloudreve
access_token接近过期时,sync / up / dl / mgr 自动用 refresh_token 续期,无感。 - 百度
access_token距过期 < 5 天时,mgr 启动自动直连百度刷新。refresh_token 也过期时报CliError::Auth,需重cr4sync login --baidu。
错误退出
| 现象 | 原因 | 处理 |
|---|---|---|
扫码服务不可用 | qr-login-relay 插件未部署 | 安装插件或改用账密 |
授权结果解密失败 | X25519/AES-GCM 解密失败,通常是 relay 错版 | 升级插件 |
站点不匹配 | 二维码来自其他 Cloudreve 实例 | 确认 [serve.cr4].server_url |
auth: invalid_grant | 百度 refresh_token 过期 | 重 --baidu |