Filtro por user agent: o que é UA e por que ele não basta para barrar bots

O filtro por user agent é o jeito mais antigo de barrar bots: o servidor lê a string com que o navegador se apresenta e decide por ela. Veja o que há nessa string, quando dá para confiar nela e por que só o UA não basta para proteger o tráfego pago.

Bots e fraude11 min de leitura
Filtro por user agent: o que é UA e por que ele não basta para barrar bots
Conteúdo
  1. O que é user agent e o que vem escrito nele
  2. Como funciona o filtro por user agent
  3. User agent de bot: quem se apresenta honestamente
  4. Falsificação de user agent: por que filtrar só por UA é fraco
  5. Onde o filtro por user agent ainda é útil
  6. Combinação com outros sinais: o UA como uma voz entre muitas
  7. Como isso funciona na ArtisanClo
  8. Erros comuns no filtro por user agent
  9. Resumo

User agent (UA) é a string com que o navegador ou qualquer outro programa se apresenta ao servidor no cabeçalho de cada requisição: nome e versão do navegador, motor, sistema operacional e às vezes o modelo do aparelho. Filtro por user agent significa que o servidor lê essa string e decide por ela quem entra, a quem mostrar outra página e quem barrar como bot.

O método é simples e barato, por isso ainda aparece em scripts caseiros e plugins «antibot». Mas a string é escrita pelo próprio cliente e é mais fácil de falsificar do que qualquer outro sinal da visita. A seguir: o que exatamente vem no UA, quando dá para confiar nele, quando não dá e como usá-lo junto com outros sinais.

O que é user agent e o que vem escrito nele

Uma string típica do Chrome mobile no Android é assim:

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36

Fica mais fácil ler por partes:

Trecho O que significa
Mozilla/5.0 Prefixo histórico de compatibilidade; quase todo navegador tem e não diz nada
(Linux; Android 10; K) Plataforma e SO; nos navegadores atuais o modelo do aparelho costuma ser trocado por um marcador genérico
AppleWebKit/537.36 (KHTML, like Gecko) Motor de renderização e mais uma herança de compatibilidade
Chrome/130.0.0.0 Navegador e versão principal; os números menores já vêm zerados há tempos
Mobile Safari/537.36 Indicador de layout mobile

Dessa string o servidor costuma extrair quatro coisas: tipo de dispositivo (smartphone, tablet, computador, TV), sistema operacional, navegador e o indício de que do outro lado nem há navegador, e sim um programa ou robô.

Repare: quase não há informação única na string. Milhões de celulares enviam o mesmo UA — e é justamente por isso que os navegadores o «congelaram», para dificultar o rastreamento de pessoas por ele.

Client Hints: para onde vão os detalhes

Navegadores baseados em Chromium vêm reduzindo a string clássica e entregando os detalhes via Client Hints — um conjunto de cabeçalhos Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform e outros. Parte deles vem em toda requisição; parte, só se o servidor pedir explicitamente. Para a filtragem isso ajuda de duas formas: é mais difícil inventar dicas verossímeis do zero, e elas podem ser comparadas com a string principal. Um navegador que no UA se diz Chrome no Windows e nas dicas informa outra plataforma está se comportando de forma estranha.

Há também uma limitação: Safari e Firefox tratam as dicas de outra forma ou não as suportam, então a ausência de Client Hints, por si só, não diz nada.

Como funciona o filtro por user agent

Na forma mais simples, é uma lista de trechos: se o UA contém uma das palavras proibidas, o visitante vai para a página de bloqueio. Um pouco mais elaborado é um parser que decompõe a string em navegador, SO e dispositivo, com regras sobre o resultado: «só smartphones», «sem Smart TV», «só Android».

Aqui é importante separar duas tarefas diferentes:

  1. Segmentação — escolher o público-alvo: essa oferta precisa de desktop, iOS serve? A string UA funciona bem nisso, porque pessoas comuns não a falsificam e o erro custa pouco.
  2. Proteção contra bots — barrar a automação. Aqui o UA é quase inútil como sinal isolado: quem escreve um bot começa colocando a string de um navegador real.

Sobre filtros de público por dispositivo, SO e navegador, veja o artigo sobre filtro por GEO e dispositivo. Daqui em diante, o assunto é a segunda tarefa.

User agent de bot: quem se apresenta honestamente

Parte do tráfego automático realmente se apresenta como é. São duas classes diferentes.

Scripts brutos e utilitários. Bibliotecas de requisições HTTP, downloaders de linha de comando e scrapers enviam por padrão o próprio UA — com nome e versão da biblioteca — ou não enviam nenhum. UA vazio ou nome de biblioteca no lugar de navegador é um sinal confiável: uma pessoa vinda de anúncio não chega assim. Essas visitas são barradas na hora e quase sem risco.

