Todos os artigos

User-Agent: por que essa string é tão confusa

Olhando o User-Agent de um Chrome moderno, aparece algo como "Mozilla/5.0 ... AppleWebKit/537.36 ... Chrome/120.0 Safari/537.36" — uma string cheia de referências a navegadores que o Chrome, na verdade, não é. Isso é resultado de décadas de gambiarras históricas, não coincidência.

A origem da palavra "Mozilla"

Nos anos 1990, os sites detectavam a capacidade do navegador checando se o User-Agent continha "Mozilla" (codinome do Netscape Navigator, então líder de mercado). Quando o Internet Explorer quis o mesmo conteúdo "avançado", passou a incluir "Mozilla" também no seu User-Agent — e o precedente pegou para sempre.

Android dominante e aparelhos de entrada no Brasil

O Brasil é um dos mercados de maior participação do Android no mundo, impulsionado por aparelhos de entrada de marcas como Samsung e Motorola vendidos em grande volume. Isso significa que testar só em iPhone cobre uma fatia bem menor do tráfego real do que em mercados com mais equilíbrio entre iOS e Android — e que WebViews de apps populares (como o navegador embutido de redes sociais) frequentemente aparecem nos logs com um User-Agent Android/Chrome modificado.

Por que a detecção via User-Agent não é confiável

Como cada novo navegador acrescenta tokens dos antecessores ao User-Agent por compatibilidade, essa string virou um amontoado de artefatos históricos em vez de uma descrição precisa do navegador. A prática recomendada hoje é detectar diretamente o suporte a recursos específicos de JavaScript/CSS, em vez de interpretar o User-Agent.

Para que serve

  • Diagnosticar problemas de compatibilidade analisando exatamente qual navegador e versão o cliente informa.
  • Entender logs de servidor onde o User-Agent dos visitantes fica registrado.
  • Compreender por que código antigo de detecção de navegador via User-Agent costuma errar.

User-Agent Client Hints como substituto

Em vez de interpretar uma única string sobrecarregada, navegadores modernos baseados em Chromium já suportam User-Agent Client Hints — cabeçalhos separados como Sec-CH-UA, Sec-CH-UA-Platform e Sec-CH-UA-Mobile, que o servidor precisa solicitar explicitamente e recebe em formato estruturado. Isso faz parte de uma tendência maior de "redução do User-Agent" em prol da privacidade, então, com o tempo, a string clássica de User-Agent trará cada vez menos detalhes.

Experimentar a ferramenta