ArchiveBox is Super Cool

Michael Lynch

ArchiveBox 超级酷

你有没有用过 archive.org 的 Internet Wayback Machine?这是一款自 1996 年以来一直在存档网页的免费工具。所以,如果你想看看 1999 年的 Google 是什么样子,他们就有存档

1999 年 4 月 22 日 Google 的 Internet Archive 快照

ArchiveBox 就像是你自己的私人 Internet Wayback Machine。它免费且开源,你可以用它来存档大多数网站。

ArchiveBox 仪表板的截图

ArchiveBox 是一款免费的开源工具,可让你在本地存档网站。

为什么要存档?

大约一年前,我还完全没有在本地存档网站的想法。网上有一些会存档网站并保存公开副本的工具,那我为什么还要费劲去自托管自己的存档呢?

然后,去年许多社交媒体公司纷纷开始收权。reddit 赫赫有名地收紧了其第三方 API,导致许多存档 reddit 的站点崩溃。这些 reddit 存档站点干脆直接关停,存档也随之消失了。

我意识到,尽管有许多本应提醒我这些服务在运营上不可持续的危险信号,我却对这些免费的、由志愿者运营的存档服务寄予了多大的信任。

所以,如果我不能指望某个基于云的存档服务永远在线,我就应该自己保留一份我所关心内容的副本。

安装 ArchiveBox

安装 ArchiveBox 有几种方法,但我选择了官方推荐的 Docker Compose 方法:

mkdir archivebox && \
  cd archivebox && \
  curl -O 'https://raw.githubusercontent.com/ArchiveBox/ArchiveBox/dev/docker-compose.yml' && \
  docker compose run archivebox init --setup

接下来,我可以通过启动 Docker 容器来运行 ArchiveBox:

docker compose up

它会在 8000 端口上启动一个本地 Web 服务器:

存档 reddit 帖子

我最喜欢的 reddit 故事之一是来自 一位邻居把自己“困住”了的 /r/legaladvice 版块传奇。

这位 reddit 发帖人的邻居拥有一处房产,其中包括一条连接其房屋与公共道路的车道,但他们卖掉了包含这条车道的那部分土地。结果,邻居在不非法侵入他人土地的情况下,无法进出自己的房产。邻居试图通过要求使用 reddit 发帖人私有车道来解决这个问题。

一幅粗糙的绘图,生动地展现了 /r/legaladvice 版块的热烈反响

这个故事通过三篇 reddit 帖子讲述:

于是我把这三个 URL 粘贴到了 ArchiveBox 中:

几秒钟内,ArchiveBox 就存档了这些帖子,并让我可以在本地离线访问它们:

ArchiveBox 已下载这三篇 reddit 帖子,以便离线访问

ArchiveBox 会以几种格式下载页面:PDF、PNG、WARC,但其中一种格式是 Single-file HTML(单文件 HTML),这是我以前从未听说过的:

Single-file HTML 是个巧妙的技巧!它把所有的 HTML、JavaScript 和 CSS 都压缩到单个文件中。它甚至会对图片进行 base64 编码,使它们也存在于同一个 HTML 文件中。

<style>:root{--sf-img-2: url("data:image/gif;base64,R0lGODlhFQAQAIABAICAgP///yH5BAEAAAEALAAAAAAVABAAAAIajI...

用这种方式阅读 reddit 帖子非常酷,因为速度非常快。我已经习惯了 reddit 以及整个网络在加载一个简单的、以文字为主的页面时变得有多慢。当你可以在本地浏览一个预先计算好的页面时,体验那种浏览的感觉很有趣。

存档 YouTube 视频

有更专业的工具可以存档 YouTube 视频,但 ArchiveBox 也集成了 yt-dlp,所以你只需给它一个 YouTube URL,它就会存档该页面和视频。

如果我想确保自己永远有一份 Lonely Island / SNL 经典作品 “Like a Boss” 的副本,我可以像对待其他任何网站一样把它交给 ArchiveBox。

ArchiveBox 已下载该 YouTube 视频

ArchiveBox 无法完美复刻真实的 YouTube 体验,但它会创建页面的快照,然后将视频单独保存:

ArchiveBox 无法完美存档 YouTube 页面,因此它会在视频播放器位置显示一张静态图片,并将视频保存为单独的文件

为什么这感觉如此熟悉?

当我查看 ArchiveBox 的贡献者名单时,我在顶部注意到一个熟悉的名字,Nick Sweeting(尼克·斯威廷)。我认识他!我在 2019 年的 PyGotham 大会上见过他。

我快进浏览了尼克·斯威廷演讲的视频,才意识到他其实在五年前同一场大会上就演示过 ArchiveBox。我当时还写过关于他演讲的文章,但不知为何 ArchiveBox 当时并没有给我留下深刻印象。

自从看了尼克·斯威廷的演讲以来,ArchiveBox 显然已经成熟了许多,而我也意识到自己对存档的需求更大了,所以很高兴能重新发现它。

资源

原文由 Michael Lynch 发布

本文章由 muse-spark-1.2-contributor 进行翻译