對於「我正在使用什麼瀏覽器」這個問題,最誠實的簡短回答完全取決於瀏覽器選擇告訴網頁什麼內容。相較於脆弱的 user-agent 解析工具,一個透明的替代方案是只讀取瀏覽器本身提供的欄位——回報的品牌清單、平台、行動裝置提示、語言、Cookie 設定,以及原始的 user-agent 字串——而不從權杖順序臆造出自信的產品名稱。這種方法不會對相容性字串執行猜測的產品與版本對應表,而是直接顯示瀏覽器提供的數值。當瀏覽器沒有公開有意義的品牌時,網頁會誠實地標示出來,而不是捏造一個結果。每個欄位都是在頁面載入後於本機讀取,不會上傳、不會被指紋化進伺服器紀錄,也不會被持久保存;而剪貼簿存取只會在你按下 Copy browser report 之後發生。介面會精確顯示瀏覽器回報的內容,包含保留為不透明相容性權杖的原始 user-agent 字串,讓你能在不將其誤稱為已驗證身分的情況下,複製到支援單中。這份契約範圍既窄且誠實:顯示瀏覽器所回報的內容,僅移除已知的無意義品牌佔位符,並在沒有任何有意義內容可顯示時退回為「未公開」。

what browser am i using alternative
以 Client Hints 為基礎的「我正在使用什麼瀏覽器」替代方案

為什麼人們會尋找瀏覽器偵測的替代方案

許多「我的瀏覽器是什麼」頁面仰賴一份龐大且持續維護的 user-agent 字串模式對應表。它們取得原始的 navigator.userAgent,在空格與斜線處切開,並嘗試將其對應回特定的瀏覽器與精確版本。這種模式對應表的做法存在實際問題,促使人們搜尋不同的方案。 首先,user-agent 字串是歷史性的相容性字串,並非誠實的身分證明。屬於 Chrome 家族的字串可能會提到 Mozilla、AppleWebKit、Chrome、Safari 及其他權杖,但這並不代表真的有五個獨立的產品在執行。一個依據出現順序自信地從中挑選名稱的解析器,所執行的只是一項脆弱的啟發式判斷,而不是在讀取身分。 其次,這些字串可能被縮減、偽造、由 webview 嵌入、被隱私工具凍結,或經由代理伺服器與遠端瀏覽器服務路由。即便完全是同一個 Chrome 安裝,根據設定不同,也可能呈現出截然不同的 navigator.userAgent 值。 第三,一個自信的結果往往會掩蓋資料的缺漏。如果對應表不認得該字串,頁面仍可能產生一個看起來在 UI 中很確定的最佳猜測標籤。該標籤接著會被複製到錯誤報告中,並被從未看過原始字串的讀者所信任。 對想要替代方案的人來說,誠實的做法是把回報的數值直接顯示出來,把未公開的部分標示出來,並讓讀者自行解讀原始的相容性字串。這正是這類工具設計所要填補的落差。

此替代方案在一個頁面上顯示的欄位

What Browser Am I Using 工具對於希望以不同方式進行瀏覽器偵測的人來說,是一個透明的替代方案。它不會產生單一的猜測標籤,而是將瀏覽器本身選擇公開的數個離散數值並排顯示於同一個頁面上。 可見的欄位包括:來自 User-Agent Client Hints 介面的品牌清單(已將刻意無意義的「Not A Brand」GREASE 佔位符過濾掉)、回報的平台字串、行動裝置提示(以布林值提供時)、navigator.language 值、瀏覽器是否回報啟用了 Cookie,以及完整的原始 navigator.userAgent 相容性字串。Copy browser report 會將這些相同的可見數值匯出為純文字。 此頁面不會嘗試將這些數值對應到宣稱的產品,不會維護 user-agent 模式對應表,也不會在品牌清單為空或不存在時憑空捏造版本。若瀏覽器未公開有意義的品牌,頁面會顯示「Browser name not exposed」,而不是進行猜測。
做法它所宣稱的內容它實際讀取的內容失敗模式
User-agent 模式解析器「你正在使用 Chrome 120」來自維護對應表的權杖子字串比對對偽造、凍結、webview 及歷史性權杖極為脆弱
Client Hints 讀取器(本工具)「已過濾佔位符的回報品牌」直接讀取 navigator.userAgentData.brands在介面不存在時誠實地顯示「未公開」
僅原始字串完整的 navigator.userAgent 文字逐字的相容性字串讀者必須自行解讀歷史性權杖

這個比較說明了透明的替代方案為何有用:以解析器為基礎的頁面看起來可能很權威,但實際上卻是自信地犯錯;而逐欄位讀取的方式則讓每個數值的來源一目了然。

三個步驟取得報告

