Veja quais rastreadores de IA visitam de fato o seu site

O seu robots.txt diz quais rastreadores de IA podem ler o seu site. O seu log de acesso diz quais leram, com que frequência e o que receberam de volta. Este guia mostra onde encontrar esse log, como contar as visitas de rastreadores de IA com alguns comandos de shell e como distinguir um rastreador real de um que só pega o nome dele emprestado.

Tipo de site

Por que importa quem visita de fato

Um assistente de IA só pode citar uma página que um dos seus rastreadores leu. Se nenhum deles buscou a sua página de preços, nenhuma resposta vai citá-la, por mais bem escrita que ela seja.

O seu robots.txt, e a tabela de bots de IA em um relatório do SagBot, dizem quais rastreadores podem ler o seu site. Não dizem quais vieram. O log de acesso do seu servidor diz: cada requisição, com o endereço de origem, a página, o código de status e o user agent que identifica o rastreador.

Quais rastreadores de IA existem e por que eles vêm

Os rastreadores de IA vêm por um de três motivos. Os rastreadores de treinamento coletam páginas para treinar modelos. Os rastreadores de busca montam o índice que o assistente consulta ao responder. Os agentes a pedido do usuário buscam uma página na hora porque alguém acabou de perguntar ao assistente sobre ela. As visitas destes dois últimos são as que podem levar a uma citação.

A OpenAI envia o GPTBot para treinamento, o OAI-SearchBot para busca e o ChatGPT-User para requisições ao vivo. A Anthropic envia ClaudeBot, Claude-SearchBot e Claude-User; a Perplexity envia PerplexityBot e Perplexity-User. A Meta usa meta-externalagent, meta-webindexer e meta-externalfetcher, a Amazon usa Amazonbot, Amzn-SearchBot e Amzn-User, e a Mistral e o DuckDuckGo enviam MistralAI-User e DuckAssistBot. O Bytespider (ByteDance) e o CCBot (Common Crawl, um arquivo aberto usado para treinar muitos modelos) coletam dados de treinamento.

Dois nomes que você não vai encontrar em um log: Google-Extended e Applebot-Extended são regras do robots.txt, não rastreadores. O Google busca páginas com o Googlebot e a Apple com o Applebot; as regras Extended só decidem se o que eles buscaram pode ser usado para IA. Já o agente do Google para requisições ao vivo de usuários, o Google-Agent, aparece com o próprio nome.

1. Encontre o seu log de acesso

No seu próprio servidor, o log é um arquivo de texto simples. O nginx grava em /var/log/nginx/access.log. O Apache grava em /var/log/apache2/access.log no Debian e no Ubuntu, e em /var/log/httpd/access_log no Red Hat, Rocky e Alma. Os dias anteriores são rotacionados para arquivos numerados ou datados ao lado dele, e os mais antigos são compactados como .gz.

Em hospedagem compartilhada ou gerenciada, procure no painel da hospedagem os logs de acesso brutos e baixe-os. Algumas hospedagens guardam só alguns dias, então salve-os regularmente se quiser uma visão mais longa.

Atrás do Cloudflare, abra o AI Crawl Control do seu domínio no painel. Ele está em todos os planos e mostra as requisições por rastreador de IA, os códigos de status e os caminhos mais requisitados, sem nenhum arquivo de log; no plano gratuito, as métricas cobrem as últimas 24 horas. Para as linhas brutas das requisições, o Logpush as exporta para um armazenamento que você escolher. O Cloudflare só vê os hostnames com proxy (a nuvem laranja); registros somente DNS vão direto para o seu servidor.

Na Vercel, a página Logs do projeto mostra as requisições recentes com o user agent, por uma hora no Hobby e por um dia no Pro. Um log drain (Pro e Enterprise) envia todas as requisições, incluindo arquivos estáticos, para um armazenamento que você escolher.

2. Confira se o log guarda o user agent

É o user agent que identifica o rastreador, então toda linha precisa dele. O nginx e o Apache têm um formato chamado combined que termina cada linha com o referrer e o user agent entre aspas. O nginx o usa a menos que você escolha outro; o Apache o define, e a sua linha CustomLog decide se ele é usado.

Veja as últimas linhas do log com o primeiro comando abaixo. Se cada uma termina com o nome de um navegador ou bot entre aspas, está tudo certo. Se as linhas terminam com o status e uma contagem de bytes, o servidor grava no Common Log Format, que não tem user agent: defina combined na linha access_log (nginx) ou na linha CustomLog (Apache), como abaixo, e recarregue o servidor.

