惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
AI
AI
博客园 - 三生石上(FineUI控件)
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网
NISL@THU
NISL@THU
S
Schneier on Security
T
Threatpost
T
Tenable Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
C
Cybersecurity and Infrastructure Security Agency CISA
P
Privacy & Cybersecurity Law Blog
I
Intezer
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
T
Threat Research - Cisco Blogs
SecWiki News
SecWiki News
AWS News Blog
AWS News Blog
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
V
V2EX
Recorded Future
Recorded Future
Microsoft Security Blog
Microsoft Security Blog
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
Project Zero
Project Zero
PCI Perspectives
PCI Perspectives
G
GRAHAM CLULEY
Help Net Security
Help Net Security
Cloudbric
Cloudbric
Recent Announcements
Recent Announcements
V
Visual Studio Blog
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
C
CERT Recently Published Vulnerability Notes
The Cloudflare Blog
Forbes - Security
Forbes - Security
C
Cisco Blogs
O
OpenAI News
www.infosecurity-magazine.com
www.infosecurity-magazine.com

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 greetd和regreet使用教程 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
如何使用gallery-dl批量下载图像
2025-12-31 · via mephisto.cc

假设你是个追星粉、或者单纯迷恋特特上的某个女菩萨、或者是个无限循环播放乔丹视频的球迷、或者单纯为了学习知识,丰富课外业余生活。那么你一定会有批量下载图片(包含视频)的需求,别告诉我你是挨个点的。

以前我这种需求不是很强烈,直到有一天我发现某个喜欢的人退网了,可能是被封杀,也有可能是号卖了,或者单纯不玩了。

这个时候,总是让人后悔没事前多下载点东西保存。

gallery-dl 就是个不错的图片下载工具。

且看下面的实践教程:

1. 安装

我用的 Arch linux,直接 paru 安装。

非常简单直接,别的发行版,或者操作系统,请看官方仓库 https://github.com/mikf/gallery-dl 说明。

2. 配置示例

以推特为例

 1➜  ~ cat .config/gallery-dl/config.json
 2{
 3  "extractor": {
 4    "base-directory": "~/Pictures/",
 5    "twitter": {
 6      "videos": true,
 7      "retries": 5,
 8      "sleep": "2.0-3.5",
 9      "sleep-429": 2,
10      "image-filter": "user is author",
11      "filename": "{author[name]}-{tweet_id}-{date:%Y%m%d_%H%M%S}-img{num}.{extension}"
12    }
13  }
14}
  • base-directory 下载后存放的目录
  • videos 下载示例,只下载图片就改为 false
  • retries 重试次数 5
  • sleep 下载间隔 2.0s 至 3.5s,太快了小心被封 ip,老实点为好
  • sleep-429 遇到 429 错误等待 2s
  • image-filter 是 gallery-dl 的图片属性过滤规则,通过 Python 表达式筛选需要下载的图片,可以写得很复杂。user is author 仅下载目标用户原创图片,未测试求证。
  • filename 文件名格式化成什么样子,谁也不想下载的图片命名乱七八糟的吧!

以上这些就包含核心配置,反正我就是这么写的。

至于其它平台,比如 instagram 是什么样的写法,需要看看官方的配置文档。平台反爬策略千千万,配置不一样完全能理解。

3. 下载测试

示例命令:gallery-dl -vv --cookies-from-browser firefox "https://x.com/zoe2496/media

其实上面的配置里面少了 cookies 部分,核心作用就是给 gallery-dl 提供有效的 X 账号登录凭证,让 gallery-dl 能“伪装”成你已登录的浏览器,下载需要授权的图片视频等内容。

--cookies-from-browser firefox 参数的含义,gallery-dl 自动从你的 Firefox 浏览器中提取已保存的 X 账号登录 cookies,无需你手动导出 Cookies 文件再配置。

比如你是 Linux,它就会从 /home/mephisto/.mozilla/firefox/5esrorfn.default-release/cookies.sqlite 这样类似的路径筛选出属于 x.com 域名的 Cookies,只要浏览器之前已登录 X 账号,Cookies 处于有效期(通常几天到几周),这样还是很贴心的。

我一般 Firefox 找到要下载的账号,然后后运行下面的命令下载:

 1➜  twitter gallery-dl -vv --cookies-from-browser firefox  "https://x.com/zoe2496/media"
 2[gallery-dl][debug] Version 1.31.1
 3[gallery-dl][debug] Python 3.13.11 - Linux-6.18.2-arch2-1-x86_64-with-glibc2.42
 4[gallery-dl][debug] requests 2.32.5 - urllib3 2.6.2
 5[gallery-dl][debug] Configuration Files ['${HOME}/.config/gallery-dl/config.json']
 6[gallery-dl][debug] Starting DownloadJob for 'https://x.com/zoe2496/media'
 7[twitter][debug] Using TwitterMediaExtractor for 'https://x.com/zoe2496/media'
 8[cookies][debug] Extracting cookies from /home/mephisto/.mozilla/firefox/5esrorfn.default-release/cookies.sqlite
 9[cookies][debug] Only loading cookies not belonging to any container
10[cookies][info] Extracted 1793 cookies from Firefox
11[urllib3.connectionpool][debug] Starting new HTTPS connection (1): x.com:443
12......此处省略......
13[twitter][debug] Sleeping 3.39 seconds (download)
14b[urllib3.connectionpool][debug] Starting new HTTPS connection (1): pbs.twimg.com:443
15[urllib3.connectionpool][debug] https://pbs.twimg.com:443 "GET /media/G9cQxetaYAIlyhR?format=jpg&name=orig HTTP/1.1" 200 921878
16/home/mephisto/Pictures/twitter/zoe2496/zoe2496-2006090615453544936-20251230_195048-img1.jpg
17[twitter][debug] Sleeping 3.26 seconds (download)
18[urllib3.connectionpool][debug] Starting new HTTPS connection (1): video.twimg.com:443
19[urllib3.connectionpool][debug] https://video.twimg.com:443 "GET /amplify_video/2006085163848269824/vid/avc1/1280x720/m-ShyiwCyNr8TJGh.mp4?tag=21 HTTP/1.1" 200 1299406
20/home/mephisto/Pictures/twitter/zoe2496/zoe2496-2006085231040946664-20251230_192924-img1.mp4
21[twitter][debug] Sleeping 2.32 seconds (download)
22[urllib3.connectionpool][debug] https://pbs.twimg.com:443 "GET /media/G9cJXkHawAASbGl?format=jpg&name=orig HTTP/1.1" 200 176456
23/home/mephisto/Pictures/twitter/zoe2496/zoe2496-2006082468605247944-20251230_191826-img1.jpg

看上面的输出,图片随机间隔 2.0-3.5 秒,都下载下来了,文件名也很规范,心里乐开花啊😄。

4. 其它

上面的会全部下载用户 media 的图片,你也可以自己写过滤器:

  • "image-filter": ["user is author", "width >= 1200", "height >= 800"] // 组合使用:原创 + 高清

我比较懒,精力有限,外网菩萨高手漫天飞,看看就好,我选择全部下载。

有志青年,要多花时间搞钱学真本领。友情提示,本文纯属技术分享,网络不是法外之地,低调行事,且行且珍惜。