
问题现象
podsync 日志中频繁出现两类错误:
Bot 验证错误:
ERROR: Sign in to confirm you're not a bot. Use --cookies-from-browser or --cookies限流错误:
WARN: server responded with a 'Too Many Requests' error原因分析
| 错误类型 | 原因 |
|---|---|
| Bot 验证 | yt-dlp 没有携带登录凭证,YouTube 识别为爬虫 |
| Too Many Requests | NAS 出口 IP 请求频率过高被限流,多个容器同时下载加剧了问题 |
解决方案:配置 cookies
第一步:导出 cookies
- Chrome 安装插件 "Get cookies.txt LOCALLY"
- 打开
youtube.com并确认已登录 - 点击插件图标立即导出
cookies.txt - 导出后不要再访问 YouTube,避免 cookies 被轮换失效
第二步:上传 cookies 到 NAS
cookies 必须放在容器挂载的数据目录内,否则容器无法访问。
先确认容器挂载路径:
docker inspect <容器ID> | grep -A 10 "Mounts"上传到正确位置(对应容器内 /app/data/):
scp ~/Downloads/cookies.txt root@192.168.5.154:/volume1/docker/podsync/data/cookies.txt第三步:修改配置文件
在每个 feed 下或 [downloader] 全局段加上:
[downloader]
self_update = true
youtube_dl_args = ["--cookies", "/app/data/cookies.txt"]注意路径使用容器内路径 /app/data/,不是宿主机路径。
第四步:重启容器
docker restart <容器ID>注意事项
cookies 会过期,YouTube 会在浏览器使用过程中自动轮换 cookies。症状是原本正常后又出现 bot 错误,日志中会有:
The provided YouTube account cookies are no longer valid. They have likely been rotated出现此提示需要重新导出并上传 cookies。
Too Many Requests 是 IP 限流,即使配置了 cookies 也可能偶发。缓解方法:
- 增大各 feed 的
update_period,减少请求频率 - 避免多个容器在同一时间集中请求
多容器部署时每个容器的配置文件都需要单独配置,可以用批量替换命令:
for f in config-a.toml config-b.toml config-c.toml; do
sed -i 's|原内容|新内容|g' "/volume1/docker/podsync/$f"
done