從您的網站偵測 Microsoft Edge

Microsoft Edge 可讓您的網站擷取使用者代理程序資訊。 您可以使用使用者代理程式資訊,正確呈現每個使用者瀏覽器的網頁。 瀏覽器提供網站偵測瀏覽器資訊的機制,例如品牌、版本號碼和主機操作系統。

您可能想要根據使用者的瀏覽器,為使用者提供不同的體驗。 例如,如果您包含如何設定 Microsoft Edge 或其他瀏覽器以與您的網站搭配使用的步驟,您可能會想要偵測瀏覽器,然後顯示適當的內容。

瀏覽器偵測的機制:

機制 伺服器端 用戶端
建議 (使用者代理程式用戶端提示) Sec-CH-UA HTTPS 標頭 navigator.userAgentData JavaScript 方法
使用者代理程式字串 (舊版) User-Agent HTTPS 標頭 navigator.userAgent JavaScript 方法

功能偵測

Microsoft 建議您盡可能偵測瀏覽器中 是否支援功能 ,而不是偵測瀏覽器。

如果您必須偵測瀏覽器,Microsoft 建議您使用 User-Agent 用戶端提示,如下所示, 以及功能偵測

User-Agent 用戶端提示

Microsoft Edge 支援 User-Agent 用戶端提示。

User-Agent 用戶端提示是解決隱私權考慮的方法,同時允許網頁偵測瀏覽器資訊,例如瀏覽器名稱、版本號碼、平臺等等。 User-Agent 字串很快就會被各種瀏覽器凍結和取代。 例如,Chrome 平臺狀態網站描述 功能:減少使用者代理程式字串資訊中的變更。

當您想要時,請採用 User-Agent 用戶端提示:

  • 判斷新的瀏覽器活動是否來自預期的使用者。
  • 如果使用者不熟悉此網站,請自定義提示或指示。

請勿使用 User-Agent 用戶端提示:

  • 封鎖 不支持的 瀏覽器。
  • 限制存取您網站上的功能。

如需詳細資訊,請參閱 W3C 社群群組草稿報告:User-Agent 用戶端提示中的規格。

User-Agent 用戶端提示 HTTPS 標頭

當 Microsoft Edge 將 HTTPS 要求傳送至伺服器時,它會傳送一組低熵 User-Agent 用戶端提示標頭。 如需詳細資訊,請參閱 低熵提示數據表。 如果伺服器需要有關瀏覽器的更細微資訊,其回應會包含 Accept-CH 標頭。 該回應標頭的值是以逗號分隔的清單,其中列出伺服器想要從瀏覽器取得的所有 Client Hints 要求標頭,例如 Accept-CH: Sec-CH-UA-Full-Version,Sec-CH-UA-Platform-Version。 下一個對伺服器的 Microsoft Edge HTTPS 要求將包含指定 User-Agent 用戶端提示標頭。

根據預設,Microsoft Edge 會以下列格式傳送 Sec-CH-UASec-CH-UA-MobileSec-CH-UA-Platform 要求標頭。

Sec-CH-UA: "Chromium";v="92", "Microsoft Edge";v="92", "Placeholder;Browser Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"

下表顯示具有範例值的所有可用提示要求標頭。

User-Agent 要求標頭 回應值 User-Agent 範例
Sec-CH-UA "Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"
Sec-CH-UA-Mobile ?0
Sec-CH-UA-Full-Version 120.0.2210.91
Sec-CH-UA-Platform Windows
Sec-CH-UA-Platform-Version 15.0.0
Sec-CH-UA-Arch x86
Sec-CH-UA-Bitness 64
Sec-CH-UA-Model Surface Pro

User-Agent 用戶端提示只會使用 HTTPS透過安全連線傳送。

User-Agent 用戶端提示 JavaScript API

您可以在用戶端使用 JavaScript 來存取 User-Agent 用戶端提示。 當您呼叫預設 navigator.userAgentData時,它會傳回下列回應。

