您现在的位置是:烟消火灭网 > 百科

网站整站复制的工具

烟消火灭网2026-10-17 07:48:05【百科】4人已围观

简介```html 网站整站复制的工具 body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, H

```html 网站整站复制的工具

网站整站复制的工具

HTTrack 是绕不开的名字。1998 年就发布了第一个版本,整站到现在还在更新。复制我前两天用它扒了一个已经关停的网站摄影博客,命令行敲下 httrack "http://example.com" -O "./backup",整站一杯咖啡没喝完,复制整个站点的网站 HTML、CSS、整站图片全躺在了本地硬盘里。复制目录结构和线上一模一样,网站点开 index.html 就能离线浏览。整站这种工具的复制逻辑很直接——像蜘蛛一样顺着链接爬,把服务器返回的网站每个字节按原路径存下来。但问题也在这儿:它分不清哪些是整站真正有用的内容,哪些是复制广告联盟的统计脚本,经常一股脑全拖下来。

Wget 是另一个极端。它本来就是个下载工具,只是恰好能递归抓取。参数组合稍微复杂点,wget --recursive --page-requisites --convert-links --no-parent 这一串下来,也能把站点镜像到本地。但 wget 对 CSS 里引用的字体文件、JavaScript 动态加载的图片基本无能为力。我试过用它扒一个用 Vue 写的文档站,结果拿到的全是空壳 HTML,内容全靠 XHR 请求,本地打开一片空白。

# 典型 wget 镜像命令,但对付现代 SPA 站点基本抓瞎
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://example.com

后来我转向了 SingleFile。这玩意儿是个浏览器扩展,也能用命令行跑。它的思路和 HTTrack 完全不同——不爬链接,而是把当前页面所有资源(CSS、图片、字体、甚至 iframe 里的内容)全部内联到一个 HTML 文件里。你打开一个页面,点一下扩展图标,几秒钟后一个自包含的 HTML 就下载好了。这个文件丢到任何地方都能打开,不依赖外部资源。我拿它存过不少技术博客,单文件几十兆是常事,但胜在干净、完整。缺点是只能一页一页来,整站复制得手动点上百次。

“整站复制”这四个字其实有歧义。有人要的是能离线浏览的镜像站,有人要的是把内容导入 CMS 做二次加工,还有人只是想扒下设计稿的 CSS 和布局。目标不同,工具选型完全不一样。

如果你要的是能直接部署的静态站副本,wget 加 httrack 组合够用。但现代前端站点越来越难搞——React、Vue 打包后的 JS 在客户端渲染 DOM,爬虫拿到的原始 HTML 里根本没有内容。这时候得用 Puppeteer 或者 Playwright 写脚本,让无头浏览器先执行完 JavaScript,等页面渲染稳定了再抓取 DOM 和网络请求。我写过一段 Puppeteer 脚本抓一个用 Next.js 做的文档站,监听 response 事件,把所有 .json 和 .js 响应都存下来,最后拼出一个能跑的本地版本。麻烦,但有效。

还有一类工具走的是“网站打包”路线,比如 SiteSucker(macOS)、Cyotek WebCopy(Windows)。图形界面,填个 URL 选个深度就能跑。Cyotek WebCopy 我用了几年,对传统服务端渲染的站点支持很好,能自动改写链接、排除外部域名。但它对 CSS @import 嵌套和相对路径的处理偶尔出 bug,扒下来的页面样式错乱是常有的事。得手动检查一遍 /css/ 目录下文件是否完整。


说个具体的翻车案例。上个月我想备份一个用 Grav 搭建的博客,直接上了 HTTrack。跑完一看,文章页全是 404 状态码的占位文件。原因是 Grav 的 URL 路由依赖 .htaccess 重写规则,HTTrack 请求的是物理路径,服务器返回 404,它就把 404 页面存下来了。解决办法是用 --near 参数或者干脆换用 wget 加 --span-hosts 和正确的 --user-agent。这种坑踩过一次就忘不了。

工具终究是工具。HTTrack 胜在全面,SingleFile 赢在干净,Puppeteer 强在能对付动态站。但没有任何一个工具能一键搞定所有站点。每次整站复制之前,先看一眼目标站的技术栈——右键查看源代码,如果 <body> 里空空如也只有一个 <div id="app"></div>,那传统爬虫工具可以直接放弃了。这时候要么上无头浏览器,要么找找有没有现成的 API 或者 RSS 源。别跟工具较劲,换个思路往往更快。

最后提一句法律边界。整站复制用于个人备份、离线阅读、技术研究,一般没问题。但把扒下来的站点重新部署到公网,或者去掉版权信息商用,那就是另一回事了。工具本身中立,用的人得心里有数。

```

很赞哦!(9)