一份「我在使用什麼瀏覽器」報告,是一份透明的讀數,呈現你的瀏覽器自願暴露給任何網頁的身分欄位,包括回報的品牌清單、平台、行動裝置提示、語言、Cookie 設定,以及原始的使用者代理相容性字串。現代瀏覽器透過 User-Agent Client Hints 決定要分享哪些資訊——這是一個結構化的介面,會回傳帶有主要版本號的品牌清單、平台字串與行動裝置提示;而較舊的瀏覽器則回退到網站數十年來一直在讀取的、冗長而雜亂的 navigator.userAgent 相容性字串。一個誠實的工具會同時讀取這兩者,僅移除眾所周知、無實質意義的 GREASE 風格預留項目,逐字保留原始的使用者代理,並在瀏覽器未揭露有用的產品名稱時,寫下清楚的「未揭露瀏覽器名稱」訊息。目標是呈現瀏覽器選擇回報的內容、將其標示為報告而非裁決,並讓自信的產品猜測退出流程。這種觀察與推論之間的分離,正是一份逐欄位的有用讀數與脆弱的模式比對猜測之間的差異所在。

為什麼「我在使用什麼瀏覽器」這個問題比看起來更難
大多數人期待一個簡單的答案:開啟一個工具,取得產品名稱與版本。現實更為混亂。舊式的 navigator.userAgent 字串原本是個簡短識別碼,但數十年來為了協助網站偵測早已不存在的瀏覽器,逐步累積了歷史相容性標記。一段現代的 Chrome 字串可能同時包含 Mozilla、AppleWebKit、Chrome、Safari 以及一個引擎版本於同一區塊中,即使實際執行的產品僅有其中之一。要將這段字串解析為一個自信的答案,需要一份持續維護、能把子字串對應到版本的模式表;即便是一份良好的模式表,也可能在使用者代理被縮減、偽造、嵌入於 webview 中,或被擴充套件修改時遭到誤導。
User-Agent Client Hints 的引入是為了解決這個問題,改為暴露結構化欄位,而非自由格式的字串。支援此介面的瀏覽器會以有序的名稱與版本配對清單形式回傳 navigator.userAgentData.brands、一個 navigator.userAgentData.platform 字串,以及一個 navigator.userAgentData.mobile 布林值。瀏覽器也會刻意插入一個 GREASE 風格的預留品牌,以避免程式碼假設固定的清單或順序。結果是更豐富的訊號,但它仍然取決於瀏覽器選擇暴露的內容,因此正確的問題應是「我的瀏覽器回報了什麼?」而非「我擁有什麼瀏覽器?」
一份透明的瀏覽器報告應該顯示的欄位
一份誠實的報告會將瀏覽器提供的每個欄位分開呈現,附上其來源與限制。「我在使用什麼瀏覽器」工具遵循這項契約:每個值都在本地讀取、清楚標示,且絕不會被重新解析為一個自信的產品名稱。下表摘要說明每個欄位的意義以及可能誤導之處。
| 欄位 | 來源 | 誠實的意義 | 常見限制 |
|---|---|---|---|
| 回報的品牌 | navigator.userAgentData.brands | 瀏覽器回傳的品牌與主要版本配對,已移除 GREASE 風格的預留項目 | 僅在 client-hint 介面可用時才會出現 |
| 平台 | client-hint 平台或 navigator.platform | 瀏覽器選擇回報的概括作業系統標籤 | 可能被凍結、縮減、以舊式格式呈現,或基於相容性而選擇 |
| 行動裝置提示 | navigator.userAgentData.mobile | 瀏覽器在實作 client hints 時所傳送的布林值 | 並非螢幕尺寸推測、觸控測試,或手機的證明 |
| 語言 | navigator.language | 瀏覽器的第一語言偏好 | 可能與內容偏好、位置、鍵盤或帳號不同 |
| Cookies 已啟用 | navigator.cookieEnabled | 瀏覽器回報的概括 Cookie 設定 | 並不保證每次 Cookie 寫入都會成功 |
| 原始使用者代理 | navigator.userAgent | 完整的相容性字串,逐字保留 | 含有誤導性的標記;並非經驗證的身分 |
如何閱讀「我在使用什麼瀏覽器」報告
在你目前的瀏覽器中開啟 「我在使用什麼瀏覽器」 頁面。這些欄位會在本地載入,無需任何上傳。請依下列順序檢視報告,以了解你的瀏覽器選擇暴露了哪些內容。
- 檢視回報的品牌清單,並留意頁面誠實指出瀏覽器名稱未揭露的情況。
- 將平台、行動裝置提示、語言、Cookie 設定以及原始的相容性使用者代理字串,與你預期的內容進行比對。
- 選擇「複製瀏覽器報告」並在進行問題排查時一併附上重現步驟,但不要將其視為經驗證的身分。
如果品牌清單顯示類似「Not A Brand」或「Not.A/Brand」這類像預留項目的名稱,請將其視為刻意的 GREASE 項目並予以忽略。其餘依回報順序排列的項目,才是你瀏覽器實際選擇公布的品牌與版本配對。若某個品牌名稱看起來不熟悉或重複,這也是正常的;有些瀏覽器會附帶多個項目,而此工具會保留其順序,而非重新排列。
當頁面顯示「未揭露瀏覽器名稱」時
某些瀏覽器——尤其是較舊的版本、強化隱私的分支版本或 webview——根本沒有實作 User-Agent Client Hints,或是回傳的品牌清單中每一個項目都是 GREASE 風格的預留項目。發生這種情況時,「我在使用什麼瀏覽器」工具會拒絕從舊式字串中虛構一個產品,而是改為顯示清楚的「未揭露瀏覽器名稱」訊息。這是一項刻意的設計選擇。
將舊式的 navigator.userAgent 模式比對為一個自信的產品與精確版本,需要一份持續維護的解析器,必須了解歷史標記、版本格式、行動與桌面裝置後綴,以及偽造手法。即便是一個良好的解析器,也可能被縮減的字串、擴充套件、企業代理伺服器或遠端瀏覽器服務所擊敗。回報「未揭露」比猜測更誠實,也能引導你進行下一個可靠的檢查:開啟瀏覽器的「關於」或設定畫面以查看已安裝的產品與版本。
當網站故障時使用複製的報告
支援團隊與錯誤回報仍然會索取原始的使用者代理字串,因為它是大多數網頁伺服器唯一會記錄的欄位。「我在使用什麼瀏覽器」工具會逐字保留該字串,讓你無需轉譯即可貼上。當你提交回報時,請將複製的區塊視為不透明的相容性文字,而非身分的證明,並搭配重現細節一併提供。
- 確切的失敗 URL 以及你觀察到問題的時間,以你的本地時區為準。
- 重現步驟,包括任何在失敗前發生的登入、重新導向或輸入。
- 故障行為的螢幕擷圖或簡短的螢幕錄影。
- 你的擴充套件狀態,特別是廣告阻擋器、隱私工具、翻譯浮層與開發人員覆寫。
- 無痕模式或不同的設定檔是否會改變行為,這通常指向擴充套件或儲存的資料。
如果真正的問題是某個特定的 Web API 是否受到支援,請在網站的控制台中執行功能偵測,而非從品牌標籤進行推論。回報的品牌是名稱而非能力,且安全性狀態存在於瀏覽器自身的「關於」畫面中,而非任何它所傳送的字串。如果你希望了解基於解析器的偵測工具會如何以不同方式對應你的字串,請與一個以 client hints 為優先的偵測工具進行比較,該工具拒絕依賴舊式的標記順序。
隱私與僅限本地的行為
報告中的每個欄位都是在頁面載入後於本地讀取。不會上傳任何內容、不會被納入伺服器記錄進行指紋辨識,也不會由小工具本身保存。「複製瀏覽器報告」動作只會在你點擊後寫入剪貼簿,期間沒有任何背景指令碼蒐集你的輸入。你可以開啟網路分頁並觀察外送請求來驗證這一點;你應該只會看到載入頁面所需的靜態資源。
這個範圍明確的契約值得再次重申。這個工具以透明方式呈現瀏覽器提供的欄位,僅移除已知的無意義品牌預留項目,保留原始值,並在產品名稱未揭露時使用誠實的備援方案。它不維護龐大的使用者代理模式表,不聲稱能識別已安裝的應用程式,也不會判斷 Cookie 或功能在某個特定網站上是否真的有效。這個有限的範圍,正是讓你在排查版面錯誤、登入迴圈或永遠無法開始的下載時,可以放心保持開啟的原因。
延伸閱讀:線上計分板解說:規則、按鈕與限制。