{
  "brands": [
    {
      "brand": "Not_A Brand",
      "version":"8"
    },
    {
      "brand": "Chromium",
      "version":"120"
    },
    {
      "brand": "Microsoft Edge",
      "version":"120"
    }
  ],
  "mobile": false,
  "platform": "Windows"
}

若要傳送要求以取得更詳細的資訊,例如 platform,請使用下列程式代碼:

navigator.userAgentData.getHighEntropyValues([
  "architecture",
  "platform",
  "platformVersion",
  "uaFullVersion"
]).then(ua => {
  console.log(ua)
});

回應的格式如下:

{
  "architecture": "x86",
  "brands": [
    {
      "brand": "Not_A Brand",
      "version": "8"
    },
    {
      "brand": "Chromium",
      "version": "120"
    },
    {
      "brand": "Microsoft Edge",
      "version": "120"
    }
  ],
  "mobile": false,
  "platform": "Windows",
  "platformVersion": "15.0.0",
  "uaFullVersion": "120.0.2210.91"
}

如需詳細資訊,請參閱 NavigatorUAData:MDN 上的 getHighEntropyValues () 方法

platformVersion Hint

標頭中的User-Agent作業系統版本令牌尚未更新 Windows 11,但仍會報告 Windows NT 10.0

若要區分 Windows 10 和 Windows 11,請在 Microsoft Edge 中要求platformVersion用戶端提示。 和之間的值,包括 1.0.012.0.0 代表 Windows 10 的版本,而 或更新版本的14.0.0值則代表 Windows 11 的版本。

結合 User-Agent 用戶端提示與功能偵測

將 User-Agent 用戶端提示與 功能偵測 結合,是提供相容Web內容的有效方式。 Microsoft 建議使用此模式來:

  • 改善程式代碼可維護性。
  • 減少程式代碼弱點。
  • 減少變更為 User-Agent 字串的程式代碼中斷。

如果您需要檢查類似 Chrome 的瀏覽器,Microsoft 建議您偵 Chromium測 ,這是支援 Microsoft Edge 的引擎。

使用此方法來驗證品牌,Chromium並將偵測套用至所有受影響的 Chromium 型瀏覽器:

function isChromium() {
  for (brand_version_pair of navigator.userAgentData.brands) {
    if (brand_version_pair.brand == "Chromium"){
      return true;
    }
  }
  return false;
}

使用上述方法可避免針對特定索引上的品牌進行硬式編碼檢查。 品牌名稱的顯示訂單可能會隨著時間而變更。

如果您無法使用功能偵測,請勿使用已知 Chromium 型瀏覽器的硬式編碼清單進行驗證。 硬式編碼瀏覽器名稱的範例包括 Microsoft EdgeGoogle Chrome。 功能偵測可能無法使用,因為必須避免在更新版本中修正 Chromium 錯誤,而且難以偵測受影響的瀏覽器。

User-Agent 字串

User-Agent 字串已過期,且具有造成網站相容性問題的完整歷程記錄。

可能的話,Microsoft 建議根據 User-Agent 字串,將 Microsoft Edge 瀏覽器偵測邏輯的使用降至最低。 如果您有充分的理由可以偵測瀏覽器,Microsoft Edge 小組建議使用 User-Agent 用戶端提示 作為主要偵測邏輯。 使用者代理程式用戶端提示 也會降低瀏覽器偵測程式代碼的複雜度。

針對舊版參考,下列資訊包含在字串 User-Agent。

在 Windows 上, User-Agent HTTP 要求標頭包括:

Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0
Safari/537.36
Edg/120.0.0.0

在 Android 上 User-Agent ,HTTP 要求標頭包括:

Mozilla/5.0 (Linux; Android 10; K)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0
Mobile Safari/537.36
EdgA/120.0.0.0

方法的 navigator.userAgent 回應值使用下列格式:

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0"

