Detectar arquitetura de Windows 11 e CPU usando dicas de cliente User-Agent

Os sites podem diferenciar os usuários em Windows 11 e Windows 10 e detectar a arquitetura da CPU do dispositivo usando User-Agent dicas de cliente (UA-CH). O formato User-Agent Dicas do Cliente é usado pelos navegadores para fornecer informações do agente de usuário aos sites.

Os sites também podem usar as informações do agente de usuário enviadas do navegador para detectar informações como:

  • A marca do navegador.
  • O número da versão do navegador.
  • A plataforma de dispositivo na qual o navegador está em execução.

Há duas abordagens para sites acessarem informações do agente de usuário:

  • User-Agent cadeias de caracteres (herdadas).
  • User-Agent Dicas do cliente (recomendado).

Para obter detalhes sobre essas duas abordagens, consulte Detectar o Microsoft Edge em seu site.

No Microsoft Edge (e também no Google Chrome), os sites podem diferenciar os usuários em Windows 11 e Windows 10 e podem detectar a arquitetura da CPU do dispositivo, por meio de User-Agent Dicas de Cliente (UA-CH). Essas informações podem ser encontradas nos seguintes cabeçalhos de solicitação UA-CH:

Campo do cabeçalho Valores que indicam Windows 10 Valores que indicam Windows 11
Sec-CH-UA-Platform Windows Windows
Sec-CH-UA-Platform-Version valores entre 1.0.0 e 10.0.0 13.0.0 e acima

User-Agent cadeias de caracteres não serão atualizadas para diferenciar entre Windows 11 e Windows 10 ou para diferenciar entre arquiteturas de CPU. Não recomendamos usar cadeias de caracteres User-Agent para recuperar dados do agente de usuário. Os navegadores que não dão suporte a User-Agent Dicas de Cliente não poderão diferenciar entre Windows 11 e Windows 10 ou entre arquiteturas de CPU.

Navegadores que dão suporte a dicas de cliente User-Agent

A tabela a seguir mostra quais navegadores dão suporte à diferenciação entre Windows 11 e Windows 10 e entre diferentes arquiteturas de CPU.

Navegador Dá suporte à diferenciação por meio de dicas de cliente User-Agent?
Microsoft Edge 94+ Sim
Chrome 95+ Sim
Opera Sim
Firefox Não
Internet Explorer 11 Não

Código de exemplo para detectar Windows 11

O código a seguir 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 exemplo para detectar ARM ou x86

Use a detecção da arquitetura da CPU para que seu site baixe automaticamente a versão do seu aplicativo criada especificamente para a CPU do usuário.

A detecção de CPU é particularmente útil para dispositivos baseados em ARM, de modo que um cliente que usa um dispositivo ARM baixe automaticamente a versão nativa do ARM de um aplicativo. Isso impede que o usuário instale inadvertidamente um aplicativo criado para x86 e, em seguida, experimentando um desempenho reduzido devido à emulação.

O código a seguir detecta a arquitetura da 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");
   }
 });

Otimizando o desempenho de detecção com Critical-CH

Atualmente, os servidores de site devem enviar o Accept-CH cabeçalho de resposta para o cliente do navegador para solicitar campos de entropia mais altos não enviados no Sec-CH-UA cabeçalho por padrão. O diagrama a seguir mostra o navegador enviando cabeçalhos de solicitação para o servidor, incluindo user agent: <UA string> e recebendo cabeçalhos de resposta, incluindo Accept-CH: sec-ch-ua-platform.

Solicitações usando apenas o cabeçalho Accept-CH

Durante essa solicitação inicial, o cliente registrará as Accept-CH preferências e as solicitações subsequentes incluem sec-ch-ua-platform por padrão.

Para otimizar ainda mais esse fluxo, o novo Critical-CH cabeçalho pode ser usado além do Accept-CH cabeçalho para reemissar o cabeçalho de solicitação imediatamente, sem a necessidade de um recarregamento de página. O diagrama a seguir mostra o navegador enviando cabeçalhos de solicitação para o servidor, incluindo user agent: <UA string> e recebendo cabeçalhos de resposta, incluindo Accept-CH: sec-ch-ua-platform e Critical-CH: sec-ch-ua-platform. Em seguida, o navegador envia cabeçalhos de solicitação para o servidor imediatamente.

Solicitações usando cabeçalhos Critical-CH e Accept-CH

Começando com o Microsoft Edge versão 96, você pode usar o novo Critical-CH cabeçalho para receber cabeçalhos de alta entropia desejados com desempenho otimizado.

Lembre-se de que e Accept-CH as preferências persistem até que os cookies de sessão sejam limpos ou até que Critical-CH um usuário desmarque dados do site ou cookies para uma determinada origem. Para obter mais informações sobre Critical-CH, consulte Confiabilidade da Dica do Cliente.

Detectar versões específicas do Windows

A definição das versões da plataforma retornadas pela navigator.userAgentData.getHighEntropyValues API para a "platformVersion" dica (e por meio do Sec-CH-UA-Platform-Version cabeçalho) é especificada no Relatório de Grupo de Grupo da Comunidade de Dicas do Cliente do Agente de Usuário. Em Windows 10 e superior, o valor é baseado na versão Windows.Foundation.UniversalApiContract.

Para detectar versões específicas do Windows, use os seguintes valores para platformVersion em User-Agent Dicas do cliente:

Versão Primeiro componente de versão do 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+