Compartilhar via


Detetar Windows 11 e a arquitetura da CPU com sugestões de cliente User-Agent

Os sites podem diferenciar os utilizadores no Windows 11 e no Windows 10 e detetar a arquitetura da CPU do dispositivo, ao utilizar User-Agent Sugestões de Cliente (UA-CH). O formato User-Agent Sugestões de Cliente é utilizado pelos browsers para fornecer informações do agente do utilizador aos sites.

Os sites também podem utilizar as informações do agente de utilizador que são enviadas a partir do browser para detetar informações como:

  • A marca do browser.
  • O número da versão do browser.
  • A plataforma do dispositivo na qual o browser está a ser executado.

Existem duas abordagens para os sites acederem às informações do agente do utilizador:

  • User-Agent cadeias (legadas).
  • User-Agent Sugestões de Cliente (recomendado).

Para obter detalhes sobre estas duas abordagens, consulte Detetar o Microsoft Edge a partir do seu site.

No Microsoft Edge (e também no Google Chrome), os sites podem diferenciar os utilizadores em Windows 11 e Windows 10 e podem detetar a arquitetura da CPU do dispositivo, através de sugestões de cliente User-Agent (UA-CH). Estas informações podem ser encontradas nos seguintes cabeçalhos de pedido 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 carateres não serão atualizadas para diferenciar entre Windows 11 e Windows 10 ou para diferenciar entre arquiteturas de CPU. Não recomendamos a utilização de cadeias de User-Agent para obter dados do agente de utilizador. Os browsers que não suportam sugestões de cliente User-Agent não poderão diferenciar entre Windows 11 e Windows 10 ou entre arquiteturas de CPU.

Browsers que suportam sugestões de cliente User-Agent

A tabela seguinte mostra que browsers suportam a diferenciação entre Windows 11 e Windows 10 e entre diferentes arquiteturas de CPU.

Navegador Suporta a diferenciação através de sugestões de cliente User-Agent?
Microsoft Edge Sim
Chrome Sim
Opera Sim
Firefox Não
Internet Explorer 11 Não

Código de exemplo para detetar Windows 11

O código seguinte deteta 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 detetar ARM ou x86

Utilize a deteção da arquitetura da CPU para que o seu site transfira automaticamente a versão da sua aplicação criada especificamente para a CPU do utilizador.

A deteção da CPU é particularmente útil para dispositivos baseados em ARM, para que um cliente que utilize um dispositivo ARM transfira automaticamente a versão nativa do ARM de uma aplicação. Isto impede que o utilizador instale inadvertidamente uma aplicação criada para x86 e, em seguida, tenha um desempenho reduzido devido à emulação.

O código seguinte deteta 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");
   }
 });

Otimizar o desempenho da deteção com Critical-CH

Atualmente, os servidores do site têm de enviar o cabeçalho de Accept-CH resposta para o cliente do browser para pedir campos de entropia superiores não enviados no cabeçalho por predefinição Sec-CH-UA . O diagrama seguinte mostra o browser a enviar cabeçalhos de pedido para o servidor, incluindo user agent: <UA string> e a receber cabeçalhos de resposta, incluindo Accept-CH: sec-ch-ua-platform.

Pedidos que utilizam apenas o cabeçalho Accept-CH

Durante este pedido inicial, o cliente irá registar as Accept-CH preferências e os pedidos subsequentes incluem sec-ch-ua-platform por predefinição.

Para otimizar ainda mais este fluxo, o novo Critical-CH cabeçalho pode ser utilizado para além do Accept-CH cabeçalho para reeditar o cabeçalho do pedido imediatamente, sem a necessidade de recarregar uma página. O diagrama seguinte mostra o browser a enviar cabeçalhos de pedido para o servidor, incluindo user agent: <UA string> e a receber cabeçalhos de resposta, incluindo Accept-CH: sec-ch-ua-platform e Critical-CH: sec-ch-ua-platform. Em seguida, o browser envia cabeçalhos de pedido para o servidor imediatamente.

Pedidos com cabeçalhos Critical-CH e Accept-CH

Pode utilizar o cabeçalho para receber os Critical-CH cabeçalhos de entropia elevado pretendidos com um desempenho otimizado.

Lembre-se de que as preferências e Accept-CH persistem até que os cookies de sessão sejam limpos ou até que Critical-CH um utilizador limpe os dados do site ou os cookies de uma determinada origem. Para obter mais informações sobre Critical-CHo , veja Fiabilidade da Sugestão de Cliente.

Detetar versões específicas do Windows

A definição das versões da plataforma devolvidas pela navigator.userAgentData.getHighEntropyValues API para a "platformVersion" sugestão (e através do Sec-CH-UA-Platform-Version cabeçalho) é especificada no Relatório de Grupo de Comunidade de Sugestões de Cliente do Agente de Utilizador. No Windows 10 e superior, o valor baseia-se na versão Windows.Foundation.UniversalApiContract.

Para detetar versões específicas do Windows, utilize os seguintes valores para platformVersion no User-Agent Sugestões de Cliente:

Versão Componente da primeira 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+