平臺標識碼會根據操作系統而變更,且版本號碼會隨著時間遞增。 格式與 Chromium 使用者代理程式相同,最後新增令Edg牌。 Microsoft 選擇令 Edg 牌以避免字串所 Edge 造成的相容性問題,而字串先前用於以EdgeHTML為基礎的舊版 Microsoft Edge 瀏覽器。 令 Edg 牌也與用於 iOS 和 Android 的現有令牌 一致。

不同平臺上的 Microsoft Edge 識別符

在桌面操作系統上,Microsoft Edge 通常會由 Edg User-Agent 字串中的令牌識別。 不過,某些裝置平臺上會使用不同的 Microsoft Edge 令牌,如下所示:

平台 標識元令牌
Windows/Mac/Linux (桌面) Edg
iPhone/iPad EdgiOS
Android (Mobile/tablet) EdgA

不再支援 舊版 Microsoft Edge。 See the Microsoft Edge Legacy section for details.

將 User-Agent 字串對應至展開的瀏覽器名稱

將 User-Agent 字串標記對應至人類可讀取的瀏覽器名稱,以用於程式代碼中。 此做法在網路上很常見。 當您Edg將令牌對應至瀏覽器名稱時,Microsoft 建議使用與舊版 Microsoft EdgeHTML 瀏覽器所使用的名稱不同的名稱,以避免不小心套用不適用於 Chromium 型瀏覽器的舊版因應措施。

User-Agent 覆寫

有時候,網站無法辨識 Microsoft Edge 使用者代理程式。 因此,網站的一組功能可能無法正常運作。 當 Microsoft 收到問題類型的通知時,Microsoft 會連絡您 (網站擁有者) ,並通知您更新的使用者代理程式。

您可能需要更多時間來更新和測試網站的使用者代理程序偵測邏輯,以解決 Microsoft 所報告的問題。 為了最大化使用者的相容性,Microsoft Edge Beta 和穩定通道會使用使用者代理程式覆寫的清單。 當您更新網站時,請使用使用者代理程式覆寫。 使用者代理程式覆寫的清單是由 Microsoft 提供。

覆寫會指定 Microsoft Edge 傳送的新使用者代理程式值,而不是特定網站的預設使用者代理程式。 若要顯示目前套用的使用者代理程式覆寫清單:

  1. 開啟 Microsoft Edge Beta 或穩定通道。

  2. 移至edge://compat/useragent

Microsoft Edge Canary 和 Dev 通道目前不會收到使用者代理程式覆寫。 Microsoft Edge Canary 和 Dev 通道提供使用預設 Microsoft Edge 使用者代理程序的環境。 使用 Microsoft Edge Canary 和 Dev 通道,在您的網站上重現預設 Microsoft Edge 使用者代理程式所造成的問題。

若要關閉 Microsoft Edge Beta 或穩定通道中的使用者代理程式覆寫:

  1. 開啟命令提示字元。 例如,在 Windows 搜尋文字框中輸入 cmd ,然後選取 命令提示字元 應用程式。

  2. 複製下列程式代碼:

    --disable-domain-action-user-agent-override
    
  3. 使用複製的程式代碼執行 Microsoft Edge 應用程式,如下所示:

    {path/to/microsoft/edge.ext} --disable-domain-action-user-agent-override
    

舊版 Microsoft Edge

舊版瀏覽器考慮:

  • 不再支援 舊版 Microsoft Edge 瀏覽器。 請參閱部落格文章 New Microsoft Edge 以取代 舊版 Microsoft Edge

  • 舊版 Microsoft Edge 只能在 Windows 10 上使用。

  • 在本文所述的所有 User-Agent 機制中,唯一支援的瀏覽器特定 舊版 Microsoft Edge 機制是 User-Agent 字串。

  • 舊版 Microsoft Edge 的 User-Agent 字串包含令Edge牌。

    舊版 Microsoft Edge User-Agent 字串的完整格式範例:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582

另請參閱

使用 User-Agent 用戶端提示偵測 Windows 11