Analisador de User-Agent
Analisa strings de user agent em componentes
User-Agent String
Enter a User-Agent string to parse
O Parser de User-Agent extrai nome do navegador, versão, motor de renderização, sistema operacional e tipo de dispositivo de strings de cabeçalho User-Agent, decodificando o infame formato convoluto que acumulou décadas de tokens de compatibilidade. Cole uma string como Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 e obtenha um resumo claro: Chrome 120.0, motor Blink, Windows 10, Desktop.
Compreendendo Strings de User-Agent
O cabeçalho User-Agent é uma das partes mais antigas e mal compreendidas do HTTP. Foi originalmente projetado como um identificador simples -- um jeito do navegador dizer ao servidor seu nome e versão para que o servidor pudesse customizar sua resposta. O Netscape Navigator enviava Mozilla/1.0 e era isso. Mas décadas de guerras de navegador, hacks de compatibilidade e detecção de feature transformaram a string User-Agent em um emaranhado confuso de tokens históricos que dizem muito mais sobre a história de navegadores web do que sobre o cliente real que faz a requisição.
O problema começou quando Internet Explorer quis receber o mesmo conteúdo que servidores estavam enviando para Netscape Navigator. Então IE alegou ser "compatível com Mozilla". Depois Firefox veio como o verdadeiro sucessor de Mozilla e usou o mesmo prefixo. Safari adicionou "como Gecko" para que servidores verificando Gecko lhe servisse conteúdo moderno. Chrome copiou a string inteira de Safari e adicionou seu próprio token. Edge copiou a string de Chrome e adicionou outro token. O resultado é que o User-Agent de Chrome hoje contém "Mozilla", "AppleWebKit", "KHTML", "Gecko", "Chrome" e "Safari" -- e não é nenhum desses exceto Chrome.
Para desenvolvedores e administradores de sistema, o parsing de User-Agent ainda é necessário apesar de suas limitações. Análise de log de acesso requer saber quais navegadores e sistemas operacionais seus usuários executam. Detecção de bot depende de identificar crawlers como Googlebot e Bingbot. Relatórios de bug específicos de navegador precisam da versão exata para reproduzir. E análise de tráfego requer distinguir usuários móveis de desktop. Este parser corta o ruído histórico e extrai a informação que realmente importa: qual navegador, qual versão, qual SO, qual tipo de dispositivo.
Como Analisar uma String de User-Agent
- Cole uma string de User-Agent no campo de entrada (de logs de acesso, DevTools de navegador ou cabeçalhos HTTP).
- Clique em Analisar para extrair todos os componentes identificáveis.
- Revise os resultados analisados: família de navegador, versão, motor, SO, tipo de dispositivo e detecção de bot.
Exemplos de Parsing de User-Agent
| String de User-Agent | Navegador | Versão | Motor | SO | Dispositivo |
|---|---|---|---|---|---|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 | Chrome | 120.0 | Blink | Windows 10 | Desktop |
Mozilla/5.0 (Macintosh; Intel Mac OS X 14_2) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Safari/605.1.15 | Safari | 17.2 | WebKit | macOS 14.2 | Desktop |
Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0 | Firefox | 121.0 | Gecko | Linux | Desktop |
Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.2 Mobile/15E148 Safari/604.1 | Safari Mobile | 17.2 | WebKit | iOS 17.2 | Mobile |
Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.6099.43 Mobile Safari/537.36 | Chrome Mobile | 120.0 | Blink | Android 14 | Mobile |
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) | Googlebot | 2.1 | -- | -- | Bot |
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.2210.91 | Edge | 120.0 | Blink | Windows 10 | Desktop |
Quando Usar o Parser de User-Agent
- Analisando logs de acesso de servidor -- Analise strings de User-Agent de logs de web server para entender seu resumo de tráfego por navegador, SO e tipo de dispositivo.
- Identificando tráfego de bot -- Detecte crawlers conhecidos (Googlebot, Bingbot, Baiduspider) e diferencie-os de tráfego humano em análise.
- Debugando problemas específicos de navegador -- Extraia a versão exata de navegador e motor de renderização do User-Agent de um relatório de bug para reproduzir issues.
- Testando lógica de detecção de navegador -- Valide que seu código de detecção de navegador server-side ou client-side identifique corretamente vários padrões de User-Agent.
- Entendendo padrões de tráfego -- Determine a razão móvel vs. desktop e quais versões de SO seus usuários executam para informar prioridades de teste.
- Análise de log de segurança -- Identifique strings de User-Agent suspeitas em logs de acesso que possam indicar ataques automatizados ou scraping.
Por Que Strings de User-Agent São Tão Confusas
O Histórico de Spoofing de Navegador
Todo navegador moderno começa seu User-Agent com Mozilla/5.0 devido a uma cadeia de hacks de compatibilidade histórica:
- Netscape Navigator (o Mozilla original) foi o primeiro navegador a introduzir o cabeçalho
User-Agente usouMozilla/version. - Internet Explorer alegou ser
Mozilla/4.0 (compatible; MSIE...)para que servidores verificando "Mozilla" lhe enviasse o mesmo conteúdo rico. - Firefox usou
Mozilla/5.0... Gecko/...como sucessor de Netscape. - Safari adicionou
(KHTML, like Gecko)para que servidores procurando "Gecko" enviasse conteúdo moderno. - Chrome copiou o token de Safari e adicionou seu próprio, resultando em uma string alegando ser Mozilla, como KHTML, como Gecko, Chrome e Safari simultaneamente.
- Edge (baseado em Chromium) adicionou
Edg/à string já comprida de Chrome.
O Que Cada Token Realmente Significa
Em um típico Chrome User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Mozilla/5.0-- Token de compatibilidade histórica (sem sentido hoje)Windows NT 10.0; Win64; x64-- Sistema operacional e arquiteturaAppleWebKit/537.36-- Versão do motor de renderização (valor congelado em Chromium)KHTML, like Gecko-- Alegação de compatibilidadeChrome/120.0.0.0-- O navegador e versão reaisSafari/537.36-- Outro token de compatibilidade (Chrome não é Safari)
Client Hints: A Alternativa Moderna
User-Agent Client Hints (cabeçalhos Sec-CH-UA-*) são o substituto moderno, fornecendo dados estruturados e de baixa entropia:
Sec-CH-UA: "Chromium";v="120", "Google Chrome";v="120"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
O parser reconhece ambas as strings de User-Agent legadas e valores modernos de Client Hints.
Mapeamento de Versão Windows
Versões Windows em strings de User-Agent usam números de versão NT interna que não correspondem a nomes de marketing:
| Valor de User-Agent | Versão Windows |
|---|---|
Windows NT 10.0 | Windows 10 ou Windows 11 |
Windows NT 6.3 | Windows 8.1 |
Windows NT 6.2 | Windows 8 |
Windows NT 6.1 | Windows 7 |
Windows NT 6.0 | Windows Vista |
Windows NT 5.1 | Windows XP |
Note que Windows 10 e Windows 11 compartilham o mesmo valor Windows NT 10.0. Diferenciá-los requer User-Agent Client Hints (Sec-CH-UA-Platform-Version).
Dicas Práticas para Análise de User-Agent
Ao analisar logs de acesso, não tente analisar strings de User-Agent com expressões regulares. O formato é muito irregular e tem muitas variações para ser tratado de forma confiável com regex. Use uma biblioteca de parsing dedicada como ua-parser-js (JavaScript), user-agents (Python) ou browscap (PHP). Essas bibliotecas mantêm bancos de dados de padrões conhecidos e são atualizadas conforme novos navegadores e versões são lançados.
Para detecção de bot, lembre-se de que bots legítimos tipicamente se identificam claramente em suas strings de User-Agent, mas bots maliciosos quase sempre falsificam strings de navegador real. Se você ver um User-Agent alegando ser Chrome 120 em Windows 10 mas a requisição vem de um IP de data center, faz 100 requisições por segundo e ignora robots.txt, é quase certamente um bot independente do que o User-Agent diz. A detecção eficaz de bot combina análise de User-Agent com sinais comportamentais como taxa de requisição, reputação de IP e capacidades de execução de JavaScript.
A tendência no ecossistema de navegador é reduzir a informação em strings de User-Agent. Chrome tem gradualmente congelado partes de seu User-Agent (a versão WebKit está congelada em 537.36, a versão menor de Chrome é sempre .0.0.0) e empurrando desenvolvedores em direção a Client Hints para informação detalhada. Se você está construindo sistemas novos que precisam de informação de navegador ou SO, considere suportar Client Hints desde o início em vez de depender apenas de parsing tradicional de User-Agent, já que a quantidade de informação útil na string de User-Agent apenas diminuirá com o tempo.
Perguntas Frequentes
Como posso diferenciar Chrome de Edge?
Edge baseado em Chromium inclui um token Edg/ (note: não "Edge") no final de sua string de User-Agent. Ambos compartilham os mesmos tokens Chrome/ e Safari/. Procure especificamente por Edg/ para diferenciar Edge de Chrome.
É confiável detectar tipo de dispositivo do User-Agent?
Para categorias amplas (móvel vs. desktop), detecção de User-Agent é razoavelmente confiável. A presença de Mobile na string indica um dispositivo móvel. No entanto, detecção de tablet é menos consistente e alguns navegadores móveis em "modo desktop" enviam strings de User-Agent estilo desktop. Para detecção mais confiável, combine parsing de User-Agent com técnicas de design responsivo.
Como detecto bots e crawlers?
Bots legítimos tipicamente se identificam claramente: Googlebot, bingbot, Baiduspider, YandexBot, DuckDuckBot. O parser mantém uma lista de identificadores de bot conhecidos. No entanto, bots maliciosos frequentemente falsificam strings de User-Agent de navegador real, então User-Agent sozinho não é suficiente para detecção de bot crítica para segurança.
Por que Chrome relata "Safari" em seu User-Agent?
Chrome inclui Safari/537.36 por compatibilidade histórica. Quando Chrome foi lançado pela primeira vez, muitos sites verificavam "Safari" para servir conteúdo compatível com WebKit. Chrome herdou WebKit (mais tarde dividindo-o em Blink) e manteve o token Safari para evitar ser servido conteúdo degradado. É puramente um artefato de compatibilidade e não significa que Chrome está relacionado a Safari.
O que é a iniciativa "reduced User-Agent"?
Começando com Chrome 110, Google tem gradualmente reduzido a informação na string de User-Agent de Chrome como parte da iniciativa Privacy Sandbox. O objetivo é minimizar fingerprinting passivo congelando ou removendo números de versão granular, detalhes de SO e informação de modelo de dispositivo. Desenvolvedores que precisam dessa informação são encorajados a usar User-Agent Client Hints em vez disso, que requerem opt-in explícito do servidor e são mais preservadores de privacidade.
Posso confiar na versão de SO em uma string de User-Agent?
Geralmente sim para identificar a família de SO (Windows, macOS, Linux, iOS, Android), mas a versão específica pode estar congelada ou imprecisa. Chrome em Windows relata Windows NT 10.0 tanto para Windows 10 quanto Windows 11. Chrome em macOS pode congelar a versão em um valor específico. Para detecção precisa de versão de SO, use Client Hints ou métodos de detecção server-side.
Ferramentas Relacionadas
- Formatador de Cabeçalho HTTP - Analisar e formatar cabeçalhos de requisição HTTP incluindo User-Agent
- Parser de Cabeçalho Cookie - Analisar cookies enviados junto com User-Agent em requisições
- Construtor de Comando curl - Construir comandos curl com cabeçalhos User-Agent customizados para testes
- Lookup de Código de Status HTTP - Procurar códigos de status retornados a diferentes User-Agents
- Explainer de Cabeçalho CORS - Entender comportamento de CORS em diferentes navegadores