Burn-Link ·

關掉閱後即焚分頁之後,# 後面的金鑰為什麼還能從「最近關閉的分頁」找回來

關掉分頁,不等於網址列 # 後面的金鑰已經從這台電腦消失。瀏覽器為了支援「重新開啟剛才關掉的頁」,會把當時的完整網址寫進工作階段紀錄;Ctrl+Shift+T(macOS 上是 +Shift+T)還原的就是這一條,其中包含片段。下面把「伺服器看不到金鑰」和「本機還能把金鑰找回來」拆開,並寫出當場能對照的步驟。不是閱後即焚建立頁的操作說明書。

對照最近關閉的分頁 可當場核對 開啟即用
00 / 目錄

先分清 關掉分頁寫進了哪一層

本篇只回答「關掉閱後即焚分頁之後,# 後面的金鑰為什麼還能從最近關閉的分頁找回來」。不是「# 為什麼不進伺服器日誌」那一層,也不是閱後即焚的表單說明。

01 / 寫入

關掉分頁寫進了 哪一層

這不是「頁面關了,網址就從世界上消失」。瀏覽器先記住你剛才停在哪,才能在下一秒把它打開。

把一條 https://…/s.html?id=…#… 打開之後,網址列裡同時有兩段:問號後面的密文編號,以及 # 後面的解密金鑰。關掉這個分頁時,很多人把動作讀成「金鑰已經不在這台電腦上了」。瀏覽器要做的事情正好相反。為了支援後退、前進、當機還原和「最近關閉的分頁」,它必須把這一次導覽的完整網址留下來。Chromium 把每個分頁的這段紀錄叫工作階段歷史(session history):一條導覽項裡包含當時的 URL、捲動位置和未送出的表單等內容。分頁被關掉或瀏覽器被重啟之後,這些導覽項會被序列化,用來把分頁原樣還原。說明見 Chromium 文件《Session History》

Firefox 把同一類能力叫做 Session Restore:它追蹤視窗、分頁和最近關閉的分頁,並把每個分頁的歷史、捲動位置和表單一起寫到磁碟,好在啟動或「復原關閉」時再讀回來。說明見 Firefox Source Docs《Session Restore》。Microsoft Edge 基於 Chromium,還原關掉的分頁時走的是同一套工作階段歷史,而不是另寫一套「只記標題、丟掉片段」的規則。台灣常用的 Safari 也不例外:Mac 上走「瀏覽記錄 → 最近關閉的項目」,iPhone 則在分頁畫面長按加號,打開「最近關閉的標籤頁」。名稱不一樣,留下的仍是關掉前那一串完整網址。

這和 HTTP 請求不是同一層。IETF RFC 3986 §3.5 把 fragment 定義成用戶端識別,不參與伺服器對 URI 的處理。所以 UsePwd 的存取日誌裡看不到 # 後面的金鑰,這一點已經在URL 的 # 片段為什麼不會出現在伺服器日誌裡寫過。本篇要補的是另一層:片段不進請求,不等於片段不進你自己的瀏覽器紀錄。關掉分頁只結束了這一次繪製,沒有自動擦掉工作階段紀錄裡的那條完整網址。

先記一句

「伺服器看不到金鑰」和「這台電腦還能把金鑰找回來」可以同時成立。前者看網路面板裡的請求列,後者看「最近關閉的分頁」還原後的網址列。

02 / 還原

最近關閉的分頁為什麼 帶著 #

還原不是重新去搜尋引擎裡找這個站點,而是把關掉前那一條網址再導覽一次。

在 Chrome 或 Edge 裡按 Ctrl+Shift+T,或打開選單裡的「記錄 → 最近關閉的分頁」,瀏覽器取出剛才那條工作階段紀錄,按裡面保存的 URL 打開。Google 說明把這組快速鍵寫成「依照關閉順序重新開啟先前關閉的分頁」,見 Chrome《鍵盤快速鍵》。Firefox 的「最近關閉的分頁」同樣從 Session Store 裡選一條紀錄,並把當時活動歷史項的 URL 當作重新開啟的目標。片段是 URL 的一部分,不是頁面標題旁邊的裝飾;還原時沒有單獨的步驟去把它剝掉。

