Website-downloader:基于Node.js的网站完整源代码下载工具
原标题:AhmadIbrahiim/Website-downloader
HTML★ 3,805 stars+173 今日
速览
该工具使用Node.js爬取整个网站并保留原始目录结构,能够下载所有关联资源(JS、样式表、图片等),适用于离线备份、网页结构分析、站点迁移等场景。支持自定义下载深度和并发控制,操作简单高效。
AI 深度解读
这是什么
AhmadIbrahiim/Website-downloader 是一个基于 Node.js 的开源工具,能够一键下载任意网站的完整源代码(包括所有静态资源,如 CSS、JS、图片、字体等),并将它们打包压缩后通过 WebSocket 实时返回给用户。项目提供了在线演示(Live Demo)和自部署方案,底层依赖 wget 的镜像功能与 archiver 的压缩能力,核心逻辑简洁高效。
解决的问题
在日常开发、设计或离线研究中,经常需要完整保存一个网站的结构以便本地查看、分析或备份。直接使用浏览器“另存为”往往只能保存当前页面,无法递归获取子页面、缺失 CSS 中引用的字体、图片等资源,而且链接仍指向线上地址,导致离线环境无法正常浏览。Website-downloader 利用 wget 的镜像参数,一次性解决递归下载、链接转换、资源补全和文件扩展名规范化等问题,再通过 WebSocket 实时推送压缩包,让用户无需手动操作命令行即可获得完整的离线站点。
核心功能
- 一键镜像下载:输入任意 URL,自动执行
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent,下载整个站点的递归结构。 - 资源完整性:
--page-requisites确保 CSS、图片、JS 等页面渲染必需的资源全部被下载。 - 链接本地化:
--convert-links将所有内部链接(包括<a>、<img>、<link>等)转换为相对路径,离线打开 HTML 时样式和导航均正常。 - 文件扩展名规范化:
--adjust-extension根据 Content-Type 自动为 HTML 和 CSS 文件添加.html或.css后缀,避免因无扩展名导致浏览器无法识别。 - 实时压缩与推送:下载完成后,
archiver将整个目录打包为 .zip 文件,并通过 WebSocket 通道实时推送给用户,无需等待整个下载过程结束即可看到进度。 - 在线演示与自部署:提供可用的 Live Demo(https://website-downloader.onrender.com),也支持通过
git clone+npm install+npm start在本地或云平台(如 Render、Heroku)私有部署。
亮点 / 与同类相比
- 极简部署:仅需 Node.js 和
wget(Linux/Mac 自带,Windows 需额外安装),没有复杂的数据库、队列或外部依赖。相比wget命令行,该项目提供了 Web 界面和实时进度反馈,降低了使用门槛。 - 实时反馈:通过 WebSocket 通道传输压缩包,用户可以在下载过程中看到进度,而非等待全部完成才收到文件。相比传统
wget命令行的静默执行,体验更友好。 - 结构清晰:代码量小(主语言为 HTML,实际 Node.js 后端逻辑简洁),适合学习或二次开发,例如修改
wget参数、增加认证、支持自定义域名等。 - 与同类工具对比:许多在线网站下载器(如 HTTrack)需要安装桌面客户端或依赖浏览器插件,而本项目可直接部署在云端,通过 URL 输入即可使用,无需本地安装任何软件。与
wget或curl相比,它提供了图形化界面和打包下载功能。
适合谁用 / 上手
适合人群:
- 前端开发者:需要快速获取竞争对手或参考站点的静态资源进行分析。
- 设计师:需要保存完整页面设计(含字体、图标)用于离线评审。
- 内容创作者:希望备份自己的网站或博客,保留所有页面和附件。
- 学习
wget参数的用户:通过项目源码理解--mirror、--convert-links等参数的实际效果。
上手步骤:
- 在线体验:直接访问 Live Demo 链接,输入目标网站 URL,点击下载即可获得压缩包。
- 自部署:
git clone项目 →cd Website-downloader→npm install→npm start,访问http://localhost:3000使用。 - 注意:目标网站需允许被爬取(
robots.txt限制可能影响下载),且大型网站可能会消耗较多时间与带宽,建议先测试小站点。
查看原文 →github.com
