Ferramentas
Guias

Analisador de User-Agent

Dev

Analisa uma cadeia User-Agent em navegador, motor, sistema operativo e tipo de dispositivo. Heurístico, 100% no cliente.

100% no cliente Sem backend
Cadeia User-Agent
Saída
Navegador
Motor
Sistema operativo
Tipo de dispositivo
Bot / crawler
Nesta página

O que é um analisador de User-Agent?#

A string User-Agent (UA) é a linha de texto que todos os navegadores e clientes HTTP Acrescentam aos seus pedidos para se descreverem. É também uma confusão famosa de não estruturada: os fabricantes empilham tokens de compatibilidade históricos uns sobre os outros, pelo que uma única string moderna de Chrome contém também as palavras Mozilla, AppleWebKit, KHTML, Gecko e Safari — nenhuma delas significando que o navegador é realmente qualquer dessas coisas. Ler um UA em bruto a olho é lento e propenso a erros, razão pela qual quase todo o painel de analítica, ferramenta de access-log e camada de deteção de bots o passa por um analisador primeiro.

Esta página recebe qualquer string UA e divide-a nos cinco fatos que realmente se quer: navegador (nome e versão), motor (o núcleo de renderização), sistema operativo (sistema operativo e versão), tipo de dispositivo (computador, móvel ou tablet) e é bot (se a string parece um crawler). Corre inteiramente no seu navegador — cole uma string de uma linha de registro e leia a decomposição, sem ida e volta ao servidor.

A razão pela qual a deteção de navegador é mais difícil do que parece é a ordem. Navegadores especializados têm de ser verificados antes do Chrome, porque as suas strings UA contêm todas o token literal Chrome para compatibilidade. Microsoft Edge, Opera, Samsung Internet, Vivaldi e CocCoc seriam todos mal reportados como Chrome por uma verificação ingénua if (ua.includes("chrome")). O mesmo se passa com motores: a string AppleWebKit aparece tanto em navegadores Blink (Chrome, Edge, Opera) como em navegadores puros WebKit (Safari), pelo que o motor é inferido da família do navegador, não correspondido diretamente.

Como usar#

  1. Clique em Usar o meu navegador no topo para carregar o navigator.userAgent deste navegador na caixa de entrada — a forma mais rápida de ver como se parece o seu próprio tráfego.
  2. Ou cole qualquer string UA no painel de entrada — de um access-log nginx, de um req.headers["user-agent"] no backend, de um pedido curl, qualquer coisa.
  3. Leia as cinco linhas no painel de saída:
    • Navegador — nome da família e versão principal (por exemplo Chrome 120).
    • Motor — o motor de renderização (Blink, WebKit, Gecko, Trident).
    • Sistema operativo — sistema operativo e versão quando recuperável (por exemplo Windows 10/11, iOS 17, Android 14).
    • DispositivoComputador, Móvel, ou Tablet, inferido de tokens como iPad, Android sem Mobile, iPhone.
    • BotSim / Não, sinalizado por correspondência com identificadores de crawler (bot, crawl, spider, slurp, pingdom, headless, phantomjs, curl, wget, python-requests, axios, …).
  4. Clique em Limpar para esvaziar ambos os painéis.
  5. A linha de estado resume o resultado ou reporta que a entrada estava vazia.

Principais recursos#

  • Deteção de navegador especializado-primeiro. Edge, Opera, Samsung Internet, Vivaldi, CocCoc e Firefox são todos correspondidos antes do Chrome e do Safari, pelo que não são silenciosamente engolidos pelo token de compatibilidade Chrome.
  • Motor inferido da família. Blink versus WebKit é decidido pelo navegador detetado, não por uma correspondência direta frágil em AppleWebKit — razão pela qual uma string de Safari não é reportada como Chrome.
  • Classificação de tipo de dispositivo. Tablets são distinguidos de telefones usando o token iPad e a distinção Android ... Mobile, as mesmas heurísticas de que as ferramentas de analítica dependem.
  • Flag de crawler. A linha Bot sinaliza as strings que normalmente se quer excluir das métricas viradas para humanos — crawlers de pesquisa, monitores de uptime, navegadores headless e bibliotecas HTTP.
  • 100% do lado do cliente. Nenhum UA é alguma vez enviado. Isso também significa que pode colar tokens de registros de produção sem os vazar para uma API de análise terceira.

Exemplo detalhado#

Cole esta string típica de Chrome-no-Windows de um access-log:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

e as cinco linhas preenchem-se como:

Browser   Chrome 120
Engine    Blink
OS        Windows 10/11
Device    Computador
Bot       Não

Agora contraste com uma string Edge — note o Edg/120 no fim:

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.0.0

Um analisador ingénuo que verifique Chrome primeiro reporta Chrome 120 aqui — errado. Esta página verifica Edg/ antes de Chrome/, pelo que a mesma string produz corretamente Navegador: Microsoft Edge 120, com o motor ainda Blink (Edge é baseado em Chromium).

Um terceiro caso mostra o caminho do bot. Um script de health-check que envia curl/7.81.0 é sinalizado Bot: Sim embora não transporte wrapper Mozilla, porque curl é um dos tokens de biblioteca que o matcher de bots procura. É a linha que deixa separar tráfego de usuárioes reais de ruído automatizado quando se está percorrendo um registro a olho.

Perguntas frequentes#

Porque é que o meu navegador Edge aparece como “Microsoft Edge” e não como “Chrome”, apesar de o UA conter a palavra Chrome?#

Porque o UA do Edge inclui deliberadamente Chrome/120.0.0.0 para que sites construídos para servir Chrome sirvam também Edge. Este analisador testa o token Edg/ primeiro, depois Chrome/, pelo que a família especializada ganha. Qualquer analisador que não ordene as suas verificações desta forma vai reportar mal todos os derivados Chromium como Chrome.

Posso confiar na versão do SO de uma string UA?#

Até certo ponto. O Windows colapsa 10 e 11 em Windows NT 10.0, pelo que são reportados como 10/11 aqui. Versões iOS e macOS são recuperáveis do token OS X_x_x mas historicamente ficam congeladas no momento do lançamento. Trate a versão como uma forte pista, não uma garantia, e não baseie decisões de segurança nela.

A flag de Bot é fiável para bloquear tráfego?#

Não — a deteção de bots baseada em UA é uma comodidade para análise de registros e filtragem de painéis, não um limite de segurança. Clientes maliciosos forjam o UA que quiserem, incluindo alguns perfeitamente pareceridos com humanos. Use esta linha para spotting dos crawlers e bibliotecas óbvios; use rate limiting, autenticação e verificações comportamentais para tudo o que precisa de ser realmente fiável.

O analisador mostra “Desconhecido” em tudo. O que é que colei?#

Ou uma string vazia/espaços, ou um UA de um cliente que este analisador não reconhece (algumas apps de desktop e SDKs enviam identificadores especiais). A linha de estado vai dizer que a entrada estava vazia no primeiro caso; no segundo, o navegador e o SO simplesmente caem para Desconhecido enquanto o tipo de dispositivo por padrão vai para Computador. A string em bruto é preservada no painel de entrada para que a possa inspecionar.