Instagram 的 yt-dlp 命令生成器
为 Instagram 的帖子和 reels 生成 yt-dlp 命令。cookies 默认开启,因为没有它几乎什么都做不了。
Instagram 需要登录会话
Instagram 对未登录的请求几乎什么都不给,所以 --cookies-from-browser 实际上是必须的,而不是可选项。运行命令前请关掉浏览器:Chrome 和 Edge 在运行时会锁住自己的 cookies 数据库。
轮播帖子会被当作播放列表,所以把播放列表处理设为整个播放列表才能取到全部内容。Stories 需要一个已关注该账号的会话,并且 24 小时后就消失。
Instagram 对自动化访问越来越不信任,一次下载太多太快的会话会被要求重新登录——征兆就是昨天还能用的命令今天返回登录页面。用专门的小号而不是主号,隔三差五正常登录保持 cookies 新鲜,并且接受这样使用的账号偶尔会被打上标记,无论命令写得多小心。这是平台的代价,不是 yt-dlp 的 bug。
帖子、reels 和精选集走同一个 extractor,但不同会话看到的东西不一样。你关注的账号的 reels 能正常下载;探索页的 reels 对从未接触过这类内容的会话常常拒发。精选集——钉在主页上的那些故事圈——每一个都作为自己故事的播放列表下来。IGTV 已退役:旧链接有时还能解析,但没有任何新东西在用它。
Instagram 的限速比 yt-dlp 日常面对的任何平台都狠。并发 fragment 只会让事情更糟而不是更好;一次取一条、每次运行之间留出停顿,才是活得下去的模式。多条目的运行在中途失败是常态——记录文件加上出错继续,会让重试变成续传而不是从头再来,这很重要:等运行跑完,最早那些条目的 CDN 链接通常已过期,全量重跑只会重新抓页面而不是媒体。
无法挽回的东西:你不关注的私密账号的帖子、过了 24 小时的 Stories、以及在你运行命令之前就被删掉的一切。抓回来的页面里的 CDN 链接很快过期,一小时前还能用的媒体网址现在可能拒绝——别重试旧链接,重新抓帖子页面。这种过期也是"尽早下载而不是以后再说"的理由:Instagram 从不承诺让媒体一直可达,而它确实说到做到。