長期瀏覽紀錄和工作階段紀錄也不完全是同一份資料。Chromium 寫進歷史資料庫時,會去掉網址裡的使用者名稱和密碼,但原始碼裡這一步並沒有清掉 fragment。轉換函式見 Chromium GurlToDatabaseUrl。因此 chrome://history 裡出現帶 # 的閱後即焚網址,並不反駁「請求裡沒有片段」:歷史庫記的是你造訪過的完整字串,請求列裡仍然只有 s.html?id={編號}

右鍵「複製分頁」走的是另一條捷徑。Chromium 寫明,複製分頁或在新分頁裡執行後退、前進、重新整理時,會直接複製導覽項,而不是先寫成檔案再讀回來。複製出來的新分頁網址列裡,通常仍是關掉前那一串,包括 # 和金鑰。共用電腦上這比「到紀錄頁裡翻」更快:旁邊的人不必會查紀錄,只要複製分頁就能拿到同一條連結。

HTTP 請求
不帶 #

發給伺服器的是 s.html?id=編號。網路面板和存取日誌裡看不到金鑰。

工作階段紀錄
帶著完整網址

最近關閉的分頁、當機還原、複製分頁,用的是關掉前那一條網址。

長期瀏覽紀錄
可能仍含 #

歷史庫會去掉使用者名稱和密碼,不會只因為有片段就拒絕記錄。

無痕視窗是一條能當場對照的例外,但不要讀成「無痕等於金鑰已銷毀」。同一個無痕視窗還開著時,Ctrl+Shift+T 往往仍能還原剛關掉的分頁,網址列裡的 # 也還在。只有最後一個無痕視窗也被關掉之後,這次工作階段裡的「最近關閉的分頁」才會一起丟掉。Safari 的私密瀏覽更乾脆:視窗一關,這次造訪通常不會進「最近關閉的項目」。要核對的是「視窗還在不在、是不是私密工作階段」,不是「圖示是不是無痕」。

03 / 同步

書籤和同步還會 送到哪

「最近關閉的分頁」只是本機第一條捷徑。同一帳號下的書籤和已開啟分頁,可能把同一串網址帶到另一台裝置。

把閱讀頁加進書籤時,瀏覽器保存的是當時網址列裡的字串。星星按鈕不會先問「# 後面是不是金鑰」,再決定只存路徑。之後在任何一台打開了書籤同步的裝置上點開這一條,網址列會再次出現完整連結。Apple 說明,為 Safari 打開 iCloud 之後,書籤和已開啟的標籤頁會存進 iCloud,並在 iPhone、iPad 和 Mac 之間保持更新;書籤還會同步到安裝了 Windows 版 iCloud 的電腦。說明見 Apple《在所有裝置上為 Safari 設定 iCloud》

Chrome 把「記錄和分頁」寫成一類可開關的同步項。打開之後,已開啟的分頁可以在「記錄 → 其他裝置上的分頁」裡看到。說明見 Chrome《在所有裝置上取得書籤、密碼等》。企業文件把「開啟的分頁」寫成包含這些分頁的 URL、順序、固定狀態和視窗位置。Chrome 的「傳送到你的裝置」(Send Tab to Self)在同步紀錄裡寫入的是完整 GURLspec(),普通 # 片段會跟著一起序列化,而不是先被剝掉。實作見 Chromium SendTabToSelfEntry

分享選單不能和書籤當成同一件事。有人在 iPad 的 Safari 裡用系統分享把帶片段的網址發到郵件,發出去的字串有時只剩到 # 之前;從網址列全選複製則通常能保住片段。這條差異說明:不要用「我點過分享」來判斷金鑰在不在,而要用接收方或另一台裝置網址列裡實際出現的字元來判斷。聊天預覽抓取停在標題層,是另一篇文章;完整連結一旦進了書籤或同步,走的已經不是預覽機器人。

不要讀反

開了同步,不等於 Google 或 Apple 能解開密文:它們同步的是網址字串,不是 UsePwd 伺服器上的明文。風險在於「另一台已登入同一帳號的裝置也能開啟這條連結」,不在於「同步服務代替你點了開啟並檢視」。

