BrowserTools
Publicidade
Início / Rede / Analisador de User-Agent

Analisador de User-Agent

Analisa uma cadeia de User-Agent em informação de navegador, motor, sistema operativo e dispositivo.

A carregar Analisador de User-Agent… Se nada acontecer, ativa o JavaScript.

O cabeçalho User-Agent é uma cadeia de texto de formato livre que os navegadores web e os clientes HTTP enviam com cada pedido, identificando o software que estabelece a ligação. Apesar de ser apenas uma linha de texto, um User-Agent bem formado codifica uma quantidade surpreendente de informação: a família e a versão do navegador, o motor de renderização sobre o qual está construído, o sistema operativo e a respetiva versão e, muitas vezes, o tipo ou o modelo do dispositivo. Esta informação foi concebida originalmente para permitir que os servidores web enviassem conteúdo adequado ao navegador numa época em que o Internet Explorer e o Netscape renderizavam as páginas de forma muito diferente. Hoje, as cadeias de User-Agent são usadas para análise de dados, deteção de bots, deteção de funcionalidades e depuração de problemas de compatibilidade em aplicações web.

Perguntas frequentes

Que dados é que esta ferramenta envia para os vossos servidores?
Nenhuns. A análise de User-Agent é executada inteiramente no teu navegador usando uma biblioteca de JavaScript do lado do cliente. Nenhuma cadeia de UA que coles ou que seja detetada automaticamente é enviada para os nossos servidores. Não há pedidos ao backend para esta ferramenta, por isso não há nada para registar nem armazenar.
Porque é que as cadeias de User-Agent contêm 'Mozilla/5.0' mesmo para o Chrome e o Safari?
É um artefacto de compatibilidade herdado que remonta às guerras dos navegadores do final dos anos 90. Os servidores web da época serviam conteúdo mais rico aos navegadores 'Mozilla' e conteúdo degradado aos restantes. Para evitar receber páginas degradadas, cada novo navegador acrescentou 'Mozilla/5.0' à sua cadeia de UA, independentemente da sua identidade real. A prática continuou durante mais de 25 anos e está agora consolidada na especificação HTTP como comportamento esperado.
Porque é que o resultado analisado nem sempre corresponde ao que eu espero?
A análise de User-Agent é heurística por natureza. As novas versões de navegador, os sistemas operativos pouco comuns e as cadeias de UA personalizadas de aplicações ou ferramentas podem confundir qualquer analisador. Alguns navegadores representam-se deliberadamente de forma errada (por exemplo, o Opera costumava declarar-se como Internet Explorer). As aplicações móveis que incorporam vistas web muitas vezes declaram o seu próprio nome de aplicação juntamente com o UA do WebView subjacente. Se o analisador mostrar 'desconhecido', a cadeia de UA está a usar um formato pouco convencional que o analisador não foi treinado para reconhecer.
Qual é a diferença entre o motor do navegador e o próprio navegador?
O motor de renderização (por exemplo, Blink, Gecko, WebKit) é o código subjacente que analisa o HTML, aplica o CSS e executa o JavaScript. O navegador é a aplicação construída sobre esse motor, que acrescenta a barra de endereços, os marcadores, as extensões e a interface. O Chrome, o Edge, o Opera, o Brave e a maioria dos navegadores Android usam todos o Blink. O Firefox usa o Gecko. O Safari usa o WebKit. Conhecer o motor é muitas vezes mais útil do que o nome do navegador para depurar problemas de compatibilidade de renderização.
Existem limites de utilização nesta ferramenta?
Não. Como a análise é executada inteiramente no lado do cliente em JavaScript, não há pedidos ao servidor e, por isso, não há limites de utilização. Podes analisar tantas cadeias de UA quantas quiseres, sem qualquer restrição. A ferramenta funciona sem ligação à Internet assim que a página estiver carregada.
Como é que isto se compara com usar navigator.userAgent em JavaScript?
'navigator.userAgent' na consola de programador de um navegador dá-te a cadeia de UA em bruto desse navegador. Esta ferramenta faz o mesmo, mas além disso analisa a cadeia em bruto em campos estruturados. Também te permite colar cadeias de UA arbitrárias de registos ou de outras fontes, algo que 'navigator.userAgent' não consegue fazer, já que só devolve o UA do navegador atual.
O que são os Client Hints e como é que substituem o User-Agent?
Os Client Hints (em concreto Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Mobile e cabeçalhos relacionados) são cabeçalhos de pedido HTTP estruturados que fornecem a identificação do navegador num formato legível por máquina, em vez de uma cadeia de formato livre. Foram introduzidos pela Google como parte da iniciativa de Redução do User-Agent, que procura limitar a cadeia de UA a um valor fixo de baixa entropia para reduzir a recolha passiva de impressões digitais. Os servidores que precisem de informação detalhada do navegador têm de a solicitar explicitamente devolvendo um cabeçalho Accept-CH.
Esta ferramenta regista cadeias de User-Agent para análise de dados ou publicidade?
Não. Como a análise é inteiramente do lado do cliente, nenhum dado de UA é alguma vez transmitido para os nossos servidores. Não há nada para registar, partilhar com anunciantes ou armazenar. O teu navegador faz todo o cálculo localmente.
Como é que os bots e os rastreadores se identificam no User-Agent?
Os bots que se comportam corretamente, como o Googlebot (o rastreador web da Google), o Bingbot (Microsoft) e os agentes de monitorização comuns, incluem tokens de identificação nas suas cadeias de UA seguindo uma convenção aproximada de 'NomeDoBot/version (+url-com-info)'. Os scrapers maliciosos muitas vezes falsificam os UA de navegadores legítimos para evitar a deteção de bots. Alguns sinais de deteção para além do UA incluem a frequência dos pedidos, a ausência de execução de JavaScript e a falta de cabeçalhos específicos do navegador, como Sec-Fetch-Site.
Posso confiar na informação de sistema operativo e dispositivo de um User-Agent?
Para navegadores legítimos em dispositivos padrão, a informação de sistema operativo e dispositivo é geralmente exata, porque não há incentivo para os utilizadores finais a falsificarem. No entanto, qualquer cliente HTTP pode definir qualquer cadeia de UA, as frameworks de automação como o Puppeteer e o Selenium usam por predefinição o UA real do navegador, mas podem ser configuradas para usar qualquer cadeia. Os navegadores e as extensões focados na privacidade podem tornar aleatório ou falsificar o UA em cada pedido, como contramedida contra a recolha de impressões digitais, o que torna a informação analisada pouco fiável para decisões de segurança.

