Erkennen der Windows 11- und CPU-Architektur mithilfe von User-Agent Clienthinweisen
Websites können zwischen Benutzern auf Windows 11 und Windows 10 unterscheiden und die CPU-Architektur des Geräts mithilfe von User-Agent ClientHinweisen (UA-CH) erkennen. Das format User-Agent Clienthinweise wird von Browsern verwendet, um Benutzer-Agent-Informationen für Websites bereitzustellen.
Websites können auch die Benutzer-Agent-Informationen verwenden, die vom Browser gesendet werden, um Informationen wie die folgenden zu erkennen:
- Die Browsermarke.
- Die Versionsnummer des Browsers.
- Die Geräteplattform, auf der der Browser ausgeführt wird.
Es gibt zwei Ansätze für Websites, um auf Benutzer-Agent-Informationen zuzugreifen:
- User-Agent Zeichenfolgen (Legacy).
- User-Agent Clienthinweise (empfohlen).
Ausführliche Informationen zu diesen beiden Ansätzen finden Sie unter Erkennen von Microsoft Edge über Ihre Website.
In Microsoft Edge (und auch in Google Chrome) können Websites zwischen Benutzern auf Windows 11 und Windows 10 unterscheiden und die CPU-Architektur des Geräts über User-Agent ClientHinweise (UA-CH) erkennen. Diese Informationen finden Sie in den folgenden UA-CH-Anforderungsheadern:
Kopfzeilenfeld | Werte, die Windows 10 angeben | Werte, die Windows 11 angeben |
---|---|---|
Sec-CH-UA-Platform |
Windows |
Windows |
Sec-CH-UA-Platform-Version |
Werte zwischen 1.0.0 und 10.0.0 |
13.0.0 und höher |
User-Agent Zeichenfolgen werden nicht aktualisiert, um zwischen Windows 11 und Windows 10 zu unterscheiden oder zwischen CPU-Architekturen zu unterscheiden. Es wird nicht empfohlen, User-Agent Zeichenfolgen zum Abrufen von Benutzer-Agent-Daten zu verwenden. Browser, die User-Agent Clienthinweise nicht unterstützen, können nicht zwischen Windows 11 und Windows 10 oder zwischen CPU-Architekturen unterscheiden.
Browser, die User-Agent Clienthinweise unterstützen
Die folgende Tabelle zeigt, welche Browser die Unterscheidung zwischen Windows 11 und Windows 10 sowie zwischen verschiedenen CPU-Architekturen unterstützen.
Browser | Unterstützt Differenzierung über User-Agent Clienthinweise? |
---|---|
Microsoft Edge 94+ | Ja |
Chrome 95+ | Ja |
Opera | Ja |
Firefox | Nein |
Internet Explorer 11 | Nein |
Beispielcode zum Erkennen von Windows 11
Der folgende Code erkennt Windows 11:
navigator.userAgentData.getHighEntropyValues(["platformVersion"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
if (majorPlatformVersion >= 13) {
console.log("Windows 11 or later");
}
else if (majorPlatformVersion > 0) {
console.log("Windows 10");
}
else {
console.log("Before Windows 10");
}
}
else {
console.log("Not running on Windows");
}
});
Beispielcode zum Erkennen von ARM oder x86
Verwenden Sie die Erkennung der CPU-Architektur, damit Ihre Website automatisch die Version Ihrer App herunterlädt, die speziell für die CPU des Benutzers erstellt wurde.
Die CPU-Erkennung ist besonders für ARM-basierte Geräte hilfreich, sodass ein Kunde, der ein ARM-Gerät verwendet, automatisch die native ARM-Version einer Anwendung herunterlädt. Dies verhindert, dass der Benutzer versehentlich eine App installiert, die für x86 erstellt wurde, und dann aufgrund der Emulation eine verringerte Leistung aufweist.
Der folgende Code erkennt die CPU-Architektur:
navigator.userAgentData.getHighEntropyValues(["architecture", "bitness"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
if (ua.architecture === 'x86') {
if (ua.bitness === '64') {
console.log("x86_64");
}
else if (ua.bitness === '32') {
console.log("x86");
}
}
else if (ua.architecture === 'arm') {
if (ua.bitness === '64') {
console.log("ARM64");
}
else if (ua.bitness === '32') {
console.log("ARM32");
}
}
}
else {
console.log("Not running on Windows");
}
});
Optimieren der Erkennungsleistung mit Critical-CH
Derzeit müssen Websiteserver den Accept-CH
Antwortheader an den Browserclient senden, um höhere Entropiefelder anzufordern, die Sec-CH-UA
nicht standardmäßig im Header gesendet werden. Das folgende Diagramm zeigt den Browser, der Anforderungsheader an den Server sendet, einschließlich user agent: <UA string>
und empfängt Antwortheader, einschließlich Accept-CH: sec-ch-ua-platform
.
Während dieser ersten Anforderung zeichnet der Client die Accept-CH
Einstellungen auf, und bei nachfolgenden Anforderungen wird standardmäßig eingeschlossen sec-ch-ua-platform
.
Um diesen Flow weiter zu optimieren, kann der neue Critical-CH
Header zusätzlich zum Accept-CH
Header verwendet werden, um den Anforderungsheader sofort erneut auszugeben, ohne dass eine Seite neu geladen werden muss. Das folgende Diagramm zeigt den Browser, der Anforderungsheader an den Server sendet, einschließlich user agent: <UA string>
und empfängt Antwortheader, einschließlich Accept-CH: sec-ch-ua-platform
und Critical-CH: sec-ch-ua-platform
. Der Browser sendet dann sofort Anforderungsheader an den Server.
Ab Microsoft Edge Version 96 können Sie den neuen Critical-CH
Header verwenden, um gewünschte Header mit hoher Entropie mit optimierter Leistung zu erhalten.
Denken Sie daran, dass Critical-CH
und Accept-CH
Einstellungen beibehalten werden, bis Sitzungscookies gelöscht werden oder bis ein Benutzer Websitedaten oder Cookies für einen bestimmten Ursprung löscht. Weitere Informationen zu Critical-CH
finden Sie unter Zuverlässigkeit von Clienthinweisen.
Erkennen bestimmter Windows-Versionen
Die Definition der Plattformversionen, die von der navigator.userAgentData.getHighEntropyValues
API für den "platformVersion"
Hinweis (und über den Sec-CH-UA-Platform-Version
-Header) zurückgegeben werden, wird im Bericht "User-Agent ClientHinweise für die Communitygruppe" angegeben. Ab Windows 10 basiert der Wert auf der Windows.Foundation.UniversalApiContract-Version.
Um bestimmte Versionen von Windows zu erkennen, verwenden Sie die folgenden Werte für platformVersion
in User-Agent Clienthinweise:
Version | Komponente der ersten Version des platformVersion |
---|---|
Win7/8/8.1 | 0 |
Win10 1507 | 1 |
Win10 1511 | 2 |
Win10 1607 | 3 |
Win10 1703 | 4 |
Win10 1709 | 5 |
Win10 1803 | 6 |
Win10 1809 | 7 |
Win10 1903 | 8 |
Win10 1909 | 8 |
Win10 2004 | 10 |
Win10 20H2 | 10 |
Win10 21H1 | 10 |
Win10 21H2 | 10 |
Win11 | 13+ |