Crawlers de busca e robôs «educados». Buscadores, serviços de pré-visualização de links e monitores de disponibilidade costumam indicar honestamente seu nome e um link para a descrição. Para um site comum são visitas úteis e não são bloqueadas. Mas aqui também há uma ressalva: a string de robôs de busca conhecidos é muito copiada por scrapers, para entrar onde o buscador entra. Por isso os próprios buscadores recomendam verificar o robô não pelo UA, e sim por DNS reverso do IP: o crawler verdadeiro vem da rede da sua empresa.

Conclusão: o filtro por UA pega bem quem não tenta se esconder. É uma parte considerável das requisições lixo, e barrá-la é barato. Mas não é a parte do tráfego de bots que come o orçamento de anúncios.

Falsificação de user agent: por que filtrar só por UA é fraco

Qualquer programa que se disfarce minimamente envia a string de um Chrome ou Safari recente. Isso se faz com uma linha de código e, no navegador, com uma opção nas ferramentas de desenvolvedor. Daí surgem três problemas.

A falsificação não aparece na própria string. O UA correto de um navegador real e o mesmo UA numa requisição de script são idênticos byte a byte. Não dá para verificar a string contra ela mesma — só compará-la com outros sinais.

As listas envelhecem. Uma lista negra de trechos precisa de atualização constante: surgem ferramentas novas, as antigas mudam de nome, e os navegadores reais mudam o formato da string. Uma lista que ninguém atualiza há seis meses pega sobretudo o que já nem aparece mais.

Falsos positivos com pessoas reais. Navegadores embutidos em apps, WebView, celulares antigos e builds corporativos de navegador enviam strings incomuns. A regra «é suspeito tudo que não parece um Chrome padrão» corta justamente o tráfego mobile das redes sociais — aquele pelo qual você paga. As particularidades dos navegadores embutidos estão no artigo sobre tráfego in-app e fraude.

Dica. Se uma regra por UA dispara numa parte visível do tráfego pago, provavelmente está cortando pessoas, não bots. Os bots contra os quais vale a pena montar proteção chegam com uma string perfeita.

Onde o filtro por user agent ainda é útil

Apesar de tudo isso, o UA é um sinal normal e necessário, desde que fique no seu lugar.

  • Barrar automação grosseira. UA vazio, nome de biblioteca, de utilitário de linha de comando ou de framework de scraping é «não» na hora. Uma camada barata que alivia as demais verificações.
  • Identificar o tipo de dispositivo para segmentação e roteamento. Smartphone ou computador, Android ou iOS — para distribuir o tráfego entre ofertas, a string UA costuma bastar.
  • Reconhecer navegadores embutidos. Pelo UA se vê que a visita veio de um navegador dentro de um app. Isso importa não para bloquear, mas ao contrário: para não punir essa visita por sinais que no WebView costumam ser falsos.
  • Comparação com outros sinais. O UA diz «iPhone», mas a tela, as fontes e o comportamento do script dizem outra coisa. A própria divergência já é o sinal.
  • Análise. Recortes por navegador e SO nos relatórios mostram onde a conversão cai e de onde vem um pico suspeito.

Combinação com outros sinais: o UA como uma voz entre muitas

Uma boa proteção não pergunta «qual o UA da visita», pergunta «o UA bate com todo o resto?». Estes são os sinais com que ele costuma ser comparado:

Sinal Com o que o UA é comparado
Endereço IP e rede Navegador mobile vindo de rede de hospedagem merece atenção; mais no artigo sobre VPN, proxy e IPs de datacenter
Cabeçalhos da requisição O conjunto e a ordem dos cabeçalhos de um navegador real diferem dos de uma biblioteca, mesmo com a mesma string UA
Client Hints Plataforma e marca do navegador nas dicas devem coincidir com a string
Execução de JavaScript Um navegador que se diz Chrome moderno mas não executou o script não se comporta como navegador
Propriedades do navegador no script Plataforma, tela, sinais de automação; detalhes no artigo sobre navegador headless e fingerprint
Comportamento Tempo na página, movimento do mouse e toques

Cada sinal isolado erra. Juntos, dão uma avaliação que erra bem menos. É assim que funciona qualquer filtro de tráfego inteligente moderno: um sinal isolado acrescenta um pouco de suspeita, e uma conclusão segura vem da coincidência de vários. O esquema geral de camadas de proteção está no artigo sobre como filtrar bots.

Como isso funciona na ArtisanClo

Na ArtisanClo, a string user agent é um dos sinais, não uma regra isolada «por lista». A decisão sobre a visita é feita em várias etapas, e o UA participa de cada uma de um jeito.

Rede e requisição. A primeira etapa olha endereço, rede, provedor, cabeçalhos, marca de clique e regras do fluxo — antes mesmo da verificação do navegador. Aqui são barrados programas no lugar de navegador e robôs das plataformas que geram pré-visualização de links: essas visitas sempre recebem a White Page, com qualquer configuração, e no log aparece o motivo «Um programa, não um navegador» ou «Crawler de busca ou de plataforma». É a etapa que menos atinge pessoas reais.