04 / 分層

從本頁清除和關掉分頁 差在哪

閱讀頁上的「從本頁清除」會改目前這條工作階段紀錄;只按關閉按鈕,不會走這一步。

UsePwd 的閱後即焚把金鑰放在 s.html?id={id}#{key}# 之後。建立和閱讀都開啟即用,雙方都不用註冊。目前分頁用 Web Crypto 按 AES-256-GCM 加密或解密,明文上限 32 KB;上傳欄位只有密文、過期時間和閱讀次數。過期時間可選 1 小時、24 小時、7 天,或「僅閱後焚毀」;閱讀次數 1–10,預設 1。伺服器只暫存密文,看不到明文,也沒有帳號可以按使用者找回。

接收方開啟閱讀頁時,頁面先詢問密文還在不在,這一步不消耗次數。點了「開啟並檢視」之後,瀏覽器才取回密文,並在本機用 # 後的金鑰解密。解密成功後,網址列裡的片段預設還在。關掉分頁或離開頁面時,閱讀頁會清掉文字框裡的明文,但不會自動改掉網址。只有點了「從本頁清除」,頁面才會呼叫 history.replaceState,把目前網址收成「路徑 + 查詢參數」,去掉 # 及其後面的金鑰。WHATWG 把 replaceState 定義成取代目前這條工作階段紀錄,而不是再追加一條。清掉之後再關分頁,「最近關閉的分頁」還原的就是已經沒有金鑰的網址。

伺服器上的密文是否已刪除,仍然只取決於建立時設定的次數和過期時間。清掉本頁明文,不會替你多燒一次,也不會少燒一次。次數還沒用盡時,誰拿到完整連結,誰仍可能再點「開啟並檢視」。次數用盡後,完整連結只能打開焚毀態,但工作階段紀錄、書籤和聊天紀錄裡那串網址還在。把閱後即焚連結貼進會產生預覽的聊天之後次數為什麼不一定被用掉,見把閱後即焚連結貼進會產生預覽的聊天之後,閱讀次數為什麼不一定已經被用掉。本篇補的是接收方自己的瀏覽器紀錄,不是頻道裡的卡片。

只關掉分頁
網址常還在

明文框被清掉,工作階段紀錄仍可能帶著 #。還原後網址列裡還能看見金鑰。

從本頁清除
目前紀錄去掉 #

明文和片段都從這條紀錄裡拿掉。再還原,通常只剩 ?id=

密文已焚毀
解不開正文

再開啟只會看到焚毀態。本機和聊天裡那串網址不會因此自動消失。

05 / 核對

當場怎麼 核對還原

目標不是證明「所有瀏覽器永遠都會同步片段」,而是證明:在你正在用的這台瀏覽器裡,關掉分頁之後金鑰還在不在網址列。

  1. 01
    準備一條不會用於真實交接的測試內容

    不要寫入正在使用的 API Key 或登入密碼。打開閱後即焚,輸入例如 ClosedTab-20260911,次數保持預設 1,過期保持 24 小時。頁面開啟即用。下面的步驟只為對照工作階段紀錄,不把這段字交給同事當正式金鑰。

  2. 02
    用完整連結開啟閱讀頁,先不要點「開啟並檢視」

    產生後應看到 s.html?id=# 兩段。在目前瀏覽器開啟,頁面應停在「密文還在」。看一眼網址列,確認 # 後面有一串金鑰。按 F12 打開網路面板:應能看到對狀態介面的請求,請求 URL 裡不應出現 # 後面那一段。

  3. 03
    關掉這個分頁,再從最近關閉的分頁打開

    關閉分頁。在 Windows 或 Linux 上按 Ctrl+Shift+T,在 macOS 上按 +Shift+T。也可以走選單「記錄 → 最近關閉的分頁」;Safari 則走「瀏覽記錄 → 最近關閉的項目」。還原後看網址列:常見結果是 # 和金鑰都還在,頁面再次停在「密文還在」。若這裡金鑰已經不見,記下你點過的是「從本頁清除」還是只按了關閉,兩步不是同一個動作。

  4. 04
    需要時再對照書籤或另一台已登入裝置

    把同一條測試連結加進書籤,或在已打開「記錄和分頁」同步的 Chrome 裡查看「其他裝置上的分頁」。另一台裝置若出現同一條網址,核對的是完整字串裡有沒有 #,不是頁面標題。Safari 開了 iCloud 標籤頁時,用另一台已登入同一 Apple 帳號的裝置做同樣的對照。測的是你自己的帳號和瀏覽器,不要把結果寫成「所有廠商都必然同步片段」。

  5. 05
    最後才點「開啟並檢視」,再試一次「從本頁清除」

    現在點按鈕,確認測試原文出現。接著點「從本頁清除」,確認網址列不再帶 #。再關掉分頁並還原:常見結果是還原後的網址只剩編號,缺少金鑰,閱讀頁會提示缺金鑰。這一步用來對照「關分頁」和「先清除再關分頁」不是同一狀態。測完丟掉這條連結,不要改派給真實接收方。

