豆包图片下载器:一键保存豆包对话里的图片
東风 技术 2026.07.20 4 分钟 1.3k 字 —
为什么做这个
豆包生成的图片质量不错,但是保存的时候有个蛋疼的水印。写这个小工具就是为了解决这个问题的。粘贴一个豆包分享链接,点提取,所有图片就出来了(包括去水印的图片),一键全部下载。
技术方案
豆包的分享链接格式是 https://www.doubao.com/thread/{share_id}。我逆向了豆包前端的JS,发现这个share_id的前缀决定了它走哪个后端接口:
| 前缀 | 接口 | 场景 |
|---|---|---|
x | /im/message/share/get | IM消息分享 |
w | /samantha/thread/share/snapshot/get | 网页话题 |
c | /samantha/collection/thread/share | 收藏夹 |
d | /samantha/bookmark/dir/share/conversation/get | 书签 |
| 其他 | /alice/message/share/get | 移动端/默认 |
工具拿到链接后解析出ID前缀,直接调用对应的内部API。整个过程大概200毫秒,不需要启动浏览器,不消耗浏览器渲染配额。
这是主路径。快、免费、大部分情况下够用。
双路径设计
豆包的某些分享需要客户端生成的msToken才能通过验证,API会返回不了数据。这时候工具自动切换到备用方案:用Cloudflare的浏览器渲染服务,启动一个真实的Chromium实例加载页面,从渲染后的HTML里提取图片URL。
备用方案慢一些(几秒钟),而且消耗浏览器渲染配额,但胜在稳定。两条路总有一条能走通。
架构大概长这样:
用户粘贴链接
↓
解析 share_id → 判断前缀
↓
调用对应 API(~200ms)
↓ 成功
返回图片列表
↓ 失败
启动浏览器渲染(~3s)
↓
从 HTML 提取图片
↓
返回图片列表 部署
这是一个Cloudflare Worker,部署很简单:
git clone https://github.com/cheungray123/doubao-downloader.git
cd doubao-downloader
npm install
npm run deploy 或者fork到你的仓库,在cf新建workers选择此仓库即可
Cloudflare的免费额度对个人使用完全够。
如果你想启用浏览器渲染作为备用方案,在 wrangler.jsonc 里取消注释browser配置块:
"browser": {
"binding": "MYBROWSER",
"remote": true
}, 不取消注释也行,工具会以纯API模式运行。
前端
打开部署后的URL,界面很简洁:标题、输入框、提取按钮。粘贴链接,点提取,图片就出来了。每张图可以单独下载或查看原图,也可以一键全部下载。移动端也做了适配。
前端是原生HTML/CSS/JS,没有框架,没有构建步骤。整个项目大概500行TypeScript加一个400行的HTML文件。
技术栈
- 运行时: Cloudflare Workers(边缘计算)
- 语言: TypeScript
- 浏览器渲染: @cloudflare/puppeteer(可选)
- 前端: 原生 HTML/CSS/JS
- 部署: Wrangler CLI
安全
工具不存储任何数据。图片URL直接从豆包API获取,通过工具代理下载,不经过任何第三方。做了SSRF防护、输入校验,加了安全响应头。
限制
这不是官方工具,是逆向工程的产物。豆包哪天改了接口,这个工具可能就不好使了。API端点、请求格式、验证机制——这些都可能变。到时候得跟着改。
只能处理公开分享的链接。需要登录才能查看的私密对话,处理不了。
最后
就是个小工具,解决一个小问题。代码都在仓库里,想改随时改。有bug或者豆包改了什么导致不好使了,欢迎提issue。














