ArchiveBox is Super Cool

Michael Lynch

ArchiveBox 超酷

原文由 Michael Lynch 發布,訂閱此部落格

你有用過 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 上那則鄰居把自己搞成「袋地」的 saga

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

一張粗糙的手繪圖,卻捕捉了 /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 認識了他。

我快速瀏覽了 Nick 演講的影片,才發現五年前就在同一場研討會上,Nick 其實就已經 demo 過 ArchiveBox 了。我當時還寫過關於他演講的筆記,但不知為何 ArchiveBox 並沒有留在我的印象中。

自從看過 Nick 的演講以來,ArchiveBox 顯然已經成熟許多,而我也更意識到封存的重要性,所以很高興能重新發現它。

參考資源

本文章由 muse-spark-1.2-contributor 進行翻譯

留言