XHS-Downloader 如何快速保存小红书作品:新手向完整指南
【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
XHS-Downloader 是一个小红书链接提取与作品采集工具:你粘贴作品链接,它会采集作品信息、提取无水印文件地址,并把图片和视频下载到本地。适合想收藏作品的普通用户、需要批量存素材的创作者,以及想通过 API 调用的开发者。三条安装路径任选其一,5 分钟能完成第一次下载。
📋 功能一览
| 功能 | 对你意味着什么 |
|---|---|
| 无水印作品下载 | 直接拿到原图与视频文件,不用截图、录屏 |
| 多链接批量处理 | 一次粘贴多个链接,用空格分隔即可依次处理 |
| 自动跳过已下载 | 按作品 ID 记录下载历史,重复粘贴不会再下一遍 |
| 自定义命名与归档 | 文件名可按发布时间、作者、标题等字段拼装,也可按作者分文件夹 |
| 剪贴板监听 | 后台程序监听剪贴板,复制链接后自动开始下载 |
| API 与 MCP 调用 | 可部署为服务,供自己的脚本和系统集成调用 |
🚀 三条安装路径,选一条开始
开箱即用:运行可执行文件
适合 Windows 10 及以上和 macOS 用户,无需安装 Python。
- 到项目仓库的 Releases 页面下载最新版程序压缩包并解压
- macOS 首次运行被系统拦截时,在终端执行
xattr -cr 项目文件夹路径一次即可 - 双击程序文件夹里的
main启动,文件默认下载到.\_internal\Volume\Download
自己搭:源码运行
需要 Python 3.12 及以上版本,依赖用 uv 或 pip 安装均可:
git clone https://gitcode.com/gh_mirrors/xh/XHS-Downloader cd XHS-Downloader uv sync --no-dev uv run main.py不用 uv 的话,执行pip install -r requirements.txt安装依赖,再运行python main.py。
跑在服务器:Docker 部署
docker pull joeanamier/xhs-downloader docker run --name xhs -p 5556:5556 -v xhs_downloader_volume:/app/Volume -it joeanamier/xhs-downloader启动容器末尾加上python main.py api即为 API 模式,程序对外监听 5556 端口。注意容器模式下不支持剪贴板读取与监听功能。
程序运行界面:输入框、下载按钮与日志区
⌨️ 实操:完成第一次下载
- 启动程序后进入 TUI 界面。界面中央是一个输入框,旁边有"下载作品文件""读取剪贴板""清空输入框"三个按钮,底部显示快捷键:Q 退出、S 设置、R 下载记录、M 开启剪贴板监听。
- 把作品链接粘贴进输入框。支持这几种格式:
xiaohongshu.com/explore/作品ID、xiaohongshu.com/discovery/item/作品ID、xiaohongshu.com/user/profile/作者ID/作品ID,以及xhslink.com短链接;多个链接用空格分隔,程序会自动挑出有效链接。 - 点击"下载作品文件",等待日志输出完成。
预期效果:日志区会打印"共处理 N 个作品,成功 N 个,失败 N 个,跳过 N 个"的统计;文件出现在Volume/Download文件夹里,文件名默认按"发布时间 作者昵称 作品标题"生成。
下载过程中日志区会实时输出作品处理进度
它是怎么工作的
用大白话说:程序先从你输入的文字里提取有效作品链接(短链接会被展开),然后带着你的 Cookie 向平台请求作品数据,解析出标题、作者、发布时间、点赞收藏数和无水印资源地址,再逐个文件下载到本地,下载过程支持断点续传。每次下载成功,作品 ID 都会写进本地数据库,之后遇到同一作品直接跳过,这就是"自动去重"的来源。
主流程在source/application/app.py的extract方法里:
async def extract(self, url, download=False, index=None): urls = await self.extract_links(url) # 提取有效作品链接 for i in urls: await self.__deal_extract(i, download, index) # 逐个获取并下载数据解析逻辑在source/application/explore.py,文件下载在source/application/download.py,想看细节可以直接翻这几个文件。
配置速查
配置文件是./Volume/settings.json,首次运行自动生成,改完重启程序生效。常用参数:
| 参数 | 默认值 | 什么场景下改它 |
|---|---|---|
cookie | 空 | 没配 Cookie 时视频只能下载低分辨率,建议配置 |
name_format | 发布时间 作者昵称 作品标题 | 想自定义文件名,支持作品ID、点赞数量等字段 |
work_path | 项目根路径/Volume | 想更换作品文件保存根目录 |
image_format | JPEG | 想改图片格式,支持 AUTO、PNG、WEBP、JPEG、HEIC |
proxy | null | 网络需要走代理时 |
timeout | 10 | 请求频繁超时时调大,单位秒 |
max_retry | 5 | 网络不稳定时增加失败重试次数 |
author_archive | false | 想把每位作者的作品存进独立文件夹时开启 |
进阶:用浏览器脚本推送下载任务
这是新手最实用的一条进阶路线。给浏览器装好 Tampermonkey 扩展后,把仓库static/XHS-Downloader.js脚本导入浏览器即可使用。
脚本单独就能工作:在小红书网页里直接下载作品,或从推荐页、账号发布/收藏/点赞/专辑页、搜索结果页提取作品链接,提取结果可以复制回主程序批量下载。
如果想省掉复制这一步,可以让脚本和主程序联动:在settings.json里把script_server设为true,保持程序在后台运行。之后你在浏览器打开任意作品页,点击脚本菜单里的"推送下载任务",任务就发给本地程序处理,下载完成文件自动入库。两个注意点:脚本的"自动滚动加载"默认是关闭的,因为可能被平台判定为自动化操作;多文件作品脚本端默认打包成压缩包下载。
用户脚本安装:把 XHS-Downloader.js 导入 Tampermonkey 即可
❓ 下载失败怎么排查
| 现象 | 可能原因 | 处理方式 |
|---|---|---|
| 视频画质低 | 未配置 Cookie 或已过期 | 按 README 的 Cookie 章节用开发者工具重新获取并填入配置 |
| 作品获取失败 | 链接携带日期信息,旧链接易被风控 | 重新复制最新的作品链接再试 |
| 作品被跳过,没有下载 | 作品 ID 已在下载记录中 | 通过程序"下载记录"功能删除对应 ID 后重新下载 |
| macOS 首次启动被拦截 | 可执行文件未做代码签名 | 终端执行xattr -cr 项目文件夹路径 |
| 源码模式无法启动 | Python 版本低于 3.12 | 升级解释器后重新安装依赖 |
资源与合规
- 项目仓库:XHS-Downloader(gitcode 镜像),Releases 页面提供可执行文件与源码下载
- 完整文档:仓库内的 README.md
- 问题反馈:在仓库 Issue 页面提交,附带上日志与复现步骤
本工具仅供个人学习与研究使用。下载的内容请尊重原作者版权,并遵守平台服务条款。
【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考