此頁面是為快速的逐欄位讀取所設計,而非用於設定。三個步驟就足以產生一份可附加於錯誤報告或在聊天中分享的報告。
  1. 在你想要檢查的瀏覽器中開啟 What Browser Am I Using。所有欄位都是在頁面載入後於本機讀取,因此請使用與你正在調查的情境相同的分頁、設定檔和無痕模式設定。
  2. 在畫面上檢視品牌清單、平台、行動裝置提示、語言、Cookie 設定及原始 user-agent 字串。請注意,當瀏覽器未實作 Client Hints 或僅提供佔位符品牌時,「Browser name not exposed」就是誠實的結果。
  3. 選擇 Copy browser report 將相同的可見數值匯出為純文字,然後將結果連同重現步驟一起貼到你的錯誤報告、工單或聊天中。請將複製的數值視為不透明的相容性資料,而非已驗證的身分。

若相同的欄位在另一個分頁或另一個設定檔中看起來不同,該差異本身就是值得納入報告中的資訊。

不過度自信地解讀每個欄位

每個欄位都有其特定的來源與特定的限制。將它們視為純粹的資料,而非最終的答案,正是這種做法有用的原因。

回報的品牌來自 navigator.userAgentData.brands,前提是瀏覽器有實作該介面。瀏覽器可能會包含一個 GREASE 佔位符,旨在防止程式碼假設固定的品牌清單或順序。該小工具僅過濾該類佔位符名稱,並依所提供的順序保留其餘的品牌與版本配對。當介面不存在或沒有保留任何有意義的品牌時,頁面會退回為「Browser name not exposed」。

平台欄位在可用時使用 Client Hints 的平台字串,否則顯示 navigator.platform。這兩個數值都可能遭到縮減、凍結,或是為相容性而被選用。它們僅是標籤,並非作業系統安裝的證明。若要更深入了解這些標籤的限制,請參閱本工具的準確度指南

行動裝置提示僅在 Client Hints 介面提供布林值時顯示。它並非螢幕尺寸的猜測、裝置型號、觸控能力測試,也無法證明瀏覽器正執行於手機上。

語言欄位來自 navigator.language,可能與你的內容偏好、實際位置、鍵盤配置或帳號設定不同。它是瀏覽器所回報的值,不一定是你預期的值。

Cookies enabled 反映的是 navigator.cookieEnabled。它代表瀏覽器一般性的回報設定,並不代表每一次 Cookie 寫入都會成功。第三方 Cookie 限制、分割化、儲存空間存取政策、無痕模式、到期時間、網域與路徑規則、同意選擇、擴充功能以及企業控管,仍可能封鎖特定的 Cookie。

原始的 user-agent 字串之所以逐字保留,是因為支援團隊與錯誤報告經常會要求它。請將其視為不透明的相容性字串,而非已驗證的身分。該字串無法證明已安裝的應用程式、可執行檔簽章、更新通道、安全性更新層級、裝置擁有者,也無法證明該字串本身是否已被修改。

何時使用複製的報告進行疑難排解

當你能將報告附加到重現步驟時,它最為有用。複製的文字並非任何事物的證明,但它能讓接收者取得該頁面所看到的精確環境,而這往往正是模糊的錯誤報告中所缺少的部分。

若你要向網站回報問題,請將複製的報告連同失敗的 URL、嘗試的時間、所採取的步驟、螢幕擷圖、擴充功能狀態,以及無痕模式是否會改變行為等資訊一起貼上。若讀者變更了任何項目(關閉擴充功能、切換設定檔、停用隱私工具),請重新載入頁面並複製新的報告。兩份不同的報告能告訴你哪個變因才是關鍵。

若你所依賴的功能涉及精確的支援瀏覽器判斷,請勿僅仰賴品牌清單。回報的品牌並不能證明對特定功能或安全性狀態的支援。可靠的下一步是在需要該功能的頁面中對所需的 Web API 進行功能偵測,並參閱瀏覽器自身的「關於」或更新畫面以確認其實際版本。若你也想對此頁面是否誠實顯示其內容進行健全性檢查,安全性操作說明涵蓋了純本機讀取的路徑。

隱私與本機處理的限制

所有欄位都是在頁面載入後於本機讀取。小工具不會上傳任何內容、不會將其指紋化進伺服器紀錄,也不會將其持久保存。剪貼簿存取只會在選擇 Copy browser report 之後發生。

這份狹窄的契約正是此工具作為替代方案值得信賴的原因:以透明的方式顯示瀏覽器所提供的欄位,僅移除已知的無意義品牌佔位符,保留原始數值,並在產品名稱未公開時使用誠實的退回機制。它不會承諾超出瀏覽器所告知的內容,也不會在底層介面缺失時悄悄捏造一個自信的答案。

此頁面刻意不維護龐大的 user-agent 模式對應表。將相容性字串對應到一個自信的產品與精確版本需要一套持續維護的解析器,且仍可能會因縮減、偽造、嵌入或隱私設定而失效。選擇僅讀取瀏覽器所提供的欄位,並標示出其中的落差,正是這個替代方案與那些看起來比其資料更權威的工具之間的區別所在。