Nota do Site

Robôs de IA no log: como saber se o GPTBot visitou seu site

Henrique Feng Por Publicado em

Resposta rápida

Para saber se o GPTBot visitou o seu site, abra o log de acesso do servidor e procure o nome do robô no user-agent: o Google Analytics não registra essas visitas. Depois, confira se o IP está na lista publicada pela OpenAI, porque qualquer programa pode usar o nome. No log do Nota do Site, 101 dos 810 pedidos que se diziam Googlebot vinham de fora da lista do Google.

O log de acesso é o arquivo em que o servidor do site anota cada pedido que recebe: de onde veio, quando, o que pediu, que resposta levou e com que nome o visitante se apresentou. É nele que a visita do GPTBot e dos outros robôs de IA fica registrada. O Google Analytics não serve para isso: o GA4 só conta quem carrega o código de medição, esses robôs em geral leem o HTML sem rodar JavaScript, e o próprio Google tira da conta o tráfego de robôs conhecidos. Abaixo, o caminho até o arquivo e o que apareceu quando abrimos o do próprio Nota do Site.

Onde fica o log de acesso do seu site?

Depende de quem cuida do servidor. Cada pedido vira uma linha: uma pessoa abrindo a página inicial, um robô buscando o sitemap, um script atrás de uma tela de login esquecida.

Hospedagem compartilhada com cPanel. No painel, procure Raw Access, na área de Métricas. Há um arquivo compactado (.gz) por domínio, com o registro bruto do Apache ou do Nginx, e uma lista de arquivos antigos. Ligue a opção que guarda uma cópia na pasta logs da sua conta depois de cada processamento das estatísticas, senão o histórico some. Se o item não aparece, a hospedagem desligou o recurso no seu plano: peça o arquivo ao suporte.

Servidor próprio ou VPS. No Nginx, o formato padrão se chama combined e o caminho depende da instalação; nos pacotes de Debian e Ubuntu, costuma ser /var/log/nginx/access.log. No Apache, procure a diretiva CustomLog na configuração. Em Debian e Ubuntu ela costuma apontar para /var/log/apache2/access.log; em Red Hat e derivados, para /var/log/httpd/access_log. Os arquivos antigos são rotacionados e ganham finais como .1 e .2.gz.

Site atrás de uma CDN. A CDN, a rede que entrega cópias do site a partir de servidores perto do visitante, muda duas coisas no log. Sem ajuste, o IP registrado passa a ser o da CDN, e não o de quem pediu. A Cloudflare manda o endereço original no cabeçalho CF-Connecting-IP e ensina a gravá-lo, no Nginx com o módulo realip e no Apache com o mod_remoteip. E o que ela entrega do próprio cache nunca chega ao seu servidor, portanto não vira linha.

No Nota do Site, o Nginx usa real_ip_header CF-Connecting-IP, mas só acredita nesse cabeçalho quando o pedido chega das faixas que a Cloudflare publica em cloudflare.com/ips, listadas com set_real_ip_from. A trava importa: sem ela, quem falasse direto com o servidor poderia escrever ali qualquer IP, até um da lista do Google. Um script renova essas faixas toda segunda-feira, no Nginx e no firewall, que só abre as portas 80 e 443 para a Cloudflare. É por isso que o IP de cada linha do nosso log é o de quem fez o pedido, e a conferência da tabela mais abaixo vale.

Para enxergar o que o cache esconde, a Cloudflare tem o painel AI Crawl Control (antes chamado AI Audit). Pela documentação conferida em 3 de novembro de 2026, ele existe em todos os planos, inclusive no grátis, e mostra os pedidos de cada robô de IA, os aceitos e os que falharam, os códigos de resposta e os caminhos mais pedidos.

No nosso caso, a Cloudflare não acrescenta nada ao robots.txt: em 3/11/2026, o arquivo servido em www.notadosite.com.br era exatamente o que o site gera, liberando todos os robôs, e o log mostra os de IA recebendo 200. Se o seu site passa por uma CDN, abra o robots.txt publicado e compare com o que você escreveu.

Construtor de sites ou plataforma de loja. Nem toda plataforma fechada entrega o log bruto. Procure "logs de acesso" na central de ajuda dela antes de desistir.

Como ler uma linha do log?

