Ir para o conteúdo principal

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

Chrome no Android, string legada (antes da redução)
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
Chrome no Android, string reduzida
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.

Client hints de baixa entropia que um navegador Chromium envia por padrão e um cabeçalho de resposta Accept-CH pedindo mais
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.

Mais guias sobre user agents