若你接下來要把新金鑰交給另一個人,不要先用真實金鑰練習「關分頁再開啟」。測試內容和正式內容分開。正式交接仍然走閱後即焚;環境變數外洩後的第二輪風險,見雲端平台環境變數被拖走之後,新金鑰為什麼不該再發到聊天視窗。那篇寫的是「不要把 API Key 本身貼進可搜尋的紀錄」;本篇寫的是「完整連結進了瀏覽器紀錄之後,關分頁為什麼不夠」。

06 / 邊界

找回來之後 擋不住什麼

把「我能從最近關閉的分頁找回金鑰」讀成「只要關了分頁,別人就拿不到」,會漏掉幾條同樣能核對的邊界。

能按快速鍵還原分頁的人,是這台瀏覽器設定檔的使用者。共用電腦、未鎖螢幕的工位、借出去還沒退出登入的瀏覽器,都會讓「最近關閉的分頁」變成第二條取鏈通道。清掉最近關閉的清單、清掉瀏覽紀錄,擋得住這條捷徑,擋不住已經複製到聊天、工單或截圖裡的完整網址。閱後即焚限制的是伺服器上密文的壽命和次數,不是本機紀錄裡那串網址還能被誰看見。

次數用盡之後,把連結從紀錄裡再打開,通常只能看到焚毀態。這不能理解成「紀錄已經安全」。管理員、同事或你自己仍然能從那串網址讀出:曾經存在過一條編號、曾經有人用片段當金鑰。需要長期保存或多裝置同步時,應使用專門的密碼管理器。UsePwd 沒有帳號和密碼庫,也不能按使用者找回遺失的連結。身分說明見關於

檔案是第三條路徑。單檔不超過 5 GB 的本機備份,走檔案加密盒,輸出 .lock / .enc,檔案預設不上傳。口令本身用密碼產生器在 6–128 字元之間產生,再用密碼檢測看強度。這些頁面和本篇一樣開啟即用。不要把「片段不進伺服器日誌」理解成「關分頁等於銷毀金鑰」:日誌、工作階段紀錄和聊天紀錄不是同一層。

07 / 問答

關掉分頁之後 常被問到的

下面四條只回答本篇的邊界,不重複建立頁上的按鈕說明。

關掉分頁金鑰是不是就沒了 01 通常不是。最近關閉的分頁還原的是完整網址,# 後面的金鑰常常還在網址列。
這和伺服器日誌裡沒有 # 矛盾嗎 02 不矛盾。請求帶不走片段,工作階段紀錄仍保存你在本機看到的完整網址。
無痕模式會不會自動清掉 03 同一個無痕視窗還開著時,仍可能還原剛關掉的分頁。只有最後一個無痕視窗關掉後,這次工作階段才一起丟掉。
建立和閱讀要註冊嗎 04 不要。開啟即用。頂欄右側只有語言切換,沒有登入或密碼庫入口。
08 / 下一步

讀完去 核對一次關閉和還原

文章回答「關掉分頁之後,金鑰為什麼還能從最近關閉的分頁找回來」。要當場產生一條不用於真實交接的測試連結再關一次分頁,打開閱後即焚即可,不必先註冊。