Toda linha segue o mesmo molde. Este é um exemplo no formato combined, com IP fictício:

203.0.113.45 - - [28/Oct/2026:09:14:02 -0300] "GET /blog/sitemap-xml HTTP/1.1" 200 18342 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"
Pedaço O que informa
203.0.113.45 O IP de origem. É com ele que você confere se o robô é quem diz ser
[28/Oct/2026:09:14:02 -0300] Data, hora e fuso do servidor
"GET /blog/sitemap-xml HTTP/1.1" O método (GET é leitura), o endereço pedido e a versão do protocolo
200 O código de resposta que o servidor devolveu
18342 O tamanho da resposta, em bytes
"-" O referenciador, a página de onde o visitante veio; robô quase nunca informa
"Mozilla/5.0 ... GPTBot/1.4 ..." O user-agent, o nome com que o visitante se apresenta

O user-agent é o campo que você vai filtrar. Só que ele é texto livre, e qualquer programa escreve ali o nome que quiser.

Como separar os robôs de IA do resto?

Com quatro comandos, no terminal do servidor ou no seu computador depois de baixar o arquivo. Os exemplos usam o caminho do Nginx; troque pelo seu.

Quantos pedidos cada robô fez, somando os arquivos antigos compactados (o zgrep lê os dois tipos):

zgrep -ohE 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Googlebot|bingbot|Applebot|Amazonbot' /var/log/nginx/access.log* | sort | uniq -c | sort -rn

Quais endereços um robô pediu, do mais pedido para o menos:

awk -F'"' '/ClaudeBot/ {split($2, r, " "); print r[2]}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

Que códigos de resposta ele recebeu:

awk -F'"' '/ClaudeBot/ {split($3, s, " "); print s[1]}' /var/log/nginx/access.log | sort | uniq -c

E a lista de IPs que usaram um nome, que vai servir na conferência seguinte:

awk '/Googlebot/ {print $1}' /var/log/nginx/access.log | sort -u > ips.txt

Um cuidado que aprendemos aqui: ferramenta de monitoramento também deixa rastro. O validador do Nota do Site testa o próprio site todo dia fingindo ser cada um dos robôs de IA, para saber se o servidor atende. São linhas com o nome do GPTBot que nunca passaram pela OpenAI. Antes de contar, tire do log os IPs dos seus próprios testes.

Como saber se o robô é verdadeiro?

Pelo IP, nunca pelo nome. As empresas publicam as faixas de endereço dos seus robôs, e algumas aceitam também a conferência por DNS reverso, a consulta que devolve o nome registrado para um IP.

Empresa Onde está a lista de IPs Outra forma de conferir
OpenAI openai.com/gptbot.json, openai.com/searchbot.json e openai.com/chatgpt-user.json —
Anthropic claude.com/crawling/bots.json —
Google common-crawlers.json (Googlebot) e os arquivos dos coletores acionados por usuários, na documentação do Search Central DNS reverso terminado em googlebot.com, google.com ou googleusercontent.com
Microsoft bing.com/toolbox/bingbot.json A ferramenta Verify Bingbot, que confere um IP por vez
Perplexity perplexity.ai/perplexitybot.json e perplexity.ai/perplexity-user.json —
Apple search.developer.apple.com/applebot.json DNS reverso em applebot.apple.com
Amazon Na página de IPs do Amazonbot, no portal de desenvolvedores da Amazon —

Pelo DNS reverso, que serve para poucos IPs. O Google descreve a conferência em duas etapas com o comando host. Primeiro, pergunte qual nome responde por aquele IP:

host 66.249.66.1

Se a resposta terminar num domínio do Google, como crawl-66-249-66-1.googlebot.com, faça o caminho inverso e veja se o nome leva ao mesmo IP:

host crawl-66-249-66-1.googlebot.com

A volta é obrigatória: quem controla um IP registra para ele o nome reverso que quiser, mas não consegue fazer o domínio do Google apontar de volta.

Pela lista publicada, que serve para muitos IPs. Baixe o arquivo da empresa e cruze com o ips.txt. Como todas as listas da tabela usam a mesma estrutura (prefixes, com ipv4Prefix ou ipv6Prefix), este trecho em Python serve para qualquer uma delas:

