GEO técnico
Encontre bots de IA nos logs do servidor (e confirme se são reais)
Seu analytics não vê rastreadores de IA. Os logs do seu servidor veem. Aqui estão comandos para copiar, as listas oficiais de IP e um checklist de privacidade.
Atualizado e verificado em 19 de outubro de 2026
Por que seu analytics não mostra bots de IA
Ferramentas como o Google Analytics contam visitas com um pequeno script que roda no navegador. Um rastreador que só baixa o seu HTML nunca executa esse script, então nunca aparece.
Seu servidor web registra cada requisição, de pessoas e de bots. Esse registro é o seu log de acesso.
Os logs respondem a três perguntas: quais bots visitam, quais páginas eles buscam e se recebem a página ou um erro.
Onde encontrar seus logs
- nginx: o formato padrão “combined” já tem tudo o que você precisa. No Debian e no Ubuntu, o arquivo costuma ficar em /var/log/nginx/access.log.
- Apache: use também o formato combined. O formato “common” não tem user agent, então com ele você não vê bots. Adicione %{User-agent}i ao seu LogFormat.
- Está atrás de uma CDN ou proxy? Então o primeiro campo pode mostrar o IP do proxy em toda requisição. Configure primeiro a opção de IP real do servidor (ou registre o IP do cliente repassado); senão, todas as verificações de IP abaixo vão falhar.
- Sem acesso aos logs brutos? Veja o painel da sua hospedagem ou coloque uma CDN na frente do site. Mais sobre isso abaixo.
Leia uma linha do log
Aqui está uma linha no formato combined, com um IP inventado. Cada parte responde a uma pergunta.
203.0.113.7 - - [19/Oct/2026:08:01:02 +0000] "GET /pricing HTTP/1.1" 200 5123 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"- Endereço IP: de onde veio a requisição. É ele que você vai comparar com as listas oficiais.
- Horário: quando aconteceu.
- Requisição: o método e a página. Aqui, GET /pricing.
- Código de status: 200 é entregue, 301/302 redirecionada, 403 bloqueada, 404 não encontrada, 5xx erro do servidor.
- Bytes: quanto foi devolvido.
- User agent: quem o visitante diz ser. Aqui, GPTBot. Qualquer um pode digitar isso, então sozinho não prova nada.
Os bots de IA para procurar
Esta lista vem da documentação de cada empresa, verificada em 19 de outubro de 2026.
| User agent | Empresa | O que faz | Segue o robots.txt | Lista de IP |
|---|---|---|---|---|
OAI-SearchBot | OpenAI | Índice de busca | Sim | OAI-SearchBot JSON (abre em uma nova aba) |
GPTBot | OpenAI | Treinamento | Sim | GPTBot JSON (abre em uma nova aba) |
ChatGPT-User | OpenAI | Pedido de usuário | Em parte | ChatGPT-User JSON (abre em uma nova aba) |
Claude-SearchBot | Anthropic | Índice de busca | Sim | Claude-SearchBot JSON (abre em uma nova aba) |
ClaudeBot | Anthropic | Treinamento | Sim | ClaudeBot JSON (abre em uma nova aba) |
Claude-User | Anthropic | Pedido de usuário | Sim | Claude-User JSON (abre em uma nova aba) |
PerplexityBot | Perplexity | Índice de busca | Sim | PerplexityBot JSON (abre em uma nova aba) |
Perplexity-User | Perplexity | Pedido de usuário | Não | Perplexity-User JSON (abre em uma nova aba) |
Googlebot | Buscador | Sim | Googlebot JSON (abre em uma nova aba) | |
Google-Agent | Pedido de usuário | Não | Google-Agent JSON (abre em uma nova aba)Google-Agent JSON (abre em uma nova aba)Google-Agent JSON (abre em uma nova aba) | |
bingbot | Microsoft | Buscador | Sim | bingbot JSON (abre em uma nova aba) |
Applebot | Apple | Buscador | Sim | Applebot JSON (abre em uma nova aba) |
meta-externalagent | Meta | Treinamento | Sim | Não publicada |
meta-webindexer | Meta | Índice de busca | Sim | Não publicada |
meta-externalfetcher | Meta | Pedido de usuário | Em parte | Não publicada |
Amazonbot | Amazon | Treinamento | Sim | Não publicada |
Amzn-SearchBot | Amazon | Índice de busca | Sim | Não publicada |
Amzn-User | Amazon | Pedido de usuário | Em parte | Não publicada |
DuckAssistBot | DuckDuckGo | Índice de busca | Sim | DuckAssistBot JSON (abre em uma nova aba) |
MistralAI-User | Mistral AI | Pedido de usuário | Sim | Não publicada |
MistralAI-Index | Mistral AI | Índice de busca | Não informado | Não publicada |
MistralAI-Training | Mistral AI | Treinamento | Sim | Não publicada |
CCBot | Common Crawl | Treinamento | Sim | CCBot JSON (abre em uma nova aba) |
Google-Extended e Applebot-Extended são tokens de robots.txt, não rastreadores. Eles nunca aparecem num log.
A Anthropic não publica strings de user agent completas. Nos logs, elas aparecem como “compatible; Claude-User/1.0; +claudebot@anthropic.com”.
Comandos para copiar
Funcionam com um log no formato combined. Testamos em 19 de outubro de 2026 com grep e awk no macOS. Troque access.log pelo seu arquivo.
grep -oE 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|meta-externalagent|Amazonbot|Applebot|DuckAssistBot|MistralAI-User|CCBot' access.log | sort | uniq -c | sort -rnawk -F'"' '{ split($3,a," "); if (match($6,/GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User/)) print substr($6,RSTART,RLENGTH), a[1] }' access.log | sort | uniq -cgrep 'OAI-SearchBot' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | headawk -F'"' '$6 ~ /GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User/ { split($3,a," "); if (a[1] >= 400) print a[1], $2 }' access.logzgrep -c 'GPTBot' /var/log/nginx/access.log.*.gzVerifique cada IP de bot com Python
Este script baixa as listas oficiais de IP e imprime VERIFIED ou NOT IN LIST para cada linha de bot. Ele só usa a biblioteca padrão do Python.
# Usage: python3 verify_bots.py access.log
import ipaddress, json, re, sys, urllib.request
LISTS = {
"GPTBot": "https://openai.com/gptbot.json",
"OAI-SearchBot": "https://openai.com/searchbot.json",
"ChatGPT-User": "https://openai.com/chatgpt-user.json",
"ClaudeBot": "https://claude.com/crawling/bots.json",
"Claude-User": "https://claude.com/crawling/bots.json",
"Claude-SearchBot": "https://claude.com/crawling/bots.json",
"PerplexityBot": "https://www.perplexity.com/perplexitybot.json",
"Perplexity-User": "https://www.perplexity.com/perplexity-user.json",
"Googlebot": "https://developers.google.com/static/crawling/ipranges/common-crawlers.json",
"bingbot": "https://www.bing.com/toolbox/bingbot.json",
}
cache = {}
def networks(url):
if url not in cache:
req = urllib.request.Request(url, headers={"User-Agent": "log-check/1.0"})
data = json.load(urllib.request.urlopen(req, timeout=20))
cache[url] = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix"))
for p in data["prefixes"]]
return cache[url]
bot = re.compile("|".join(sorted(map(re.escape, LISTS), key=len, reverse=True)))
for line in open(sys.argv[1], errors="replace"):
ua = line.split('"')[5] if line.count('"') >= 6 else line
match = bot.search(ua)
if not match:
continue
try:
ip = ipaddress.ip_address(line.split()[0])
except ValueError:
continue
ok = any(ip in net for net in networks(LISTS[match.group(0)]))
print("VERIFIED " if ok else "NOT IN LIST", match.group(0), ip)É mesmo o GPTBot? Verifique o IP
Um user agent é só texto. Qualquer um pode enviar “GPTBot”. A própria Perplexity recomenda combinar o user agent com a verificação de IP.
Opção 1: as listas oficiais de IP
OpenAI, Anthropic, Perplexity, Google, Microsoft (Bing), Apple, DuckDuckGo e Common Crawl publicam listas JSON com as faixas de IP dos seus bots. Se o IP está na lista, a requisição veio da rede daquela empresa. Os links estão na tabela acima.
Opção 2: DNS reverso
Google: consulte o nome de host do IP. Ele precisa terminar em googlebot.com, google.com ou googleusercontent.com, e consultar esse nome precisa devolver o mesmo IP. No Bing funciona igual, com nomes terminados em search.msn.com.
host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1 ← same IP: real GooglebotO que os números dizem
- Treinamento, busca e pedidos de usuário são coisas diferentes. GPTBot e ClaudeBot coletam dados de treinamento. OAI-SearchBot, Claude-SearchBot e PerplexityBot montam índices de busca. ChatGPT-User, Claude-User e Perplexity-User buscam uma página porque alguém está perguntando sobre ela agora.
- Muitas respostas 403 ou 5xx significam que você está bloqueando ou quebrando o acesso da IA. Confira seu firewall, as configurações de bots da sua CDN e seu robots.txt.
- Requisições ao robots.txt e ao llms.txt mostram quais bots leem suas regras. A OpenAI diz que o OAI-SearchBot e o GPTBot podem acrescentar uma marca de robots.txt ao user agent quando buscam esse arquivo.
- Pedidos de usuário podem pular o robots.txt. Segundo a OpenAI, as regras do robots.txt podem não valer para o ChatGPT-User, e segundo a Perplexity, o Perplexity-User costuma ignorá-las.
- Uma visita não é uma citação. Significa que um bot leu sua página, não que alguma resposta de IA vá citá-la.
Sem acesso ao servidor? Use sua CDN
O AI Crawl Control da Cloudflare (antes AI Audit) mostra quais serviços de IA rastreiam seu site e quais rastreadores ignoram suas regras. Segundo a Cloudflare, ele está disponível em todos os planos.
O Cloudflare Logpush pode exportar logs de requisições com campos como ClientIP, ClientRequestUserAgent, ClientRequestPath e EdgeResponseStatus. Nosso analisador também lê essas linhas JSON.
Logs e privacidade (RGPD)
Endereços IP podem ser dados pessoais. O Tribunal de Justiça da UE disse isso sobre IPs dinâmicos no caso Breyer (C-582/14, 19 de outubro de 2016), e o considerando 30 do RGPD cita endereços IP como identificadores por via eletrónica.
Os IPs dos bots pertencem a empresas, mas o mesmo log também guarda os IPs dos seus visitantes. Uma abordagem prática:
- Separe primeiro as linhas de bots e trabalhe com elas.
- Guarde os logs brutos só pelo tempo necessário, por exemplo para segurança. O RGPD não fixa um número de dias; diz para não guardar dados pessoais por mais tempo do que o necessário.
- Guarde totais (bot, dia, página, status, verificado ou não) em vez de IPs.
- Encurte ou aplique hash ao IP depois de verificá-lo.
- Não envie logs brutos a uma ferramenta externa sem um contrato de subcontratação. Nosso analisador roda no seu navegador, então nada é enviado.
Isto é informação geral, não aconselhamento jurídico.
Perguntas frequentes
Como sei se o ChatGPT visita meu site?
Procure no seu log de acesso por OAI-SearchBot (busca do ChatGPT), ChatGPT-User (pedido de um usuário) e GPTBot (treinamento). Depois compare os IPs com as listas da OpenAI.
Por que o Google Analytics não mostra o GPTBot?
O Google Analytics conta visitas por um script no navegador. Rastreadores que só baixam o seu HTML não o executam.
Como sei se uma requisição do GPTBot é real?
Compare o IP com openai.com/gptbot.json. Se não estiver na lista, trate a requisição como não verificada.
Quais bots ignoram o robots.txt?
Segundo a própria documentação: bots que buscam uma página porque um usuário pediu. A OpenAI diz que o robots.txt pode não valer para o ChatGPT-User, a Perplexity diz que o Perplexity-User costuma ignorá-lo, e o Google diz o mesmo dos seus fetchers acionados por usuários.
O que significam erros 403 para bots de IA?
Seu servidor, firewall ou CDN recusou a requisição. Se você quer ser encontrado na busca com IA, encontre a regra que bloqueia o bot e mude-a.
Posso registrar endereços IP?
Em geral sim, para uma finalidade clara como segurança, mas IPs podem ser dados pessoais. Guarde logs por pouco tempo, armazene totais em vez de IPs e mencione o registro na sua política de privacidade. Isto não é aconselhamento jurídico.
Continue aprendendo
Garanta que os bots encontrem algo que valha a pena
Rastreado não é citado. Veja como as ferramentas de IA leem sua página, em 22 pontos.
Analisar minha página