Detección de Windows 11 y arquitectura de CPU mediante sugerencias de cliente de User-Agent

Los sitios web pueden diferenciar entre los usuarios en Windows 11 y Windows 10, y detectar la arquitectura de CPU del dispositivo mediante User-Agent sugerencias de cliente (UA-CH). Los exploradores usan el formato de sugerencias de cliente User-Agent para proporcionar información del agente de usuario a sitios web.

Los sitios web también pueden usar la información del agente de usuario que se envía desde el explorador para detectar información como:

  • Marca del explorador.
  • Número de versión del explorador.
  • Plataforma del dispositivo en la que se ejecuta el explorador.

Hay dos enfoques para que los sitios accedan a la información del agente de usuario:

  • User-Agent cadenas (heredadas).
  • User-Agent sugerencias de cliente (recomendado).

Para obtener más información sobre estos dos enfoques, consulte Detección de Microsoft Edge desde su sitio web.

En Microsoft Edge (y también en Google Chrome), los sitios pueden diferenciar entre los usuarios de Windows 11 y Windows 10, y pueden detectar la arquitectura de CPU del dispositivo, a través de User-Agent sugerencias de cliente (UA-CH). Esta información se puede encontrar en los siguientes encabezados de solicitud UA-CH:

Campo de encabezado Valores que indican Windows 10 Valores que indican Windows 11
Sec-CH-UA-Platform Windows Windows
Sec-CH-UA-Platform-Version valores entre 1.0.0 y 10.0.0 13.0.0 y versiones posteriores

User-Agent cadenas no se actualizarán para diferenciar entre Windows 11 y Windows 10, ni para diferenciar entre arquitecturas de CPU. No se recomienda usar cadenas de User-Agent para recuperar datos del agente de usuario. Los exploradores que no admiten User-Agent sugerencias de cliente no podrán diferenciar entre Windows 11 y Windows 10, ni entre arquitecturas de CPU.

Exploradores que admiten sugerencias de cliente User-Agent

En la tabla siguiente se muestra qué exploradores admiten la diferenciación entre Windows 11 y Windows 10, y entre diferentes arquitecturas de CPU.

Explorador ¿Admite la diferenciación a través de User-Agent sugerencias de cliente?
Microsoft Edge 94+
Chrome 95+
Opera
Firefox No
Internet Explorer 11 No

Código de ejemplo para detectar Windows 11

El código siguiente detecta 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");
   }
 });

Código de ejemplo para detectar ARM o x86

Use la detección de la arquitectura de CPU para que el sitio web descargue automáticamente la versión de la aplicación creada específicamente para la CPU del usuario.

La detección de CPU es especialmente útil para dispositivos basados en ARM, de modo que un cliente que usa un dispositivo ARM descarga automáticamente la versión nativa de ARM de una aplicación. Esto evita que el usuario instale involuntariamente una aplicación creada para x86 y, a continuación, experimente un rendimiento reducido debido a la emulación.

El código siguiente detecta la arquitectura de CPU:

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");
   }
 });

Optimización del rendimiento de la detección con Critical-CH

Actualmente, los servidores del sitio web deben enviar el Accept-CH encabezado de respuesta al cliente del explorador para solicitar campos de entropía más altos que no se envían en el Sec-CH-UA encabezado de forma predeterminada. En el diagrama siguiente se muestra el explorador que envía encabezados de solicitud al servidor, incluidos user agent: <UA string> y que reciben encabezados de respuesta, incluidos Accept-CH: sec-ch-ua-platform.

Solicitudes que usan solo el encabezado Accept-CH

Durante esta solicitud inicial, el cliente registrará las Accept-CH preferencias y en las solicitudes posteriores se incluirán sec-ch-ua-platform de forma predeterminada.

Para optimizar aún más este flujo, el nuevo Critical-CH encabezado se puede usar además del Accept-CH encabezado para volver a emitir el encabezado de solicitud inmediatamente, sin necesidad de una recarga de página. En el diagrama siguiente se muestra el explorador que envía encabezados de solicitud al servidor, incluidos user agent: <UA string> y que reciben encabezados de respuesta, incluidos Accept-CH: sec-ch-ua-platform y Critical-CH: sec-ch-ua-platform. A continuación, el explorador envía los encabezados de solicitud al servidor inmediatamente.

Solicitudes que usan encabezados Critical-CH y Accept-CH

A partir de la versión 96 de Microsoft Edge, puede usar el nuevo Critical-CH encabezado para recibir los encabezados de alta entropía deseados con un rendimiento optimizado.

Recuerde que las preferencias y Accept-CH persisten hasta que se borran las cookies de sesión o hasta que Critical-CH un usuario borra los datos del sitio o las cookies de un origen determinado. Para obtener más información sobre Critical-CH, consulte Confiabilidad de sugerencias de cliente.

Detección de versiones específicas de Windows

La definición de las versiones de la plataforma devueltas por la navigator.userAgentData.getHighEntropyValues API para la "platformVersion" sugerencia (y a través del Sec-CH-UA-Platform-Version encabezado) se especifica en el Informe de grupo de la comunidad borrador de sugerencias de cliente del agente de usuario. En Windows 10 y versiones posteriores, el valor se basa en la versión Windows.Foundation.UniversalApiContract.

Para detectar versiones específicas de Windows, use los siguientes valores para platformVersion en User-Agent sugerencias de cliente:

Versión Componente de primera versión de la 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+