curl -s https://openai.com/searchbot.json -o lista.json
python3 - lista.json ips.txt <<'FIM'
import ipaddress, json, sys
redes = [ipaddress.ip_network(p.get('ipv4Prefix') or p.get('ipv6Prefix')) for p in json.load(open(sys.argv[1]))['prefixes']]
for linha in open(sys.argv[2]):
    ip = ipaddress.ip_address(linha.strip())
    print(ip, 'na lista' if any(ip in r for r in redes) else 'FORA DA LISTA')
FIM

A lista da Amazon vem dentro da própria página, e não num arquivo: copie o bloco para um lista.json antes de rodar. E baixe tudo de novo a cada conferência, porque as faixas mudam. Em 3 de novembro de 2026, o arquivo do GPTBot tinha sido gerado em 22 de setembro, o da Anthropic em 20 de outubro e o do Google naquele mesmo dia.

O que o log do Nota do Site mostrou em 13 dias?

Fizemos o exercício com o nosso servidor. Juntamos o log do Nginx desde a estreia do site, em 22/10/2026, até 3/11/2026: 13 dias, 11.868 pedidos, cerca de 80 páginas públicas. Os pedidos de teste do nosso validador, 21 por robô, ficaram de fora. A coluna de IP compara cada endereço com a lista publicada pela empresa; Amazonbot e CCBot ficaram sem essa conferência.

Robô (pelo user-agent) Pedidos Dias com visita (de 13) Endereços distintos IP na lista / fora dela O que mais pediu
Googlebot 810 13 131 709 / 101 posts 319, robots.txt 147, ferramentas 100
Bingbot 382 13 83 374 / 8 posts 137
Amazonbot 334 5 320 — posts 267; 129 respostas 405 e 88 respostas 404
ClaudeBot 273 12 106 264 / 9 sitemap 136, posts 68, robots.txt 31
OAI-SearchBot 127 9 108 117 / 10 posts 80
GoogleOther 116 13 91 116 / 0 posts 82
Applebot 101 8 92 101 / 0 posts 65
ChatGPT-User 28 10 11 22 / 6 página inicial 17
PerplexityBot 23 7 16 14 / 9 página inicial 7, posts 6
GPTBot 10 7 3 6 / 4 sitemap 6, página inicial 3
Claude-User 5 2 5 0 / 5 ferramentas 2, post 1
CCBot (Common Crawl) 7 1 7 — só endereços inexistentes (404)
Claude-SearchBot, Perplexity-User, meta-externalagent, Bytespider 0 — — — nenhuma visita real no período

O que dá para ler daí:

  • O ClaudeBot veio em 12 dos 13 dias. Dos 273 pedidos que fez, 136 buscaram o sitemap: ele consultou o mapa do site mais vezes do que leu posts.
  • Entre os robôs de IA, quem mais leu posts foi o OAI-SearchBot, o que alimenta a busca do ChatGPT: 80 pedidos a posts.
  • O GPTBot, robô de treino da OpenAI, quase não apareceu: 10 pedidos em 13 dias, vindos de 3 endereços.
  • Nome emprestado é comum. Dos 810 pedidos que se diziam Googlebot, 101 (12%) saíram de IPs fora da lista do Google. O mesmo vale para 10 dos 127 do OAI-SearchBot, 9 dos 23 do PerplexityBot e 9 dos 273 do ClaudeBot. Quem conta só pelo nome infla o número e corre o risco de liberar no firewall quem não devia.
  • O Amazonbot concentrou 334 pedidos em 5 dias, quase um endereço diferente por pedido, com 129 respostas 405 (o servidor não aceitou o método usado) e 88 respostas 404. Padrão assim pede que você abra as linhas, e não só a contagem.
  • Os 5 pedidos do Claude-User vieram de IPs fora da lista da Anthropic. A ajuda da empresa não diz se essa lista cobre esse robô, então o certo é registrar que os endereços não estavam na lista publicada, sem chamá-los de falsos.
  • Claude-SearchBot, Perplexity-User, meta-externalagent e Bytespider não fizeram nenhuma visita real. Num site com menos de duas semanas, ausência não é sinal de bloqueio.

Fora da IA, apareceram AhrefsBot (204 pedidos), MJ12bot (101 num dia só) e YandexBot (113). Robôs e scripts sem nome conhecido somaram 1.131 pedidos; 363 levaram 403 e 166 levaram 404, quase sempre atrás de endereços que nunca existiram aqui, o desenho de uma varredura em busca de falhas. Outros 6.901 pedidos não se apresentaram como robô: pessoas e robôs com cara de navegador, que o log sozinho não separa.

