ArchiveBox is Super Cool

Michael Lynch

ArchiveBox 超酷的

你有用過 archive.org 的 Internet Wayback Machine 嗎?這是一款從 1996 年起就持續封存網路的免費工具。所以,如果你想看看 1999 年的 Google 長什麼樣子,這裡就看得到

1999 年 4 月 22 日 Internet Archive 所擷取的 Google 頁面

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 上啟動一個本機網頁伺服器:

封存 reddit 貼文

我最喜歡的 reddit 故事之一,是 /r/legaladvice 板上那則鄰居把自己搞到「無路可出(landlocked)」的網友的傳奇故事。

這位發文者的鄰居擁有一塊包含車道的土地,該車道連接他家與公共道路,但他卻把包含車道的那部分土地賣掉了。結果,鄰居在不侵入他人土地的情況下,根本無法進出自己的房產。鄰居想解決這個問題,竟要求使用發文者的私人車道。

一張粗糙的手繪圖,捕捉了 /r/legaladvice 板上的熱烈討論

這個故事分三篇 reddit 討論串講完:

所以我把這三個網址貼到 ArchiveBox 裡:

短短幾秒內,ArchiveBox 就已封存好這些貼文,並讓我在本機離線存取:

ArchiveBox 已下載這三篇 reddit 討論串,現在可離線瀏覽

ArchiveBox 會用幾種格式下載頁面:PDF、PNG、WARC,但其中一種是我以前從沒聽過的 single-file 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 網址,它就會把頁面和影片一起封存起來。

如果我想確保自己永遠留有一份 Lonely IslandSNL 經典作品「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 進行翻譯