MiServe DevTools

Os seus autocolantes

Fixe aqui as ferramentas. Ficam guardadas neste navegador.

Analisador de user-agent

Veja que navegador, motor de renderização, sistema operativo e tipo de dispositivo uma string user-agent indica, e o que o seu próprio navegador diz sobre si.

Navegador ou cliente
Motor de renderização
Sistema operativo
Tipo de dispositivo
Arquitetura do CPU, quando a string a indica

O que este navegador diz sobre si

Estes valores são lidos do navegador que está a usar agora, não da string acima. Ficam nesta página.

Propriedades do navegador que está a usar
PropriedadeValor
Marcas (Client Hints)
Plataforma (Client Hints)
Idiomas
Tamanho do ecrã
Rácio de píxeis do dispositivo
Fuso horário
Cookies
WebAssembly
Web Crypto

Funciona no seu navegador. Nada do que cola é enviado.

Sobre esta ferramenta

O que é uma string user-agent

Quase todos os pedidos HTTP levam um cabeçalho User-Agent em que o cliente se identifica. Os navegadores passaram décadas a acrescentar-lhe os nomes uns dos outros para que os sites escritos para um concorrente continuassem a servi-los: é por isso que a string do Chrome começa por Mozilla/5.0, menciona AppleWebKit, KHTML, like Gecko e Safari, e que o Edge e o Opera enviam a string do Chrome com Edg/ ou OPR/ acrescentado no fim.

Por isso, um parser tem de testar por uma ordem fixa, do token mais específico para o menos específico. Esta ferramenta procura primeiro bots e bibliotecas HTTP, depois navegadores que acrescentam um token próprio, e só no fim o Chrome e o Safari, cujos tokens muitos outros navegadores repetem.

Porque é que o Chromium congelou a maior parte

A string é enviada a todos os servidores em todos os pedidos, e os seus pormenores ajudavam a fazer fingerprinting das pessoas. Por isso o Chrome reduziu-a, e outros navegadores baseados em Chromium seguiram-no. A versão é agora enviada como 131.0.0.0, em que só o número principal é real, e a parte da plataforma é um valor fixo, como Windows NT 10.0; Win64; x64 ou Android 10; K, seja qual for o sistema real.

Um site que precise dos pormenores tem de os pedir através das User-Agent Client Hints: os cabeçalhos de pedido Sec-CH-UA e navigator.userAgentData em JavaScript. A tabela por baixo do resultado mostra esses valores quando o navegador que está a usar os fornece.

Prefira a deteção de funcionalidades

Como a string está em parte congelada, imita outros navegadores e pode ser definida pelo cliente como quiser, é uma má forma de decidir que código executar. Teste antes a funcionalidade: 'share' in navigator em JavaScript ou @supports em CSS. A resposta fica então certa para navegadores de que nunca ouviu falar e para versões que ainda não existem.

Ler a string continua a fazer sentido para estatísticas, para distinguir crawlers de pessoas num log e para contornar um bug numa versão conhecida de um navegador.

Perguntas

Porque é que a versão do meu Chrome termina em .0.0.0?

O Chrome e outros navegadores baseados em Chromium reduzem a string user-agent para limitar o fingerprinting. Só é enviada a versão principal; os números secundário, de build e de patch são substituídos por zeros. A versão completa está disponível através das User-Agent Client Hints.

Uma string user-agent permite distinguir o Brave do Chrome?

Não. O Brave envia de propósito a mesma string que o Chrome, por isso um parser só consegue dizer que é um navegador baseado em Chromium. O mesmo acontece com qualquer navegador que não acrescente um token próprio.

Porque é que o meu Mac indica macOS 10.15.7?

O Safari, o Chrome e o Firefox deixaram de atualizar a versão do macOS na string em 10.15, por isso todas as versões posteriores do macOS indicam também esse número. A string também diz Intel nos Mac com Apple silicon.

Uma string user-agent pode ser falsificada?

Sim. Qualquer cliente pode enviar qualquer string, e muitos bots enviam a string de um navegador normal. Não baseie nenhuma decisão de segurança nela. Para confirmar um crawler como o Googlebot, verifique o endereço de onde veio o pedido, como o respetivo operador documenta.

A string que colo é enviada para um servidor?

Não. É analisada por JavaScript no separador do seu navegador, e a ferramenta não faz nenhum pedido de rede com ela.

Mais ferramentas de Rede