Trate esses números como um caso para aprender a ler o log, e não como média do mercado: um site só, recém-lançado, em menos de duas semanas. Além disso, o nosso servidor está atrás da Cloudflare, e as páginas que ela entregou direto do cache não deixaram rastro aqui, então o total real dos robôs fica acima da tabela.

Robô de treino, de busca ou a pedido: o que cada visita indica?

Depende da função do robô, e o quadro das três funções, empresa por empresa mostra quem é quem. No log, a leitura muda conforme o grupo:

  • Treino (GPTBot, ClaudeBot): a página pode entrar na coleta para os próximos modelos. A visita não prova que o texto foi usado.
  • Busca (OAI-SearchBot, Claude-SearchBot, PerplexityBot): a página entra no índice que a IA consulta para responder com link. Visitas frequentes mostram que o site está sendo acompanhado.
  • A pedido de uma pessoa (ChatGPT-User, Claude-User, Perplexity-User): alguém, numa conversa, fez a IA abrir aquela página naquela hora. No nosso log, 17 dos 28 pedidos do ChatGPT-User foram à página inicial.

Pedidos ao robots.txt e ao sitemap são o robô conferindo as regras e o mapa antes de ler. A OpenAI avisa que o GPTBot e o OAI-SearchBot podem acrescentar a marca robots.txt ao user-agent quando buscam esse arquivo, o que ajuda a separar essas linhas.

Quais códigos de resposta merecem atenção?

Seis códigos contam quase toda a história. O efeito de cada um sobre o Google está na documentação dele; as empresas de IA não publicam regra equivalente, mas um 403 barra qualquer robô do mesmo jeito.

Código O que aconteceu O que fazer
200 A página foi entregue Nada: é o esperado
304 O robô perguntou se a página mudou, e não tinha mudado Nada: ele reaproveita a cópia que já tem
403 O servidor recusou o pedido Se o robô é de busca e verdadeiro, procure a regra de firewall, CDN ou plugin de segurança que o barra
404 Ninguém tem página naquele endereço Se ela já existiu, redirecione com 301; se nunca existiu, ignore
429 Pedidos demais em pouco tempo Afrouxe o limite de taxa para os robôs verificados; o Google trata o 429 como servidor sobrecarregado e reduz o ritmo
503 Servidor indisponível Veja o horário dos erros; o Google também desacelera e, se o erro persiste, a página sai do índice

Usar 403 para segurar o ritmo de um robô é má ideia: o Google trata a página recusada como inexistente, e ela pode sair do índice.

O 403 para um robô de busca de IA, com o robots.txt liberado, é o caso que mais engana o dono do site. A causa costuma ser uma regra genérica contra robôs, e a chave de robôs de IA no painel da Cloudflare é um exemplo comum. A correção é uma regra de liberação que exija o nome do robô e o IP dentro da lista oficial, colocada antes das regras de bloqueio. Para conferir de fora, a análise completa do validador repete o pedido da sua página se passando por cada robô de IA e mostra quem é recusado. O teste sai da nossa infraestrutura, com endereços que não pertencem às empresas de IA, e um firewall que olha a origem pode responder a ele de um jeito e ao robô de outro. O log tira a dúvida.

O que o log não mostra?

Tudo o que não chegou ao seu servidor. Na prática, ficam de fora:

  • O que a CDN serviu do cache. Um robô pode ter lido a página sem deixar linha.
  • Robôs disfarçados, que caem junto com as pessoas.
  • O uso do conteúdo. Nenhuma linha diz se o texto entrou num treino ou numa resposta.
  • A pessoa que veio da IA. Quem clica num link dentro do ChatGPT chega como visita comum; para isso, meça as pessoas que chegam vindas do ChatGPT e de outras IAs no GA4.
  • A visão do Google sobre o rastreamento. Para o Googlebot, o gráfico de rastreamento que o Search Console guarda complementa o log com o tempo de resposta e as falhas de disponibilidade.
  • O passado distante. O que a rotação já apagou não volta.

O que fazer com o que o log mostrou?

