跳转至

推特图片下载

gallery-dl 无法抓取 Twitter 内容,因为现在 Twitter(X)已经强制需要登录才能访问推文和媒体

也就是说,从 2023 年开始,Twitter 不再允许“游客”(未登录用户)查看内容,而 gallery-dl 默认是匿名访问,因此会报这个错:

[twitter][error] AuthorizationError: Login required

你只需复制你浏览器中 Twitter 登录状态下的 Cookie,然后配置到 gallery-dl,就能绕过这个限制。


① 登录你的 Twitter 账户(任意浏览器)

② 打开开发者工具(快捷键 F12 或右键 → 检查)

  • 找到「应用(Application)或存储(Storage)」标签页
  • 选择左侧的「Cookies」→ 选择 https://twitter.com
  • 找到以下两个关键字段的值:
auth_token
ct0

这两个是关键的身份识别 cookie。


路径是:

~/.config/gallery-dl/config.json

添加或修改如下结构:

{
  "extractor": {
    "twitter": {
      "cookies": {
        "auth_token": "你的 auth_token 值",
        "ct0": "你的 ct0 值"
      },
      "retweets": false,
      "videos": false,
      "filter": "not tweet.retweet and all(image.url for image in tweet.images)"
    }
  },
  "output": {
    "base-directory": "~/Pictures/bbmasa6",
    "filename": "%(date)s - %(tweet_id)s - %(num)s.%(extension)s"
  }
}

你只需要将 "auth_token""ct0" 的值替换成你自己的即可(建议不要公开这些值,因为是登录凭证)。


🔁 然后重新运行命令

gallery-dl "https://twitter.com/bbmasa6"

此时你就以登录用户身份访问 Twitter,不再报错,可以顺利下载所有原创图片推文了。


✅ 小贴士(安全建议)

  • 你不必使用主账户,建议新建一个 Twitter 小号登录,提取 Cookie 使用。
  • auth_token 有效期较长,但 Twitter 可能会不定期失效(比如更换设备或登出后),届时只需重新复制一遍 Cookie 即可。

gallery-dl 默认是串行下载,也就是一张图片一张图片地下载,当媒体数量多时确实会变得很慢。

不过虽然 gallery-dl 本身不直接支持多线程并发下载,但你可以通过以下几种方式实现近似的并行效果,大幅提升下载速度。


将任务拆分成多个 URL 或 Tweet ID 段,然后用多个终端或后台同时执行,达到并发效果。

示例

gallery-dl "https://twitter.com/bbmasa6" &
gallery-dl "https://twitter.com/bbmasa6" &
gallery-dl "https://twitter.com/bbmasa6" &

这在 gallery-dl 已启用断点续传(默认开启)的前提下效果不错,它会自动跳过已下载的内容。


✅ 方法二:使用 xargs 并发执行 Tweet 下载(更可控)

你可以先用 snscrape 获取带图 tweet 的链接列表,然后用 xargs 并发执行:

① 获取媒体推文列表

snscrape --format "{url}" "from:bbmasa6 filter:images" > bbmasa6-urls.txt

② 使用 xargs 并发执行(每次并发 4 个任务)

cat bbmasa6-urls.txt | xargs -P 4 -n 1 gallery-dl
  • -P 4 表示同时运行 4 个下载任务

  • -n 1 表示每个 gallery-dl 实例接收 1 行(1 个 tweet 链接)

这种方式更灵活高效,适合你要批量下载几百甚至上千张图的情况。


✅ 方法三:自己写简单的 Python 并发脚本

如果你想自动化整个过程,也可以用 Python 的 concurrent.futures.ThreadPoolExecutor 来调度并发 gallery-dl 调用,我可以帮你写一个示例脚本。


❗官方情况说明

gallery-dl 本身设计理念是稳定、可恢复、不重复,而非高速多线程。作者明确表示:

“Download concurrency is not planned within gallery-dl itself to maintain consistency, handle rate-limiting and avoid potential data race conditions.”

但通过并行运行多个进程,你依然能绕过限制,在合理范围内大幅加速。


✅ 总结

方案 并发能力 易用性 推荐度
多开 gallery-dl ✅(中) ⭐⭐⭐⭐ ✅ 推荐
xargs -P ✅(强) ⭐⭐⭐⭐ ✅ 最推荐
Python 多线程脚本 ✅(高) ⭐⭐ 高级用法
gallery-dl 原生 ⭐⭐⭐⭐⭐ 稳定但慢

gellery-dl 支持断点下载即不会重复下载