Agente de usuário

O que é um user agent — o cabeçalho HTTP que rastreadores e navegadores usam para se identificar, o token do robots.txt versus a string completa, e como verificar se um bot é real.

Publicado pela primeira vez: 24 de jun. de 2026 · Última atualização: 3 de ago. de 2026 · Avançado
Idiomas
2 sinais de evidência nesta página

Um user agent é o cabeçalho HTTP que todo cliente — navegador, rastreador ou bot — envia para se identificar. Duas coisas são confundidas: a *string* completa do user-agent no cabeçalho da solicitação e o *token* curto do user-agent (Googlebot, bingbot, Google-Extended) que você segmenta no robots.txt. O token é uma substring da string (RFC 9309); alguns tokens, como Google-Extended, não têm string de solicitação alguma. A string é trivialmente falsificada — o Google diz que a sua é 'frequentemente falsificada' — então nunca confie nela para controle de acesso. Verifique Googlebot/Bingbot por DNS reverso mais uma consulta direta, ou contra faixas de IP publicadas. E cuidado com as pegadinhas: AdsBot e Google-Safety ignoram `User-agent: *`, números de versão e curingas na linha do token são ignorados, a correspondência não diferencia maiúsculas de minúsculas, e servir conteúdo diferente para um UA de bot do que para usuários é cloaking.

TL;DR — Um user agent é o cabeçalho de solicitação HTTP que qualquer cliente envia para se identificar; é opcional, metadados preenchidos pelo cliente, não uma identidade autenticada. Seu valor é a string do user agent. Separado disso está o token do user agent (token de produto) usado em robots.txt — a RFC 9309 diz que ele DEVE ser uma substring da string, uma convenção forte com exceções documentadas (Google-Extended não tem string de solicitação alguma). A correspondência não diferencia maiúsculas de minúsculas, números de versão/curingas na linha do token são ignorados, o grupo mais específico vence e grupos com o mesmo token se mesclam, mas nunca se mesclam com *. A string é trivialmente falsificável — o Google chama a sua própria de “frequentemente falsificada” — então verifique por DNS reverso + direto (atrás de qualquer proxy/CDN, use o IP real do cliente) contra googlebot.com/google.com/googleusercontent.com para o Google ou search.msn.com para o Bing, ou corresponda a faixas de IP publicadas — e mesmo uma solicitação verificada apenas prova que uma solicitação chegou, não que a página foi indexada, recuperada ou usada para treinamento de IA. AdsBot e Google-Safety ignoram User-agent: *. O Chrome também está congelando detalhes das strings de UA do navegador (redução de User-Agent); Client Hints são a substituição estruturada, mas opt-in, e nenhuma substitui a verificação do crawler. A adaptação do user agent pode ser legítima, mas mostrar enganosamente aos crawlers conteúdo materialmente diferente pode ser cloaking.

Evidence for this claim HTTP User-Agent is a request field containing product information supplied by the client; it is descriptive text and not proof of identity. Scope: HTTP semantics for User-Agent. Confidence: high · Verified: IETF RFC 9110: User-Agent Evidence for this claim robots.txt User-agent matching is defined by the Robots Exclusion Protocol and controls crawler access, not authentication or general HTTP content negotiation. Scope: RFC 9309 robots matching behavior. Confidence: high · Verified: IETF RFC 9309: Robots Exclusion Protocol

O cabeçalho, a string e o token

Três coisas, e mantê-las distintas é a maior parte deste tópico.

  • O cabeçalho. User-Agent é um cabeçalho de solicitação HTTP. Todo cliente o envia: seu navegador, curl, um crawler, um bot. De acordo com a RFC 9110 (o padrão central de semântica HTTP), é um campo opcional que o cliente preenche — metadados descritivos fornecidos pelo cliente, não uma identidade autenticada que o servidor verificou.
  • A string. O valor do cabeçalho — uma linha de formato livre descrevendo o software, versão, mecanismo de renderização e, às vezes, o SO.
  • O token. O identificador curto usado nas linhas User-agent: do robots.txt para direcionar um crawler — Googlebot, bingbot, Google-Extended.

A relação é a parte que confunde as pessoas. A RFC 9309 (o padrão formal do Protocolo de Exclusão de Robôs) diz que o token “DEVE ser uma substring da string de identificação que o crawler envia… no caso de HTTP, o token de produto DEVE ser uma substring no cabeçalho User-Agent.” Isso é um DEVE, não um OBRIGATÓRIO — uma convenção forte que o padrão recomenda, não um requisito rígido ao qual todo crawler está mecanicamente vinculado. Google-Extended (abaixo) é o exemplo mais claro de uma exceção documentada a isso. Não leia a regra da substring como universal só porque o Google a segue para a maioria de seus próprios tokens. O token é parte da string quando um provedor fornece um; você direciona o token no robots.txt e lê a string nos seus logs.

