從您的網站偵測 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-UA
、 Sec-CH-UA-Mobile
和 Sec-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.0
和 12.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 Edge
和 Google 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 傳送的新使用者代理程式值,而不是特定網站的預設使用者代理程式。 若要顯示目前套用的使用者代理程式覆寫清單:
開啟 Microsoft Edge Beta 或穩定通道。
移至
edge://compat/useragent
。
Microsoft Edge Canary 和 Dev 通道目前不會收到使用者代理程式覆寫。 Microsoft Edge Canary 和 Dev 通道提供使用預設 Microsoft Edge 使用者代理程序的環境。 使用 Microsoft Edge Canary 和 Dev 通道,在您的網站上重現預設 Microsoft Edge 使用者代理程式所造成的問題。
若要關閉 Microsoft Edge Beta 或穩定通道中的使用者代理程式覆寫:
開啟命令提示字元。 例如,在 Windows 搜尋文字框中輸入 cmd ,然後選取 命令提示字元 應用程式。
複製下列程式代碼:
--disable-domain-action-user-agent-override
使用複製的程式代碼執行 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