Públicos. Nas configurações de filtragem do fluxo há listas de «Dispositivos», «Sistemas operacionais» e «Navegadores» com as opções de permitir e bloquear. Entre os dispositivos aparecem à parte «Bot / crawler» e «Desconhecido». Isso é segmentação: o visitante que não passa na lista vê a White Page com um motivo claro.

Verificação do navegador. Quem enviou a string de um navegador real passa pela verificação por script, e é a resposta dela que mostra se a visita parece automação. O bloqueio de navegadores headless barra na hora quando há rastros claros de automação; sinais menos evidentes vão para a avaliação de confiança, junto com rede, VPN, presença de provedor e do site de origem.

Navegadores embutidos. Os navegadores embutidos do Facebook, Instagram e TikTok e o WebView em apps são reconhecidos à parte. Neles, um sinal de automação não barra a visita na hora; ele entra na avaliação de confiança junto com rede, tempo e referer, porque nesses navegadores costuma ser falso.

Transparência. Cada clique no log tem um motivo de decisão entre dezenas possíveis, e o link «Relatório da visita» mostra todos os sinais e conclusões de uma visita. Se você suspeita de erro do filtro, comece pelo artigo por que o clique foi para a White Page. Todos os recursos de filtragem estão na página de recursos.

Erros comuns no filtro por user agent

  1. Montar a proteção numa lista negra de trechos. Ela só pega quem não se esconde e exige atualização sem fim.
  2. Bloquear tudo que é «fora do padrão». Isso atinge os navegadores embutidos das redes sociais e aparelhos antigos — tráfego pago e vivo.
  3. Confiar numa string que parece correta. Um UA perfeito de navegador moderno é exatamente o que um bot bem feito envia.
  4. Confundir segmentação com proteção. Selecionar «só Android» é uma decisão sobre o público da oferta, não um jeito de se livrar de bots.
  5. Não olhar os motivos de bloqueio. Sem ver qual regra disparou, não dá para saber se o filtro corta bots ou pessoas. Os sinais pelos quais o tráfego de bots aparece nos relatórios estão no artigo sobre sinais de tráfego de bots.

Resumo

A string user agent é o que o cliente diz sobre si mesmo. Dá para confiar nela quando a aposta é baixa: identificar o dispositivo, distribuir o tráfego, fazer análise. Não dá para confiar nela como prova de que há uma pessoa do outro lado. O filtro por user agent remove bem scripts brutos e requisições vazias, mas a proteção de verdade começa quando o UA é comparado com rede, cabeçalhos, Client Hints, execução do script e comportamento. Aí a string falsificada não ajuda o bot, e uma string incomum não prejudica o visitante real.

Perguntas frequentes

01

O que é user agent em palavras simples?

É um pequeno cartão de visita em texto que o navegador ou outro programa envia ao servidor em cada requisição. Nele consta que programa é, qual versão e em que sistema roda. O servidor o usa para escolher o layout, contar estatísticas e às vezes decidir se deixa o visitante entrar.

02

Dá para falsificar o user agent?

Sim, e com muita facilidade. Em qualquer biblioteca de requisições HTTP é uma linha de configuração; no navegador, uma opção das ferramentas de desenvolvedor ou uma extensão. Por isso um UA igual ao do Chrome comum não prova nada, já uma incoerência clara entre o UA e os outros sinais da visita é um sinal de peso.

03

Como saber qual é o meu user agent?

O mais simples é abrir o console de desenvolvedor do navegador e executar navigator.userAgent: a string aparece inteira. Ela também aparece na aba Rede, nos cabeçalhos de qualquer requisição. Muitos sites de teste mostram o UA, mas os recursos do próprio navegador já bastam.

04

Por que não se bloqueiam robôs de busca pelo user agent?

Para um site comum, os robôs de busca são úteis: sem eles a página não entra nos resultados. Além disso, o UA deles é muito copiado, e os próprios buscadores recomendam verificar o robô não pela string, mas por uma consulta de DNS reverso ao IP. Bloqueá-los ou não é decisão do dono do site, não tarefa de um filtro de anúncios.

05

Client Hints vão substituir a string de user agent?

Em parte. Navegadores baseados em Chromium já reduzem a string clássica e passam os detalhes para os cabeçalhos Sec-CH-UA, sendo que parte deles o servidor só recebe se pedir. Outros navegadores não os suportam por completo, então na prática os sites leem as duas fontes e comparam uma com a outra.

Leia também

Veja o seu tráfego na prática

Conecte o ArtisanClo ao seu site, veja quem realmente chega pelos anúncios e por que cada clique recebeu a sua decisão.