User-Agent Client Hints e redução do UA
Navegadores baseados em Chromium enviam uma string User-Agent reduzida: os detalhes que identificavam um dispositivo com mais precisão foram congelados em valores fixos, e os dados precisos passaram para os User-Agent Client Hints (UA-CH), que o site precisa solicitar. Este guia analisa uma string legada do Chrome no Android ao lado de uma reduzida.
Exemplo prático
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
- Navegador
- Chrome 99.0.4844.88
- Motor
- Blink
- Sistema operacional
- Android 12
- Classe do dispositivo
- Móvel
- Dispositivo
- Samsung SM-G991B
- Arquitetura da CPU
- Desconhecido
- Bot / rastreador
- Não
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
- Navegador
- Chrome 120.0.0.0
- Motor
- Blink
- Sistema operacional
- Android 10
- Classe do dispositivo
- Móvel
- Dispositivo
- K
- Arquitetura da CPU
- Desconhecido
- Bot / rastreador
- Não
A string legada expõe o Android 12, o modelo Samsung SM-G991B e a versão completa 99.0.4844.88. Na string reduzida, Android 10 e o modelo K são valores fictícios que todo dispositivo Android envia, e a versão termina em .0.0.0. O analisador informa exatamente o que a string diz — Android 10, modelo K —, então só a versão principal 120 e o token Mobile ainda trazem informação real.
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List
Regras principais
- Strings reduzidas do Chrome mantêm apenas a versão principal; as versões secundária, de build e de patch são sempre 0.0.0.
- No Android, a versão do SO é fixada em 10 e o modelo do dispositivo é substituído por K. No desktop, a plataforma é congelada em valores como Windows NT 10.0; Win64; x64, Macintosh; Intel Mac OS X 10_15_7 ou X11; Linux x86_64.
- Via HTTPS, navegadores Chromium enviam por padrão três client hints de baixa entropia: Sec-CH-UA (marcas e versões principais), Sec-CH-UA-Mobile e Sec-CH-UA-Platform.
- Hints detalhados como Sec-CH-UA-Platform-Version, Sec-CH-UA-Model e Sec-CH-UA-Full-Version-List só são enviados depois que o servidor os solicita em um cabeçalho de resposta Accept-CH. Em JavaScript, use navigator.userAgentData.getHighEntropyValues().
- A lista de marcas inclui uma entrada “GREASE” propositalmente falsa, como “Not_A Brand”. Procure a marca de que você precisa em vez de comparar o cabeçalho inteiro.
- O Windows 11 ainda envia Windows NT 10.0 na string User-Agent; um Sec-CH-UA-Platform-Version de 13.0.0 ou superior identifica o Windows 11.
- Client hints são um recurso do Chromium, então mantenha um fallback baseado em User-Agent para outros navegadores. Este analisador lê apenas a string User-Agent, não os client hints.