Evidence for this claim A robots.txt user-agent line selects a crawler product token, not an arbitrary full HTTP User-Agent string; RFC 9309 says the token should be a substring of the identification string, but this SHOULD-level convention has documented product-specific exceptions and is not authentication. Scope: robots.txt parsing and matching Confidence: high · Verified: Robots Exclusion Protocol

O próprio enquadramento do Google sobre como seus bots se identificam é útil aqui: “Os crawlers do Google se identificam por três coisas: o cabeçalho de solicitação HTTP user-agent, o endereço IP de origem da solicitação e o nome de host DNS reverso do IP de origem.” Observe que o user agent é apenas um dos três — os outros dois são como você realmente o verifica.

Google-Extended: um token sem string

A ilustração mais clara de token ≠ string é Google-Extended. Ele controla se o Google pode usar seu conteúdo para treinamento e fundamentação do Gemini — e ele não tem nenhuma string de user agent de solicitação HTTP dedicada. O rastreamento em si é feito com strings existentes do Googlebot; Google-Extended existe apenas como um token de controle do robots.txt. Você nunca verá “Google-Extended” em um cabeçalho de solicitação nos seus logs.

A consequência prática: bloquear Google-Extended afeta apenas o uso do seu conteúdo para treinamento de IA — isso não impede o Googlebot de rastrear e indexar você para a Pesquisa. São decisões separadas controladas por tokens separados. (Para uma visão mais ampla dos bots que leem seu site, veja rastreadores de IA e rastreador.)

Strings de user-agent do Googlebot

O Googlebot é “evergreen” — ele roda em uma versão recente do Chrome, e a versão do Chrome em sua string é atualizada periodicamente (desde dezembro de 2019). É por isso que a versão aparece como um espaço reservado W.X.Y.Z:

Googlebot Smartphone (celular):

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Googlebot Desktop:

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/W.X.Y.Z Safari/537.36

Duas coisas para internalizar. Primeiro, não codifique a versãoW.X.Y.Z muda, e corresponder a ela quebrará. Em vez disso, corresponda ao token estável Googlebot. Segundo, você não pode separar celular de desktop no robots.txt. Ambas as variantes compartilham o único token Googlebot, então uma regra de robots.txt se aplica a ambas.

Tokens de rastreadores do Google

O Google executa uma família inteira de rastreadores e buscadores, cada um com seu próprio token. Os que você encontrará com mais frequência:

RastreadorToken do robots.txtNotas
GooglebotGooglebotPesquisa, Imagens, Vídeo, Notícias, Discover — celular + desktop compartilham este token
Googlebot ImageGooglebot-ImageGoogle Imagens
Googlebot VideoGooglebot-VideoPesquisa de Vídeo
Googlebot NewsGooglebot-NewsUsa várias strings do Googlebot
Google StoreBotStorebot-GoogleShopping
Google-InspectionToolGoogle-InspectionToolAlimenta as ferramentas de teste de pesquisa
GoogleOtherGoogleOtherPesquisa/busca interna
Google-ExtendedGoogle-ExtendedSomente robots.txt — treinamento do Gemini, sem string de solicitação

E os que quebram as regras usuais — os rastreadores de caso especial que ignoram User-agent: *:

  • AdsBot (AdsBot-Google) e AdsBot Mobile (AdsBot-Google-Mobile) — eles não obedecem ao curinga. Para bloqueá-los, você deve nomeá-los explicitamente.
  • AdSense (Mediapartners-Google) — o mesmo; ignora o * global.
  • Google-Safety — usado para detecção de malware/abuso; ele ignora o robots.txt completamente.

A implicação é a que as pessoas perdem: User-agent: * não bloqueia o AdsBot ou o Google-Safety. Se você “bloquear todos os bots” com um curinga e assumir que o AdsBot está bloqueado, ele não está. (Este é exatamente o tipo de surpresa que coloca uma página no território de indexado embora bloqueado por robots.txt — veja robots.txt para a história completa de controle.)

Strings de user-agent do Bingbot

O Bing reconstruiu a string do Bingbot em 2022 para refletir que ele renderiza com o Microsoft Edge. As strings atuais:

Bingbot Desktop:

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/W.X.Y.Z Safari/537.36

Bingbot Mobile:

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

O token do robots.txt é apenas bingbot. O que observar: pós-2022, a string do Bingbot parece quase exatamente com um navegador Chrome/Edge real — a única pista é o fragmento bingbot/2.0 dentro dela. Se você tem qualquer lógica que filtra ou detecta bots por UA, essa mudança importa.

