Show HN:Kage – 将任意网站“投影”成单个可离线查看的二进制文件

目的与核心思路

  • 该工具将整个网站(而不只是单页)镜像为便于离线使用的打包内容。
  • 在 JS 执行后捕获渲染后的 DOM,移除脚本,并重写资源,使快照可在无网络访问的情况下工作。

与现有工具的比较

  • 被视为面向 JS 重度网站(例如 SPA、Next.js)的现代替代方案,可替代 HTTrack/wget。
  • 常与 SingleFile/SingleFileZ 和 archiveweb.page 进行比较:
    • SingleFile 因高保真单页保存和 base64 打包而受到称赞。
    • SingleFile 已支持受限范围的递归爬取;有人建议借鉴其技巧来实现更复杂的功能(shadow DOM、iframe、websocket、去重)。
  • 还被提及与 grab-site、browsertrix、Kiwix/ZIM、gwtar、mhtml、Teleport Pro、curl 以及“Print to PDF”并列比较。

输出格式与分发

  • 当前输出:
    • 静态 HTML 文件夹。
    • ZIM 文件(供多个平台上的 Kiwix 阅读器使用)。
    • 内嵌 webview 和归档内容的自包含可执行文件。
  • 建议包括:
    • 单个自包含 HTML,带客户端路由。
    • 打开后在用户浏览器中运行的自解压归档(类似 CHM)。
    • 供 Obsidian/Logseq 等工具使用的 Markdown 文件夹;导出为 EPUB。

使用场景

  • 离线阅读博客、文档、公司 wiki、Confluence 和开发文档(例如 Apple 文档、Snowflake)。
  • 旅行/离线场景(航班、火车、无网络连接的网站)。
  • 长期个人归档和研究访问。

技术行为与限制

  • 使用 Chrome/Chromium;推荐使用 Docker 以便更容易设置。
  • 当前缺口/需求:限速以减轻站点负载、排除图片/视频、部分爬取、cookie/认证支持、处理付费墙和嵌入视频。
  • 通过本地 HTTP 服务器提供服务可避免 file:// 的 CORS/origin 怪癖;对于浏览器在这种模式下的限制程度,存在一些争论。

安全与信任问题

  • 由于在 Docker 中对 Chrome 使用 --no-sandbox 引发了担忧;后续已通过环境变量/标志将其限制在 Docker 内使用。
  • 有人不信任将归档内容以二进制形式存储;更偏好用于分享的 HTML/ZIM。
  • 报告称相关二进制文件被杀毒软件误报。
  • 少数读者非常不喜欢 README 的风格,称其为“LLM slop”,并质疑代码质量是否匹配。

归档生态与长期问题

  • 讨论了 WARC 与 mitmproxy 抓取、HTTP/2/WebSockets,以及潜在的新归档格式。
  • 人们对与既有格式(WARC、ZIM)的兼容性很感兴趣,并质疑“保存十年”这一目标随着时间推移是否可靠(尚不明确)。