Cada achado leva a uma tarefa diferente:

  1. Robô de busca verdadeiro recebendo 403 ou 503: ajuste o firewall ou a CDN com a regra de nome e IP descrita acima e confira de novo uma semana depois.
  2. Robô de busca que nunca aparece: confira na ferramenta que lê o seu robots.txt como cada robô de IA se o arquivo o barra. Se estiver liberado, dê tempo: site novo demora a entrar no radar.
  3. Muitos 404 de um mesmo robô: separe os endereços que já foram seus (redirecione) dos inventados (ignore).
  4. Volume grande de um nome com IP fora da lista: bloqueie pelo IP ou pelo comportamento, nunca pelo nome, para não derrubar o robô verdadeiro junto.
  5. Robô que pede o sitemap e quase não lê páginas: abra o sitemap e veja se ele lista as páginas certas, com datas de atualização reais.

Guarde uma cópia do log todo mês. A comparação entre um mês e o seguinte diz mais do que qualquer número isolado.

Perguntas frequentes

Achar o GPTBot no log prova que meu conteúdo treinou o ChatGPT?

Não. A linha prova só que um pedido com esse nome chegou ao servidor e qual resposta ele recebeu. O que a OpenAI faz depois com a página não aparece em nenhum registro do seu lado. Se você não quer o conteúdo no treino, a OpenAI indica barrar o GPTBot no robots.txt; o OAI-SearchBot, que leva o site às respostas com link, é configurado à parte.

Por que o ClaudeBot não aparece no Google Analytics?

Porque o GA4 só registra quem executa o código de medição, e esses robôs leem o HTML sem rodar JavaScript. Mesmo um robô que rodasse o código cairia na exclusão automática de tráfego de robôs conhecidos, que o Google aplica sem opção de desligar. Para ver robôs, o lugar certo é o log do servidor ou o painel da CDN.

Posso bloquear quem usa o nome do Googlebot com IP fora da lista?

Pode, desde que a regra olhe o endereço de origem, e não o nome. Barrar pelo texto Googlebot derruba o robô verdadeiro junto e tira o site do Google. Antes, confirme pelo DNS reverso ou pela versão mais recente da lista, porque as faixas mudam. No nosso log, 101 dos 810 pedidos com esse nome vinham de fora.

Quantos acessos de robôs de IA um site pequeno recebe?

Não existe número de referência confiável, e cada site tem o seu ritmo. Como exemplo, nos primeiros 13 dias do Nota do Site, com cerca de 80 páginas públicas, o ClaudeBot fez 273 pedidos, o OAI-SearchBot 127, o ChatGPT-User 28 e o GPTBot só 10. Compare o seu próprio log mês a mês, em vez de olhar a média dos outros.

Por quanto tempo o log de acesso fica guardado?

Depende da configuração. No cPanel, a opção de arquivar guarda cópias na pasta logs da sua conta, e por padrão elas ficam lá até você apagar; também dá para pedir a exclusão automática do mês anterior. Em servidor próprio, a rotação apaga os arquivos mais antigos depois de alguns ciclos. Para comparar meses, baixe uma cópia por mês.

Fontes

  1. Overview of OpenAI Crawlers · OpenAI
  2. Does Anthropic crawl data from the web, and how can site owners block the crawler? · Anthropic
  3. Lista de IPs dos robôs da Anthropic (bots.json) · Anthropic
  4. Verify requests from Google crawlers and fetchers · Google Search Central
  5. How HTTP status codes affect Google's crawlers · Google Search Central
  6. Exclusão de tráfego de bots conhecidos · Ajuda do Google Analytics
  7. Perplexity Crawlers · Perplexity
  8. About Applebot · Apple
  9. Verify Bingbot · Microsoft Bing
  10. Amazonbot · Amazon
  11. Module ngx_http_log_module · nginx
  12. Log Files · Apache HTTP Server
  13. Raw Access · cPanel
  14. Restoring original visitor IPs · Cloudflare
  15. IP Ranges · Cloudflare
  16. Cloudflare cache responses · Cloudflare
  17. AI Crawl Control · Cloudflare

Este artigo ajudou?

Compartilhar: WhatsApp LinkedIn X Facebook

Leia também

Sugestões, problemas e reclamações

Usamos a mensagem só para melhorar o site e, se você deixar o e-mail, para responder. Veja a política de privacidade.