小红书无水印下载神器:XHS-Downloader 3种部署方式与高级配置实战指南
【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接;采集小红书作品信息;提取小红书作品下载地址;下载小红书作品文件项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
XHS-Downloader是一款专业的小红书作品下载工具,支持提取账号发布、收藏、点赞、专辑作品链接,采集作品信息并下载无水印文件,为内容创作者、营销人员和普通用户提供高效的内容采集解决方案。这款开源工具能够彻底去除平台水印,保持原始画质,支持批量处理和多格式输出,是小红书内容管理的专业选择。
项目概览与核心价值定位
XHS-Downloader作为一款专业级小红书内容下载工具,采用模块化架构设计,核心功能集中在source/application/目录中实现。项目支持Python 3.12及以上版本,基于异步编程模型构建,能够高效处理并发下载任务,确保在多任务场景下的稳定性和性能表现。
项目核心优势包括:
- 完全无水印下载:智能解析技术提取原始无水印资源
- 批量处理能力:支持无限量作品链接批量下载
- 多格式支持:AUTO、PNG、WEBP、JPEG、HEIC五种图片格式
- 智能文件管理:按作者分类、自定义命名规则、下载记录管理
- 跨平台兼容:支持Windows、macOS、Linux系统部署
核心功能深度解析
智能链接解析与数据提取
XHS-Downloader支持多种小红书链接格式,包括:
- 标准作品链接:
https://www.xiaohongshu.com/explore/作品ID - 发现页链接:
https://www.xiaohongshu.com/discovery/item/作品ID - 用户作品链接:
https://www.xiaohongshu.com/user/profile/作者ID/作品ID - 短链接格式:
https://xhslink.com/分享码
程序内置智能解析算法,能够自动识别有效链接,支持单次输入多个作品链接,链接之间使用空格分隔即可。核心解析逻辑位于source/application/explore.py模块中,采用正则表达式匹配和URL解析技术确保链接识别的准确性。
无水印资源获取机制
无水印下载功能是XHS-Downloader的核心竞争力。通过分析小红书平台的数据接口和资源加载机制,工具能够:
- 提取原始资源地址:绕过平台水印处理层
- 智能格式识别:根据服务器响应动态选择最佳格式
- Cookie优化策略:配置有效Cookie获取高清资源
- 多分辨率支持:视频作品支持分辨率优先、码率优先、文件大小优先三种下载策略
多平台部署实战指南
方案一:源码运行部署(开发者推荐)
对于技术用户和开发者,源码运行提供最大的灵活性和定制能力:
# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/xh/XHS-Downloader # 进入项目目录 cd XHS-Downloader # 使用uv工具安装依赖(推荐) uv sync --no-dev # 启动程序 uv run main.py或者使用传统的pip安装方式:
# 创建虚拟环境 python -m venv venv # 激活虚拟环境(Windows) venv\Scripts\activate # 安装依赖 pip install -r requirements.txt # 启动程序 python main.py方案二:可执行文件部署(新手友好)
对于非技术用户,可直接下载预编译的可执行文件:
- 前往项目Releases页面下载对应系统的压缩包
- 解压到任意目录
- 双击运行
main程序即可
macOS用户注意:首次运行需执行以下命令移除安全标记:
xattr -cr /path/to/XHS-Downloader方案三:Docker容器化部署(服务器环境)
Docker部署适合需要长期运行的服务场景:
# 拉取官方镜像 docker pull joeanamier/xhs-downloader # 运行TUI模式 docker run --name xhs-downloader -p 5556:5556 -v xhs_downloader_volume:/app/Volume -it joeanamier/xhs-downloader # 运行API模式 docker run --name xhs-downloader-api -p 5556:5556 -v xhs_downloader_volume:/app/Volume -it joeanamier/xhs-downloader python main.py api # 运行MCP模式 docker run --name xhs-downloader-mcp -p 5556:5556 -v xhs_downloader_volume:/app/Volume -it joeanamier/xhs-downloader python main.py mcp高级配置与参数优化
配置文件深度定制
XHS-Downloader的配置文件位于./Volume/settings.json,支持丰富的参数定制:
{ "work_path": "./Volume", "folder_name": "Download", "name_format": "发布时间 作者昵称 作品标题", "image_format": "JPEG", "video_preference": "resolution", "max_retry": 5, "chunk": 2097152, "timeout": 10, "proxy": null, "cookie": "", "author_archive": false, "folder_mode": false, "download_record": true, "record_data": false, "script_server": false }关键参数说明:
name_format:支持13种字段变量,如{create_time}、{author}、{title}等image_format:支持AUTO、PNG、WEBP、JPEG、HEIC五种格式video_preference:视频下载优先级策略(resolution/bitrate/size)chunk:下载分块大小,网络环境差时可调整为1048576(1MB)max_retry:网络请求重试次数,弱网环境建议增加到8-10次
Cookie配置与优化
Cookie配置是获取高清资源的关键。通过配置有效Cookie,可以:
- 获取更高分辨率的视频资源
- 提升数据请求成功率
- 避免平台风控限制
获取Cookie的步骤:
- 浏览器访问
https://www.xiaohongshu.com/explore - 按F12打开开发者工具
- 选择"网络"选项卡,勾选"保留日志"
- 筛选条件输入
cookie-name:web_session - 点击任意作品,在请求头中复制完整Cookie
性能优化策略与实战技巧
批量下载性能调优
并发下载配置:
# 调整并发数(配置文件) "max_workers": 5 # 命令行参数优化 uv run main.py --url "链接1 链接2" --chunk 1048576 --timeout 30 --max_retry 8网络优化策略:
- 设置合适的代理服务器:
--proxy "http://127.0.0.1:10808" - 调整超时时间:弱网环境建议30秒
- 启用断点续传:默认开启,网络中断后自动恢复
文件管理与组织优化
智能归档策略:
# 按作者分类存储 uv run main.py --url "作品链接" --author_archive true # 自定义命名规则 uv run main.py --url "作品链接" --name_format "{create_time}_{author}_{title}_{index}" # 修改文件时间戳 uv run main.py --url "作品链接" --write_mtime true下载记录管理:
- 记录文件:
./Volume/ExploreID.db - 数据存储:
./Volume/Download/ExploreData.db - 自动跳过已下载作品,避免重复下载
命令行模式深度应用
基础命令示例
# 单作品下载 uv run main.py --url "https://www.xiaohongshu.com/explore/作品ID" # 批量下载多个作品 uv run main.py --url "链接1 链接2 链接3" # 指定下载图片序号 uv run main.py --url "作品链接" --index "1 3 5" --image_format webp # 配置Cookie获取高清资源 uv run main.py --url "作品链接" --cookie "your_cookie_here" # 设置代理服务器 uv run main.py --url "作品链接" --proxy "http://127.0.0.1:10808" --timeout 30高级参数组合
# 完整参数示例 uv run main.py \ --url "https://www.xiaohongshu.com/explore/作品ID" \ --cookie "web_session=xxx" \ --proxy "http://127.0.0.1:10808" \ --timeout 30 \ --max_retry 8 \ --chunk 2097152 \ --image_format HEIC \ --folder_mode true \ --author_archive true \ --name_format "{create_time}_{author}_{title}" \ --record_data true服务器模式与API集成
API模式部署与使用
启动API服务器:
uv run main.py api访问交互式文档:
- Swagger UI:
http://127.0.0.1:5556/docs - ReDoc:
http://127.0.0.1:5556/redoc
API调用示例:
import requests from json import dumps def download_xhs_content(): """通过API下载小红书内容""" server = "http://127.0.0.1:5556/xhs/detail" data = { "url": "https://www.xiaohongshu.com/explore/作品ID", "download": True, "index": [1, 3, 5], "cookie": "your_cookie_here", "proxy": "http://127.0.0.1:10808", "skip": False } response = requests.post(server, json=data, timeout=30) result = response.json() if result.get("status") == "success": print(f"下载成功:{result['data']['title']}") print(f"文件保存路径:{result['data']['path']}") else: print(f"下载失败:{result.get('message', '未知错误')}") return resultMCP模式配置
MCP(Model Context Protocol)模式为AI助手提供小红书内容下载能力:
# 启动MCP服务器 uv run main.py mcp # 配置示例(Streamable HTTP) # MCP URL:http://127.0.0.1:5556/mcp/用户脚本与浏览器集成
Tampermonkey脚本安装
- 安装Tampermonkey浏览器扩展
- 添加用户脚本:
- Master分支:
https://raw.githubusercontent.com/JoeanAmier/XHS-Downloader/refs/heads/master/static/XHS-Downloader.js - Develop分支:
https://raw.githubusercontent.com/JoeanAmier/XHS-Downloader/refs/heads/develop/static/XHS-Downloader.js
- Master分支:
脚本核心功能
四大核心操作:
- 链接批量提取:一键获取账号所有发布、点赞、收藏作品链接
- 图片选择下载:可视化选择需要下载的图片
- 自动滚动加载:自动翻页获取更多内容
- 文件打包下载:多文件作品自动打包为压缩包
脚本配置优化:
// 自动滚动页面配置 const autoScroll = true; // 启用自动滚动 const scrollCount = 50; // 滚动次数 const scrollDelay = 1000; // 滚动间隔(毫秒) // 文件打包配置 const packFiles = true; // 启用文件打包 const zipNameFormat = "{author}_{date}"; // 压缩包命名格式常见问题排查与解决方案
下载速度慢或失败
问题原因:网络连接不稳定或平台限制
解决方案:
# 设置代理服务器 uv run main.py --url "作品链接" --proxy "http://127.0.0.1:10808" # 调整分块大小 uv run main.py --url "作品链接" --chunk 1048576 # 增加重试次数 uv run main.py --url "作品链接" --max_retry 10 --timeout 30 # 配置有效Cookie uv run main.py --url "作品链接" --cookie "web_session=xxx"无法获取高清资源
问题原因:未配置Cookie或Cookie已过期
解决步骤:
- 按照Cookie获取教程重新获取有效Cookie
- 更新配置文件中的cookie参数
- 重启程序或重新运行命令
文件命名混乱
自定义命名规则:
# 使用完整的时间格式 uv run main.py --name_format "{create_time:%Y-%m-%d_%H-%M-%S}_{author}_{title}" # 包含作品统计信息 uv run main.py --name_format "{create_time} {author} {title} {like_count}赞" # 简化命名格式 uv run main.py --name_format "{author}_{index}"批量下载中断处理
断点续传机制:
- 启用下载记录:
--download_record true - 程序支持自动跳过已下载作品
- 重新运行命令会自动继续未完成的任务
手动清理下载记录:
# 删除记录数据库 rm ./Volume/ExploreID.db # 或者通过程序界面清除记录 # 在TUI界面按R键进入记录管理技术架构与源码解析
核心模块结构
XHS-Downloader/ ├── source/ │ ├── application/ # 应用层核心逻辑 │ │ ├── app.py # 主应用逻辑 │ │ ├── download.py # 下载功能实现 │ │ ├── explore.py # 作品信息提取 │ │ ├── image.py # 图片处理 │ │ └── video.py # 视频处理 │ ├── CLI/ # 命令行接口 │ ├── TUI/ # 文本用户界面 │ ├── module/ # 核心模块 │ └── expansion/ # 扩展功能 ├── static/ # 静态资源 └── locale/ # 多语言支持异步下载架构
source/application/download.py模块采用异步编程模型:
class Download: SEMAPHORE = Semaphore(MAX_WORKERS) # 并发控制 async def download_file(self, url: str, path: Path) -> bool: """异步下载文件""" async with self.SEMAPHORE: async with self.manager.client.stream("GET", url) as response: async with aiofiles.open(path, "wb") as file: async for chunk in response.aiter_bytes(self.chunk): await file.write(chunk) return True智能解析算法
source/application/explore.py中的链接解析逻辑:
class Explore: # 支持多种链接格式的正则表达式 URL_PATTERNS = [ r"https?://www\.xiaohongshu\.com/explore/([a-zA-Z0-9]+)", r"https?://www\.xiaohongshu\.com/discovery/item/([a-zA-Z0-9]+)", r"https?://www\.xiaohongshu\.com/user/profile/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)", r"https?://xhslink\.com/([a-zA-Z0-9]+)" ] async def extract(self, url: str) -> dict: """提取作品信息""" # 智能识别链接类型 # 解析作品ID # 请求数据接口 # 提取无水印资源 # 返回结构化数据最佳实践与应用场景
内容创作者素材收集
工作流程:
- 使用用户脚本批量提取目标账号作品链接
- 配置按作者分类存储:
--author_archive true - 设置自定义命名规则:
--name_format "{create_time}_{author}_{title}" - 启用下载记录避免重复:
--download_record true
批量处理脚本:
#!/bin/bash # 批量下载多个作者作品 authors=("author1" "author2" "author3") for author in "${authors[@]}"; do # 获取作者作品链接(假设有获取工具) links=$(get_author_links "$author") # 批量下载 uv run main.py --url "$links" \ --author_archive true \ --name_format "{create_time}_{author}_{title}" \ --image_format WEBP \ --folder_mode true done营销人员竞品分析
数据采集策略:
- 账号分析:提取竞品账号所有作品
- 内容分类:按发布时间、互动数据自动分类
- 趋势分析:统计发布频率、内容类型分布
- 质量评估:下载原始文件进行质量对比
自动化分析脚本:
import asyncio from datetime import datetime, timedelta async def analyze_competitor(account_url: str, days: int = 30): """竞品账号分析""" # 获取近期作品链接 recent_links = await get_recent_links(account_url, days) # 批量下载作品 results = [] for link in recent_links: result = await xhs.extract(link, download=True) if result: results.append({ "title": result["title"], "create_time": result["create_time"], "like_count": result["like_count"], "comment_count": result["comment_count"], "share_count": result["share_count"], "file_path": result["file_path"] }) # 生成分析报告 generate_report(results) return results个人用户内容收藏
高效收藏方案:
- 剪贴板监听模式:开启后自动下载复制的链接
- 智能分类存储:按作者自动归档
- 格式统一转换:统一转换为WEBP格式节省空间
- 元数据保留:保持文件创建时间为作品发布时间
一键收藏配置:
# 启动剪贴板监听 uv run main.py --monitor true # 配置监听参数 uv run main.py --monitor true \ --image_format WEBP \ --author_archive true \ --name_format "{create_time:%Y-%m-%d}_{title}"性能对比与优化建议
不同部署方式性能对比
| 部署方式 | 启动速度 | 资源占用 | 灵活性 | 适用场景 |
|---|---|---|---|---|
| 可执行文件 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | 个人用户、快速使用 |
| 源码运行 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 开发者、定制需求 |
| Docker容器 | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | 服务器环境、长期运行 |
网络环境优化建议
弱网环境配置:
{ "timeout": 30, "max_retry": 10, "chunk": 1048576, "proxy": "http://your-proxy:port" }高速网络配置:
{ "timeout": 10, "max_retry": 3, "chunk": 4194304, "max_workers": 10 }存储优化策略
- 格式选择:WEBP格式在保证质量的同时节省50%存储空间
- 压缩策略:启用HEIC格式(苹果设备优化)
- 清理机制:定期清理重复文件和临时文件
- 备份方案:重要作品使用PNG无损格式保存
扩展开发与二次集成
API二次开发示例
from typing import List, Dict import asyncio from source.application import XHS class XHSBatchProcessor: """小红书批量处理器""" def __init__(self, config: Dict): self.config = config self.xhs = None async def __aenter__(self): self.xhs = await XHS(**self.config).__aenter__() return self async def __aexit__(self, exc_type, exc_val, exc_tb): await self.xhs.__aexit__(exc_type, exc_val, exc_tb) async def batch_download(self, urls: List[str], indices: List[List[int]] = None) -> List[Dict]: """批量下载多个作品""" results = [] for i, url in enumerate(urls): index = indices[i] if indices and i < len(indices) else None try: result = await self.xhs.extract(url, download=True, index=index) results.append({ "url": url, "status": "success", "data": result }) except Exception as e: results.append({ "url": url, "status": "error", "error": str(e) }) return results async def monitor_clipboard(self, callback): """监控剪贴板回调""" # 实现剪贴板监控逻辑 pass自定义格式处理器
from pathlib import Path from PIL import Image import asyncio class CustomImageProcessor: """自定义图片处理器""" @staticmethod async def convert_to_format(image_path: Path, target_format: str, quality: int = 85) -> Path: """转换图片格式""" if not image_path.exists(): raise FileNotFoundError(f"图片不存在: {image_path}") # 异步处理图片转换 output_path = image_path.with_suffix(f".{target_format.lower()}") # 使用PIL进行格式转换 loop = asyncio.get_event_loop() await loop.run_in_executor( None, lambda: Image.open(image_path).save(output_path, format=target_format.upper(), quality=quality) ) return output_path @staticmethod async def optimize_image(image_path: Path, max_size: tuple = (1920, 1080)) -> Path: """优化图片尺寸和质量""" # 实现图片优化逻辑 pass安全与合规使用指南
合法使用原则
- 个人使用:仅限个人学习、研究、欣赏目的
- 版权尊重:不得用于商业用途或侵犯他人版权
- 平台合规:遵守小红书平台使用条款
- 数据保护:妥善处理下载的内容数据
风险防范措施
- 频率控制:避免高频请求触发平台风控
- Cookie管理:定期更新Cookie避免失效
- 代理使用:在合规地区使用代理服务
- 数据备份:定期备份重要下载记录
社区支持与贡献
XHS-Downloader作为开源项目,欢迎社区贡献:
- 问题反馈:在GitHub Issues提交使用问题
- 功能建议:提出改进建议和新功能需求
- 代码贡献:遵循项目代码规范提交PR
- 文档完善:帮助改进使用文档和教程
开发分支策略:
master分支:稳定版本develop分支:开发版本- 提交PR请基于
develop分支
通过本文的全面解析,您已经掌握了XHS-Downloader的核心功能、部署方式、高级配置和最佳实践。无论是个人用户的内容收藏,还是专业团队的内容采集需求,XHS-Downloader都能提供稳定高效的解决方案。记住合理使用工具,尊重原创内容,让技术为创作赋能而非替代。
【免费下载链接】XHS-Downloader小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接;采集小红书作品信息;提取小红书作品下载地址;下载小红书作品文件项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考