Sobre Analisador de User-Agent

Os programadores web colam cadeias de User-Agent em analisadores quando chega um relatório de erro de um utilizador numa plataforma desconhecida e precisam de perceber exatamente que combinação de navegador e sistema operativo está envolvida. Os engenheiros de QA usam os dados de UA analisados para verificar se os seus conjuntos de testes automatizados se identificam corretamente. As equipas de segurança analisam os User-Agent nos registos do servidor para identificar scrapers web, scanners de vulnerabilidades e bots. Os programadores de API verificam o UA dos pedidos recebidos para perceber que bibliotecas de cliente e versões de SDK os seus utilizadores estão a usar. Os engenheiros de DevOps correlacionam os dados de UA com as taxas de erro para identificar regressões de compatibilidade específicas de um navegador.

Esta ferramenta analisa cadeias de User-Agent inteiramente no teu navegador usando uma biblioteca de JavaScript do lado do cliente, não é enviado qualquer dado para os nossos servidores. A cadeia de User-Agent atual do teu navegador é detetada automaticamente ao carregar a página, para que possas ver de imediato o teu próprio resultado analisado. Também podes colar qualquer cadeia de UA que tenhas copiado de um registo de servidor ou de um relatório de erro para a analisares quando quiseres. O analisador identifica a família do navegador, a versão do navegador, o motor de renderização (Blink, Gecko, WebKit, Trident), o sistema operativo, a versão do sistema operativo e a categoria do dispositivo (computador, telemóvel, tablet, bot). Os resultados são apresentados num formato estruturado, com cada campo claramente identificado.

Ao ler os resultados analisados, lembra-te de que não há garantia de que as cadeias de User-Agent sejam exatas, qualquer cliente pode definir a cadeia de UA que quiser e a falsificação é trivialmente fácil. O Chrome no Android, por exemplo, inclui os tokens 'Mozilla/5.0' e 'Safari' no seu UA por razões históricas de compatibilidade, e é por isso que as cadeias de UA em bruto parecem estranhas mesmo para navegadores bem conhecidos. O projeto do UA 'congelado' do Chrome (iniciado por volta de 2021) procura reduzir a fuga de informação limitando os números de versão na cadeia de UA e movendo a identificação detalhada do navegador para os cabeçalhos estruturados de Client Hints (Sec-CH-UA-*). Se estás a criar deteção de navegador para uso em produção, dá preferência à API de Client Hints em vez da análise de User-Agent sempre que possível.

A cadeia que se partiu a si própria: uma breve história do caos do User-Agent

O cabeçalho User-Agent foi introduzido na primeira especificação publicada de HTTP em 1992, concebido originalmente como uma simples identificação de uma linha do software que fazia um pedido, algo como 'NCSA_Mosaic/2.0'. O caos começou quase de imediato. Quando o Netscape Navigator foi lançado em 1994 e rapidamente dominou o mercado dos navegadores, os programadores web começaram a servir páginas 'melhoradas' apenas ao Netscape, que se identificava como 'Mozilla'. O Internet Explorer da Microsoft, lançado em 1995, precisava de receber as mesmas páginas melhoradas, por isso acrescentou 'Mozilla/2.0 (compatible; MSIE 3.0)' à sua cadeia de UA, declarando-se como Mozilla ao mesmo tempo que se identificava como MSIE.

Todos os navegadores importantes que se seguiram repetiram o mesmo padrão. O Opera acrescentou tokens de compatibilidade com o Mozilla. O Safari, construído sobre o motor KHTML bifurcado em WebKit, acrescentou 'Mozilla/5.0 (... like Gecko)' à sua cadeia. O Chrome, construído sobre o WebKit, acrescentou os tokens 'AppleWebKit' e 'Safari' para garantir que o código orientado ao Safari também funcionasse no Chrome. O resultado é que uma cadeia de UA atual do Chrome no Windows contém tokens de Mozilla, AppleWebKit, KHTML, Gecko e Safari, cinco referências diferentes a navegadores concorrentes, nenhuma das quais é a identidade própria do Chrome, que aparece apenas como 'Chrome/version' perto do fim.

A Google anunciou o projeto de Redução do User-Agent em 2020, com o objetivo de congelar a cadeia de UA num valor fixo de baixa entropia até 2022 e migrar a identificação detalhada do navegador para o mecanismo estruturado e voluntário de Client Hints. A implementação efetiva foi mais lenta do que o previsto devido a preocupações de compatibilidade web, já que milhões de aplicações web dependem da análise da cadeia de UA para uma lógica que não pode ser migrada facilmente. Isto torna o cabeçalho User-Agent um exemplo vivo de quão difícil é descontinuar uma norma da Internet defeituosa, mas profundamente enraizada: mesmo após três décadas e um reconhecimento quase universal de que o formato está partido, o esforço para o substituir mede-se em anos.

Publicidade
Publicidade
Publicidade