用途:把网站或页面镜像、归档或快照为可离线使用的副本,并避免“保存成功但离线打开空白”的静默失败。
核心判断:先确认保存的字节在无网络时是否仍包含内容。用 curl -sL <url> 或查看源代码,grep 页面上可见的文字:内容在 HTML 中(静态站点)则任何工具都可用;由内联数据经 JS 渲染(如 var data=[…]、NEXT_DATA)时,只要保存文件保留脚本即可离线(monolith 和 wget 会保留);运行时从 API 获取(fetch('/api/…')、无限滚动)则离线会空白,需解析 API 并内嵌数据,或用 firecrawl 抓取已渲染的 HTML。
工具选择:整站静态镜像用 wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --wait=1 --random-wait <url>;单页保存为自包含文件用 monolith <url> -o page.html;JS/API 内容或渲染后 HTML 转 markdown 用 firecrawl scrape <url> / firecrawl crawl <url>(也支持 firecrawl MCP);页面中的视频/音频用 yt-dlp <url>。
限制与注意:monolith 只抓单页,不爬站,但会内联静态引用的资源(含跨域 CDN 样式表或图片);离线失效的是运行时注入或获取的内容(分析、Turnstile、社交按钮),因为脚本在打开页面时而非抓取时运行。wget 的 --mirror 等于 -r -N -l inf,真正让副本可离线浏览的是 -k -E -p。wget 默认遵守 robots.txt,Disallow 时会静默不镜像;-e robots=off 是刻意覆盖而非默认。HTTP 200/202 但响应体为 0 字节通常是机器人缓解,不是成功,应检查实际字节数。抓取要温和,使用 --wait=1 --random-wait 并串行而非激进并行。验证时只检查已保存文件,grep 真实内容并确认转换后的链接指向存在的本地文件,不要重新抓取。
适用场景:需要离线浏览的静态站点、单页归档、JS/API 渲染内容的抓取、页面音视频下载。缺失信息:具体安装方式、收费与平台支持暂未提供。