Os comandos dos próximos passos supõem o layout combined. Se você usa o seu próprio log_format ou LogFormat, mantenha $http_user_agent ou %{User-Agent}i como o último campo entre aspas, ou adapte os comandos.

tail -n 3 /var/log/nginx/access.log
access_log /var/log/nginx/access.log combined;
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog ${APACHE_LOG_DIR}/access.log combined

3. Conte as visitas por rastreador de IA

Cole o primeiro bloco em um shell no servidor. Ele define BOTS com os nomes de rastreadores de IA da tabela de bots de IA do SagBot e conta as requisições por rastreador no log atual. Mude o caminho se o seu for diferente, por exemplo /var/log/apache2/access.log.

O segundo bloco faz o mesmo nos arquivos rotacionados, compactados ou não; rode-o no mesmo shell para que BOTS continue definida. Os rastreadores de treinamento costumam liderar a lista. As visitas dos rastreadores de busca e dos agentes a pedido do usuário são as ligadas às respostas, então vale notar quando elas estão faltando.

BOTS='GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User'
BOTS="$BOTS|PerplexityBot|Perplexity-User|Google-Agent|Applebot|Bytespider|CCBot"
BOTS="$BOTS|meta-externalagent|meta-webindexer|meta-externalfetcher|Amazonbot"
BOTS="$BOTS|Amzn-SearchBot|Amzn-User|MistralAI-Training|MistralAI-Index"
BOTS="$BOTS|MistralAI-User|DuckAssistBot"
awk -F'"' '{print $6}' /var/log/nginx/access.log \
  | grep -Eo "$BOTS" | sort | uniq -c | sort -rn
zgrep -hE "${BOTS:?}" /var/log/nginx/access.log* \
  | awk -F'"' '{print $6}' | grep -Eo "$BOTS" | sort | uniq -c | sort -rn

4. Verifique se um rastreador é legítimo

Qualquer um pode enviar uma requisição cujo user agent diga GPTBot, e scrapers fazem isso. Para confiar em uma visita, compare o endereço de origem com a lista do próprio operador. O primeiro comando abaixo lista os endereços que se apresentaram como GPTBot; troque por qualquer outro nome.

OpenAI, Anthropic, Perplexity, Amazon, Apple e Common Crawl publicam as faixas de IP dos seus rastreadores na documentação dos bots. Google e Bing também podem ser verificados por DNS reverso: o endereço precisa resolver para um nome googlebot.com, google.com ou googleusercontent.com no caso do Google, ou search.msn.com no caso do Bing, e esse nome precisa resolver de volta para o mesmo endereço. O segundo bloco mostra a verificação com o endereço de exemplo do próprio Google. Apple (applebot.apple.com) e Common Crawl (crawl.commoncrawl.org) passam no mesmo teste.

Meta e ByteDance não publicam nenhuma lista de endereços até o momento em que este texto foi escrito, então as visitas delas podem ser contadas, mas não verificadas.

awk '/GPTBot/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
host 66.249.66.1
host crawl-66-249-66-1.googlebot.com

5. Encontre as páginas que falham com os rastreadores de IA

Um rastreador que recebe um 404 ou um 500 vai embora sem nada para citar, e uma página que continua falhando pode sair do índice dele.

O bloco abaixo lista os caminhos que responderam aos rastreadores de IA com 404 ou qualquer 5xx, dos mais frequentes para os menos; ele precisa de BOTS do passo de contagem no mesmo shell. Redirecione as páginas movidas para o novo endereço, corrija os erros e tire os links quebrados do sitemap e dos links internos.

awk -F'"' -v bots="${BOTS:?}" '$6 ~ bots {
  split($3, f, " "); split($2, r, " ")
  if (f[1] == 404 || f[1] >= 500) print f[1], r[2]
}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20

O que os logs não mostram

Uma página servida a partir do cache de uma CDN nunca chega ao seu servidor, então o seu próprio log conta menos do que deveria. Use os logs da CDN ou a visão de rastreadores dela para ter o quadro completo.

O Cloudflare só vê hostnames com proxy. Um hostname configurado como somente DNS não mostra nenhuma visita no AI Crawl Control, por mais rastreadores que cheguem a ele.

O user agent sozinho pode ser falsificado, e o Common Log Format nem chega a registrá-lo.

Logs mostram visitas, não citações. Um rastreador ler uma página não significa que um assistente vai citá-la; com que frequência você é citado é uma medição à parte.

Confira quem pode ler o seu site

Uma análise gratuita lê o seu robots.txt e mostra quais rastreadores de IA ele deixa entrar e quais bloqueia, ao lado do restante da prontidão do seu site para IA.

Tipo de site

Leia a seguir