由於我的個人瀏覽網頁習慣,開新頁籤的速度遠高於消化的速度,而且我也不太願意花時間去整理 bookmarks,不是說不喜歡,只是對我來說整理完的效益不高,會重複開啓的頁面自然而然會把網址的開頭或標題記住,而每次只要打出開頭或標題,Safari 也會很聰明地作出相對應的建議,看是要跳到指定標籤頁,還是自動拼寫完成完整的網址,都難不倒它。在這種情形之下,bookmark 對我來說就變成雞肋的存在。再來就是既然新分頁增加的速度都這麼快了,哪還有時間慢慢整理 bookmark 呢?
但一直開新頁籤的麻煩在於,很快地巨量的頁籤就會讓瀏覽器變得笨重,頁籤條也會變得難以識讀、難以尋找到目標頁面。所以近來我的瀏覽器偏好逐漸轉移到原生支援直式頁籤條的瀏覽器,例如 Arc、SigmaOS、Microsoft Edge、Vivaldi,若有超過二階層管理的需求,甚至會使用 Orion、Horse 等瀏覽器。每個瀏覽器都有許多強項和弱項,可以寫一大篇文章比較了,日後有機會的話也許可以分享相關心得,但本篇的目的純粹是因爲 Safari 作爲 macOS 原生的瀏覽器,還是有其優勢在,對我來說是不能完全捨棄的,所以還是會發生開出的頁籤越來越多的問題,也就要探尋更方便的頁籤管理和備份機制。
早期我曾使用過 Toast、SessionRestore for Safari 作爲頁籤備份的解決方案,但是前者作爲雲端同步頁籤的解決方案,對需要本地輸出備份的使用者而言不太友好,後者則是在 Safari 17 之後有其限制:若是瀏覽器重啟後沒有實際被開啓過的分頁,在 Save current Session 時該分頁會被跳過。備份出來的分頁若是不完整,就失去安全備份的意義。

近期,由於我開始使用 new.space 服務作爲我的 Read it later 和檔案暫存空間,而它的 web version 支援 drag-and-drop、Copy and Paste 等方便的 UX,如果是 clipboard 中含有大量的網址它也能批次處理(最近也新增支持單一層的 folder 直接加入),現在正在 beta 的 iOS 版也能透過 ShareExtension 加入連結或檔案,所有加入後的 item 都會即時產生相對應的 title、preview,可以一目瞭然地滑動瀏覽、開啓連結、更名、刪除等操作,非常適合利用空檔時間一次處理未讀的分頁。它也有選取項目、打包下載的選項,所有連結都會輸出成 .url 的檔案,除了可以下載到本地備份之外也可以下次再拖曳至新的 space 管理,非常方便。
這跟 Safari Tabs 有什麼關係呢?去年 9 月 new.space 官方 community 分享了一個 案例,作者闡述他怎麼把他查詢及學習吉他的過程中產生的 Safari 分頁,手動地加入他的 space。當我詢問作者有沒有比較自動化的方式時,有其他使用者分享了一個小技巧:開啓 sidebar(CMD+Shift+L)、右鍵點選『N 個標籤頁』,選取『拷貝連結』,再貼到 new.space。如此一來就可以一次拷貝數百個分頁至 new.space 了。
萬一無法用上述方法拷貝連結的話怎麼辦?會特別這樣說是因爲最近我將作業系統升級到 macOS Sonoma 14.4(文章發表時 14.4 還在 beta),升級後開啓原本有數千個分頁的 Safari 會造成系統 CPU 超載、記憶體耗盡,最後只能把 Safari 強制關閉。結果上面的方法就不適用了。沒關係,成功的人找方法,Safari 15 之後改變原本儲存 Last Session 的方式,由原先的 .plist 格式改爲存到 SafariTabs.db,路徑爲
/Users/<username>/Library/Containers/com.apple.Safari/Data/Library/Safari/SafariTabs.db
這是一個 sqlite 的檔案,我們可以使用 DB Browser for SQLite 開啓這個檔案(建議先備份),然後下指令:
SELECT title || ' \n' || url || '\n' AS merged_column FROM bookmarks WHERE url not like ''
將所有 title 和 url 合併成新的一筆資料,用換行字元隔開輸岀,然後在結果處選取整個 column,右鍵 Copy,再貼到記事本,再將所有 \n 替換成實際上的分行,就完成了一個純文字的列表。這時再將文字檔內容複製到 new.space,備份完成後就可以把原本的 SafariTabs.db 刪除,Safari 就可以正常重開啦!
拉哩拉雜說了一堆步驟,也沒有截圖,不知道讀者有沒有辦法理解,不過這篇是在有點時間緊迫的情境下打完的,主要還是讓自己留個筆記,若是有疑問的話也歡迎留言跟我討論囉。