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