Podsync 下载问题解决日记

技术专业 · 今天

问题现象

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 RequestsNAS 出口 IP 请求频率过高被限流,多个容器同时下载加剧了问题

解决方案:配置 cookies

第一步:导出 cookies

  1. Chrome 安装插件 "Get cookies.txt LOCALLY"
  2. 打开 youtube.com 并确认已登录
  3. 点击插件图标立即导出 cookies.txt
  4. 导出后不要再访问 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
Theme Jasmine by Kent Liao