百度网盘分享链接自动化同步:最终跑通的技术方案
背景
量化项目(zdq)的 A 股分钟线数据来自一个百度网盘分享链接,需要把"沪深/指数 × 1/5/15/30/60 分钟 × 按月归档"的增量数据自动同步到本地。对话中反复试错后,2026-04 时点实测跑通了一条完整链路,以下结论均来自实测。
核心内容
一、跑通的最终链路
requests 直接调百度网页 API(带 BDUSS/STOKEN/BDCLND Cookie)
→ 验证提取码 → 获取分享文件列表
→ 按子文件夹逐个调用转存 API(转存到自己网盘临时目录)
→ BaiduPCS-Go 从自己网盘整目录下载(走 SVIP 速度)
→ 清理网盘临时目录
关键点:不用 Playwright 等浏览器自动化,纯 requests.Session 维护 Cookie 即可。浏览器只在最初获取 Cookie 时人工参与。
二、各方案实测结论(2026-04)
| 方案 | 结论 |
|---|---|
| 原版 BaiduPCS-Go(iikira) | transfer 失效,报"获取分享项元数据错误" |
| 社区修复版 BaiduPCS-Go ≥ v3.9.6 | 能用,但 transfer 必须同时配 BDUSS + STOKEN,只配 BDUSS 会失败 |
| 整链接转存 | 不可行:分享链接 12 万文件,超过单次转存上限 8 万,且无参数指定子目录(#list/path= 只是网页 hash) |
| rclone | 不支持百度网盘后端 |
| bypy | 只支持个人网盘,不支持分享链接 |
| 网页 API 复刻(share/verify + share/list) | 可行,是最终方案的列表获取手段 |
| Playwright 浏览器自动化 | 可行但没必要,且会另开浏览器实例与用户已登录的浏览器脱节 |
三、转存 API 的真实行为(踩过的坑)
- 转存文件夹
2026-04到目标路径/apps/sync_temp_zdq/xxx后,网盘实际创建的是/apps/sync_temp_zdq/xxx/2026-04/(保留原文件夹名),不是平铺。下载路径必须按这个真实结构拼。 - 转存目标目录必须已存在(可用 BaiduPCS-Go
mkdir先建),否则返回 errno=2。 - 常见错误码:errno=-6 登录态无效(BDUSS 过期);errno=-12 提取码验证被风控;errno=113 分享链接直链下载被拒;errno=105/-9 缺 share_key 或签名。
四、凭证要点
- BDUSS + STOKEN 缺一不可,均从浏览器 F12 → Application → Cookies(pan.baidu.com)复制;有效期约 1 个月。
- 访问分享链接需带
BDCLND(sekey,验证提取码后下发的临时 Cookie)。 - Cookie 域名:BDUSS 设在
.baidu.com。
五、BaiduPCS-Go 下载提速
瓶颈与修复(实测 17 个文件从 ~68s 降到 ~7-13s):
max_parallel=1 → 20(单文件连接数)max_download_load=1 → 5(并行文件数)cache_size=64KB → 1MB- 整目录下载代替逐文件下载,避免每个文件启动一次进程的开销
ls输出解析:数据行格式为序号 大小 日期 时间 文件名,文件名取parts[4:]拼接(兼容含空格文件名)
六、目录结构注意
分享链接内还有一层总目录:A股_分钟数据/A股_分时数据_沪深、A股_分钟数据/A股_分时数据_指数。每个数据文件夹下按 1/5/15/30/60 分钟分 5 个子目录,各子目录内按月归档(如 2026-04)。增量策略:按月归档只同步最近 N 个月(默认 3),历史数据首同步后跳过。
行动项
- BDUSS/STOKEN 约每月过期,同步报错 errno=-6 时优先重新获取这两个 Cookie 更新配置。
- 最终交付物仅 3 个文件:
baidu_pan_sync.py、baidu_pan_sync_config.json、.baidu_pan_sync_state.json(运行时自动生成)。
原文链接
提炼自 inbox/trae/20260430_同步百度网盘数据到本地文件夹.md
