Meu Navegador: identificação por heurística, não por certeza
A identificação do navegador nesta página é feita por análise do
cabeçalho User-Agent — uma string de texto que o
próprio navegador envia em toda requisição HTTP, historicamente
carregada de nomes de navegadores concorrentes por razões de
compatibilidade retroativa (é comum um User-Agent do Chrome conter as
palavras "Mozilla", "AppleWebKit" e "Safari" ao mesmo tempo, um
resquício histórico de décadas de navegadores tentando não ser
bloqueados por sites que checavam por nomes específicos). Por isso a
detecção não pode ser uma simples busca por substring — precisa checar
marcadores mais específicos em ordem específica: Edg/
antes de Chrome/, porque o Edge baseado em Chromium
inclui ambos os marcadores no mesmo User-Agent, e checar Chrome
primeiro identificaria Edge incorretamente como Chrome.
Por que "identificação", não "verificação"
O ponto mais importante para qualquer sistema que use essa técnica: o User-Agent é uma informação fornecida pelo próprio cliente, não verificada por nenhuma autoridade. Qualquer navegador pode ser configurado para enviar qualquer valor de User-Agent — as ferramentas de desenvolvedor de todo navegador moderno incluem essa opção nativamente, para fins legítimos de teste de compatibilidade. Isso significa que identificação por User-Agent é adequada para personalização de experiência (mostrar uma dica específica para usuários de Safari, por exemplo) mas nunca deveria ser a base de uma decisão de segurança — um sistema que concede ou nega acesso baseado em "navegador identificado" está confiando em um dado que o próprio solicitante controla livremente.
Uso em depuração de bugs específicos de navegador
Bugs de CSS ou JavaScript que só acontecem em um navegador específico são um problema comum o suficiente para ter nome próprio em times de front-end — confirmar rapidamente "qual navegador e versão estou usando agora" antes de reportar ou investigar um bug relatado por um usuário evita o cenário frustrante de gastar tempo tentando reproduzir um problema no navegador errado, quando a causa real é específica de uma engine de renderização (WebKit, Blink, Gecko) que o navegador "errado" nem usa.