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.

Anforderungen, die nur den Accept-CH-Header verwenden

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.

Anforderungen mit Critical-CH- und Accept-CH-Headern

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-CHfinden 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+