Como o robots.txt realmente corresponde a um token

Algumas regras governam qual grupo de regras um rastreador obedece (de acordo com a especificação do robots.txt do Google e a RFC 9309):

  • A correspondência mais específica vence. O Google “determina o grupo correto de regras encontrando… o grupo com o user agent mais específico que corresponde ao user agent do rastreador.” Um grupo Googlebot vence um grupo * para o Googlebot.
  • Grupos com o mesmo token se fundem — mas nunca com *. Vários grupos nomeando o mesmo agente são combinados em um. Um grupo de agente específico e o grupo * não são fundidos; * é apenas o fallback quando nada específico corresponde.
  • Insensível a maiúsculas e minúsculas. Tanto o nome do campo quanto o valor — Googlebot, googlebot, GOOGLEBOT são equivalentes.
  • Números de versão e curingas na linha do token são ignorados. De acordo com o Google, “tanto googlebot/1.2 quanto googlebot* são equivalentes a googlebot.” Você não pode escrever User-agent: Googlebot* para corresponder a uma família — o * ali não faz nada.

Portanto, uma linha User-agent: recebe um token e o corresponde como uma substring simples (sem diferenciar maiúsculas de minúsculas) da identidade do rastreador — sem fixação de versão, sem curingas dentro dela.

Por que você não pode confiar na string — e como verificar

A string de user-agent é texto livre. Qualquer coisa pode defini-la. Uma linha de curl vai alegar ser Googlebot, e muitas ferramentas e bots maliciosos fazem exatamente isso para passar por bloqueios. O Google diz isso em sua própria documentação do Googlebot: “o cabeçalho de solicitação HTTP user-agent usado pelo Googlebot é frequentemente falsificado por outros rastreadores.” Como eu coloquei no meu guia do Googlebot, “Muitas ferramentas de SEO e alguns bots maliciosos fingem ser Googlebot. Isso pode permitir que eles acessem sites que tentam bloqueá-los.”

Portanto, nunca tome uma decisão de acesso ou conteúdo com base apenas na string. Verifique em vez disso.

Um pré-requisito antes de qualquer um dos métodos: obtenha o real IP de origem. Se o seu site estiver atrás de um proxy reverso, balanceador de carga ou CDN, o endereço no seu log de acesso padrão pode ser o IP do proxy, não o do rastreador — você precisa do IP original do cliente (geralmente encaminhado em um cabeçalho como X-Forwarded-For, configurado corretamente no seu proxy) ou nenhum dos métodos de verificação abaixo significa nada.

Método 1 — DNS reverso + direto (melhor para verificações pontuais). Os dois passos do Google:

  1. “Execute uma consulta DNS reversa no endereço IP de acesso dos seus logs, usando o comando host. Verifique se o nome de domínio é googlebot.com, google.com ou googleusercontent.com.”
  2. “Execute uma consulta DNS direta no nome de domínio obtido no passo 1… Verifique se é o mesmo que o endereço IP de acesso original dos seus logs.”

Para o Bingbot, a mesma dança de dois passos, mas o nome de host deve terminar em search.msn.com (não um domínio com a marca Bing — uma surpresa comum). Os comandos estão na aba Scripts.

Método 2 — faixas de IP publicadas (melhor em escala). O Google não publica uma lista de permissões estática para hardcoding (“essas faixas de endereços IP podem mudar”), mas publica arquivos JSON de CIDR legíveis por máquina que você pode comparar (common-crawlers.json e os arquivos de rastreadores mais amplos). O Bing agora também publica suas faixas. Eu construí uma ferramenta de verificação de IP do Googlebot exatamente para isso — cole IPs e ela os classifica. O Bing Webmaster Tools também tem uma ferramenta integrada “Verify Bingbot”.

DNS é melhor para uma verificação de log pontual; correspondência de faixa de IP é melhor para verificação em volume. Use o que se adequar — mas use um deles. E trate tanto os nomes de host esperados quanto os arquivos de faixa como atuais até hoje, não permanentes — Google e Bing já mudaram esses caminhos antes (os arquivos JSON de faixa de IP foram movidos e renomeados desde que este artigo foi escrito), então verifique novamente o documento de verificação ao vivo se uma consulta que costumava funcionar parar de corresponder.

Uma correspondência de UA não é prova de resultados posteriores

Mesmo uma solicitação totalmente verificada — IP real do Googlebot, DNS reverso confirmado direto, tudo confere — prova apenas uma coisa: essa solicitação chegou ao seu servidor. É tentador arredondar isso para uma afirmação muito maior, mas cada uma destas é um fato separado que exige evidências separadas:

  • Solicitação recebida — uma solicitação com esse user agent atingiu seu servidor. (O que a verificação de log realmente prova.)
  • Identidade confirmada — a solicitação realmente veio do crawler que afirma ser. (O que a correspondência de DNS reverso / faixas de IP adiciona por cima.)
  • Conteúdo buscado e renderizado — o crawler renderizou a página com sucesso (sem erros, sem recursos bloqueados). Não é garantido apenas porque uma solicitação chegou.
  • Indexado — a URL entrou no índice de busca. Uma busca bem-sucedida não garante a indexação.
  • Usado para recuperação, citação ou treinamento — especialmente para crawlers de IA (Google-Extended, GPTBot e outros), um rastreamento não é prova de que seu conteúdo foi recuperado para uma resposta específica, citado ou usado no treinamento de modelos. Essas são etapas separadas, em grande parte não observáveis, posteriores ao rastreamento.

Um hit verificado do Googlebot em seus logs é um sinal real — apenas não o estenda além do que ele realmente mostra.

Autenticação de Bot da Web: para onde a verificação está indo

Em 2026, o Google começou a experimentar o Web Bot Auth“um protocolo criptográfico experimental usado para autenticar solicitações enviadas por bots.” A ideia é “ir além de cabeçalhos facilmente falsificáveis para uma identidade verificada e desacoplar a identidade do agente dos endereços IP.” Os bots assinam criptograficamente suas solicitações; os sites verificam a assinatura contra as chaves públicas publicadas do Google, e as solicitações assinadas carregam um cabeçalho Signature-Agent. A ressalva do próprio Google é importante: “Não assinamos todas as solicitações de um agente específico. Certifique-se de recorrer aos métodos estabelecidos de verificação de bots.” Portanto, é aditivo, não um substituto — DNS reverso e faixas de IP continuam sendo sua base hoje.

Os navegadores também estão ficando mais difíceis de analisar a partir da string UA

Tudo acima é sobre crawlers, mas a mesma lição de “não confie demais na string” se aplica aos navegadores, e está ficando mais forte. O Chrome vem implementando a redução de User-Agent: congelando ou reduzindo a granularidade de partes de sua string UA (versão completa do navegador, versão do sistema operacional, modelo do dispositivo) em vez de relatá-las exatamente, para que a string não possa ser usada para identificar um usuário específico. O enquadramento do próprio Google: “A granularidade e a abundância de detalhes podem levar à identificação do usuário. A disponibilidade padrão dessas informações pode levar a rastreamento oculto.” Na prática, isso significa que a análise da string UA para versões exatas de navegador/SO/dispositivo — análises, detecção de dispositivo, triagem de bugs — é cada vez menos confiável e só vai piorar.

A substituição que o Chrome recomenda são as User-Agent Client Hints (UA-CH): dados estruturados que o navegador envia apenas quando um servidor solicita explicitamente. Hints de baixa entropia (marca do navegador, versão principal, sinalizador móvel) são enviados por padrão; hints de alta entropia (versão exata, versão da plataforma, modelo do dispositivo) exigem que o servidor opte por participar por meio de um cabeçalho de resposta Accept-CH primeiro — uma negociação explícita, não uma transmissão. Duas ressalvas antes de confiar nisso: é um mecanismo da família Chrome/Chromium, não algo que todos os navegadores enviam, e mesmo onde é suportado, “o valor pode estar em branco, não retornado ou preenchido com um valor variável.” As Client Hints resolvem o problema da string do navegador; elas não são um mecanismo de verificação de crawler — Google e Bing ainda verificam seus próprios crawlers via DNS e faixas de IP, não via Client Hints.

Segmentação por user-agent e cloaking

A jogada tentadora — “detectar o Googlebot pelo seu UA e servir algo especial para ele” — é ao mesmo tempo tecnicamente frágil e uma violação de política.

Frágil, porque o Google não rastreia com um único UA. Você teria que lidar corretamente com Googlebot (móvel e desktop), Google-InspectionTool, AdsBot, GoogleOther e outros, a partir de IPs rotativos — praticamente impossível de incluir na lista de permissões de forma limpa.

Uma violação de política, porque servir conteúdo diferente a um crawler e a usuários é cloaking: “apresentar conteúdo diferente a usuários e mecanismos de busca com a intenção de manipular o ranqueamento nos mecanismos de busca e enganar usuários.” A penalidade varia de desclassificação algorítmica a desindexação total. Observe a linha: adaptação legítima (layouts responsivos, negociação de conteúdo) é aceitável — é trocar o conteúdo em si entre bots e usuários que cruza a linha para cloaking.

Para saber onde o user agent se encaixa no pipeline maior, veja crawling (o hub) e crawler. Para controlar o que esses bots podem buscar, veja robots.txt.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.