Rastreadores de IA: visitas do GPTBot e do ClaudeBot medidas e bloqueio com robots.txt e nginx

Aviso de afiliados v3.1
Aviso de afiliados v3.2 (somente celular)
Ambiente de teste Família RHELAlmaLinux 9.8Nginx 1.28 + Apache 2.4Verificado em 2026-10-18

Um crawler de IA é um bot que as empresas de IA usam para coletar páginas da web para treinar modelos, alimentar a busca com IA e responder a perguntas de usuários. Para ver com que frequência esses bots visitam um servidor com Nginx + Apache, comparamos os UAs de 14 dias de logs de acesso do servidor de origem com as faixas de IP que cada empresa publica: as requisições vindas das faixas oficiais somaram 18.605, e reunimos as configurações para bloqueá-los ou permiti-los no robots.txt e no nginx conforme a documentação oficial.

O período é de 4 a 17 de outubro de 2026; requisições respondidas pelo cache na frente, que nunca chegaram ao servidor de origem, e requisições cujo IP real não foi registrado não entram nos números.

1️⃣ Identificar crawlers de IA: UAs no log de acesso e faixas de IP publicadas

Nem toda requisição registrada como GPTBot vem da OpenAI. O UA é um texto que quem faz a requisição escreve e envia, então qualquer um pode fazer requisições com o nome GPTBot ou ClaudeBot.

Por isso, primeiro contamos as requisições por nome de bot pelo UA e depois as comparamos com as faixas de IP que cada empresa publica. Abaixo estão os nomes de bots de IA contados em um dia de logs.

grep -oiE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Bytespider|CCBot|Amazonbot|meta-externalagent)/' access.log-20261018 | sort | uniq -c | sort -rn
   2968 GPTBot/
   2084 ClaudeBot/
    622 meta-externalagent/
    535 Amazonbot/
    167 PerplexityBot/
     99 OAI-SearchBot/
     30 ChatGPT-User/
     21 Claude-User/
     17 Claude-SearchBot/
     12 Meta-ExternalAgent/
     10 Perplexity-User/
      7 CCBot/

Contar com [/] depois do nome deixa de fora texto que não é nome, como o endereço de contato claudebot@ dentro do UA do Claude-SearchBot, e nomes registrados com maiúsculas e minúsculas diferentes são contados à parte. Em seguida, conferimos na primeira coluna de quais IPs vieram as requisições do GPTBot.

grep 'GPTBot/' access.log-20261018 | awk '{print $1}' | sort | uniq -c | sort -rn | head -5
   2524 74.7.x.x
    428 185.152.x.x
     12 34.53.x.x
      1 74.7.x.x
      1 172.182.x.x

Em requisições que passaram por um CDN ou proxy, a primeira coluna registra o endereço do servidor intermediário, então compare essas linhas usando o endereço da coluna X-Forwarded-For no fim da linha do log. A OpenAI publica as faixas de IP do GPTBot como arquivo JSON.

curl -s https://openai.com/gptbot.json -o gptbot.json

Se um IP está no arquivo de faixas baixado dá para conferir com o ipaddress, um módulo padrão do Python.

# inrange.py — confere se um IP está num arquivo de faixas JSON
import json, sys, ipaddress
nets = [ipaddress.ip_network(p.get('ipv4Prefix') or p.get('ipv6Prefix')) for p in json.load(open(sys.argv[1]))['prefixes']]
for a in sys.argv[2:]:
    ip = ipaddress.ip_address(a)
    print(a, 'IN' if any(ip in n for n in nets) else 'OUT')

Coloque os IPs a conferir depois do nome do arquivo de faixas.

python3 inrange.py gptbot.json 74.7.x.x 34.53.x.x
74.7.x.x IN
34.53.x.x OUT

O IP que enviou 2.524 requisições estava dentro das faixas publicadas, e o que enviou 12 estava fora. Anthropic, Perplexity, Apple, Common Crawl, Google e Bing publicam arquivos de faixas no mesmo formato, e para o Amazonbot conferimos se o DNS reverso termina em crawl.amazonbot.amazon. É como o controle de passaportes no aeroporto, que confere o passaporte e não o nome no cartão de embarque.

Comparando 14 dias desse jeito, vimos que 70 IPs se revezaram em 23 nomes de bot, entre eles GPTBot, ClaudeBot e Googlebot, para enviar 48.041 requisições, 57% delas para URLs que procuravam vulnerabilidades, como .php ou .env. Todas as 809 requisições com o nome Google-Extended também vieram desse grupo; pela documentação do Google, o Google-Extended é um token só do robots.txt, sem UA usado em requisições HTTP.

2️⃣ Visitas por UA: 14 dias de medições e tendência semanal

A tabela abaixo mostra as requisições dos 14 dias de 4 a 17 de outubro. Para bots com faixas publicadas, contamos só as requisições de dentro das faixas; os bots que não comparamos com faixas foram contados pelo UA, sem o grupo de imitadores.

BotEmpresaRequisições (14 dias)Como foi verificadoGrupo de imitadores
ClaudeBotAnthropic10,305Faixas de IP publicadas2,387
PerplexityBotPerplexity3,406Faixas de IP publicadas2,262
GPTBotOpenAI2,546Faixas de IP publicadas2,328
OAI-SearchBotOpenAI1,399Faixas de IP publicadas2,347
ChatGPT-UserOpenAI334Faixas de IP publicadas2,409
ApplebotApple330Faixas de IP publicadas2,372
CCBotCommon Crawl275Faixas de IP publicadas2,275
Claude-UserAnthropic10Faixas de IP publicadas2,192
Claude-SearchBotAnthropic0Faixas de IP publicadas2,297
Perplexity-UserPerplexity0Faixas de IP publicadas2,235
Meta-ExternalAgentMeta14,384UA2,339
BytespiderByteDance6,569UA2,336
AmazonbotAmazon3,493UA · DNS reverso2,379
Googlebot (para comparação)Google10,545Faixas de IP publicadas3,951
bingbot (para comparação)Microsoft13,477Faixas de IP publicadas1,551

Entre os crawlers de IA verificados pelas faixas publicadas, o ClaudeBot teve mais requisições, 10.305, seguido do PerplexityBot com 3.406 e do GPTBot com 2.546. Claude-SearchBot e Perplexity-User tiveram zero requisições das faixas publicadas; todas as requisições com esses nomes vieram do grupo de imitadores.

Mesmo depois de filtrar os imitadores, os bots que não foram comparados com faixas continuam sendo um problema. O Meta-ExternalAgent teve mais requisições pelo UA, 14.384, mas a documentação dos crawlers da Meta que consultamos não tem lista de faixas de IP, então ele foi contado só pelo UA.

📊Requisições semanais de crawlers de IAPor semana · dos logs
GPTBot
OpenAI · coleta para treinamento
08461,6922,5373,383
9/143,3837 dias
9/211907 dias
9/283567 dias
10/5127 dias
10/122,9596 dias (até 17/10)
ClaudeBot
Anthropic · coleta para treinamento
02,5545,1087,66310,217
9/146,9767 dias
9/2110,2177 dias
9/287,7097 dias
10/56,9307 dias
10/127,2896 dias (até 17/10)
PerplexityBot
Perplexity · busca
05531,1061,6592,212
9/141,0847 dias
9/212,1527 dias
9/285337 dias
10/52,2127 dias
10/121,4836 dias (até 17/10)
Os números são contagens pelo UA nos logs de acesso do servidor de origem das semanas de 14 de setembro a 12 de outubro, sem as requisições de IPs do grupo de imitadores, as requisições a URLs que procuram vulnerabilidades e as requisições respondidas com erros como 403 ou 429.

Semana a semana, o GPTBot oscilou entre 12 e 3.383 requisições, enquanto o ClaudeBot ficou entre 6.930 e 10.217 nas cinco semanas.

3️⃣ Quais URLs eles buscam: tipos de URL e códigos de resposta

Os crawlers de IA não buscam só o texto dos posts. Nos 14 dias, 21% das requisições do Meta-ExternalAgent foram de imagens, enquanto o GPTBot das faixas publicadas pediu o feed RSS 476 vezes e o ClaudeBot pediu o sitemap 314 vezes.

Eles também coletam as URLs das versões em outros idiomas: das faixas publicadas, 1.111 requisições do ClaudeBot e 436 do GPTBot foram para posts em outros idiomas. Os códigos de resposta podem ser contados direto em um dia de logs.

grep 'ClaudeBot/' access.log-20261018 | awk '{print $9}' | sort | uniq -c | sort -rn | head -4
   1357 200
    665 301
     31 304
     21 404

Mesmo em um dia só, quase um terço é 301, e nos 14 dias 5.915 (57%) das 10.305 requisições do ClaudeBot das faixas publicadas foram 301. Dessas, 4.736 eram requisições sem a [/] final, então o WordPress respondeu com 301 para a URL com [/] e o mesmo post foi requisitado mais uma vez.

4️⃣ Configuração do robots.txt: tokens de treinamento e de busca

O robots.txt serve para bots de treinamento e de busca que coletam automaticamente, mas não para bots que buscam uma página quando o usuário faz uma pergunta. A documentação da OpenAI e da Perplexity avisa que as regras do robots.txt podem não valer para requisições do ChatGPT-User e do Perplexity-User.

Cada empresa divide seus tokens por finalidade e, pela documentação da OpenAI, bloquear um token não afeta a configuração dos outros. Abaixo estão os tokens confirmados na documentação oficial de cada empresa.

Token do robots.txtEmpresaUsoSe bloquear (documentação oficial)
GPTBotOpenAIColeta para treinamentoSinal para não usar em treinamento
OAI-SearchBotOpenAIBusca do ChatGPTFica fora das respostas da busca do ChatGPT (ainda pode aparecer como link de navegação)
ChatGPT-UserOpenAIRequisição do usuárioAs regras do robots.txt podem não valer
ClaudeBotAnthropicColeta para treinamentoMaterial posterior fica fora dos dados de treinamento
Claude-SearchBotAnthropicMelhorar a qualidade da buscaA visibilidade nos resultados de busca pode cair
Claude-UserAnthropicRequisição do usuárioNão busca páginas para perguntas de usuários
PerplexityBotPerplexityBusca (não treinamento)Fica fora dos resultados de busca
Perplexity-UserPerplexityRequisição do usuárioEm geral não segue o robots.txt
Google-ExtendedGoogleTreinamento · grounding do GeminiSem efeito na visibilidade ou no ranking na Pesquisa Google
Applebot-ExtendedAppleTreinamento de modelos de baseSem efeito na visibilidade na busca da Apple
meta-externalagentMetaTreinamento de modelos de IA etc.Bloqueado com Disallow (exemplo da documentação)

Google-Extended e Applebot-Extended não são bots de coleta separados, e sim tokens usados só no robots.txt. Quem coleta são os crawlers já existentes do Google e da Apple, e esses tokens só decidem se o conteúdo coletado pode ser usado para treinar modelos de IA.

Um robots.txt que recusa só a coleta para treinamento e mantém a visibilidade na busca com IA fica assim; a documentação da OpenAI, da Perplexity e da Meta diz que as mudanças podem levar até 24 horas para valer.

# recusa a coleta para treinamento
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: meta-externalagent
Disallow: /

# permite os bots de busca com IA
User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

O robots.txt atual do servidor Nginx + Apache não tem linhas que citem bots de IA.

curl -s https://example.com/robots.txt
# vale para todos os bots de buscadores
User-agent: *

# bloqueia as páginas de administração (segurança)
Disallow: /wp-admin/

# permite as chamadas ajax das funções de administração (necessário para o funcionamento normal)
Allow: /wp-admin/admin-ajax.php

# adicionado: bloqueia resultados de busca com spam (proteção de SEO)
Disallow: /search/
Disallow: /?s=

# indica o sitemap (indexação mais rápida)
Sitemap: https://example.com/sitemap_index.xml

Sem linhas para bots de IA, as 2.546 requisições do GPTBot das faixas publicadas nos 14 dias não receberam nenhum 403: 2.090 foram respondidas com 200 e 432 com 301. No mesmo período, as requisições de robots.txt das faixas publicadas nos logs de origem foram 36 do Googlebot, 8 do ClaudeBot e 6 do OAI-SearchBot, e nenhuma do GPTBot ou do PerplexityBot. Requisições de robots.txt respondidas pelo cache na frente também não aparecem nos logs de origem.

5️⃣ Bloquear crawlers de IA no nginx e seus limites

Mesmo bloqueando no robots.txt, as requisições que não leem as regras chegam direto ao servidor. No nginx, o [map] põe 1 numa variável quando o UA contém o nome de um bot.

# dentro do bloco http — 1 se o nome de um bot de treinamento estiver no UA
map $http_user_agent $ai_train_bot {
    default        0;
    ~*GPTBot/      1;
    ~*ClaudeBot/   1;
    ~*Bytespider   1;
    ~*CCBot/       1;
}

No bloco server, devolva 403 quando essa variável for 1.

# dentro do bloco server
location / {
    if ($fake_searchbot) {
        return 403;
    }
    if ($ai_train_bot) {
        return 403;
    }
    # configurações existentes abaixo
}

O bloqueio por UA só confere o nome, então requisições falsas são bloqueadas junto com o bot real quando usam o mesmo nome e passam assim que o trocam. Requisições que usam o nome de um bot de busca que você permite só podem ser filtradas pela comparação com as faixas de IP publicadas.

🧭 O caminho de uma requisição de crawler de IA
Diagrama explicativo
📌 Requisição
📥 Requisição
📜 robots.txt
Regras que os crawlers automáticos leem primeiro
GPTBot · ClaudeBotDisallow interrompe a coleta
OAI-SearchBot · PerplexityBotDisallow tira das respostas de busca
ChatGPT-User · Perplexity-UserAs regras podem não valer
Requisições que só usam o nome de um botSem garantia de que sigam as regras
Solicitação→
🖥️ nginx
map de UA · comparação com faixas de IP publicadas
Nome está no map de UA403 pelo UA
Fora do map de UAPassa se estiver dentro das faixas publicadas
Fora do map de UAPassa
Nome de bot permitido + fora das faixas403 pela comparação de faixas
Resposta→
📤 Resposta
Código de status
403Coleta para treinamento recusada
200Aparece na busca com IA
200Responde a perguntas de usuários
403Troca o nome e passa pelo bloqueio por UA
Os crawlers de treinamento seguem o Disallow do robots.txt, e colocar seus nomes no map de UA do nginx recusa com 403 também as requisições que não leram as regras. Nos 14 dias, houve 2.546 requisições do GPTBot das faixas publicadas.
Os crawlers de busca são configurados à parte dos tokens de treinamento; se você não os bloquear, suas páginas podem aparecer nas respostas da busca do ChatGPT e da busca da Perplexity (pela documentação oficial). No nginx, deixe passar só as requisições de dentro das faixas publicadas.
Os bots de requisição do usuário buscam uma página quando o usuário faz uma pergunta, e a documentação da OpenAI e da Perplexity diz que as regras do robots.txt podem não valer para eles. Para bloqueá-los, recuse-os pelo nome no nginx.
Requisições falsas só usam o nome de um bot, então o bloqueio por UA só as recusa quando o nome bate; quando usam o nome de um bot de busca que você permite, só a comparação de faixas as filtra. Nos 14 dias, 70 IPs se revezaram em 23 nomes de bot.

Para permitir o OAI-SearchBot e recusar só as requisições com o mesmo nome vindas de fora das faixas dele, transforme as faixas publicadas numa variável com [geo] e compare junto com o UA.

# dentro do bloco http — faixas publicadas do OAI-SearchBot (coloque o searchbot.json inteiro; abaixo só duas linhas)
geo $oai_search_net {
    default              0;
    104.210.140.128/28   1;
    135.234.64.0/24      1;
}

map $http_user_agent:$oai_search_net $fake_searchbot {
    default                  0;
    ~*OAI-SearchBot/.*:0$    1;
}

Se houver um CDN ou proxy na frente, o endereço que o [geo] vê é o do servidor intermediário, então restaure o IP real com real_ip antes de comparar. A documentação da Anthropic avisa que bloquear por endereço IP também impede o bot de ler o robots.txt, então o sinal de recusa pode não chegar direito.

Não colocamos essa configuração no servidor em produção; só verificamos a sintaxe com um arquivo de configuração de teste.

nginx -t -p ./ -c nginx-test/nginx.conf
nginx: the configuration file ./nginx-test/nginx.conf syntax is ok
nginx: configuration file ./nginx-test/nginx.conf test is successful

Como só a sintaxe do exemplo foi verificada, não conferimos as respostas 403; nos 14 dias de logs, 2.347 das 3.937 requisições com o nome OAI-SearchBot vieram do grupo de imitadores, fora das faixas publicadas.

6️⃣ Cobrar dos crawlers de IA: Pay per crawl e Web Bot Auth

O Pay per crawl é um recurso do Cloudflare AI Crawl Control que permite aos donos de sites definir um preço por zona e cobrar por cada requisição de crawler de IA. Pela documentação oficial consultada em 18 de outubro de 2026, está em beta privado, e a Cloudflare processa o pagamento como Merchant of Record.

Crawlers que enviam a intenção de pagar num cabeçalho da requisição recebem uma resposta 200, e os outros recebem uma resposta [402 Payment Required] com o preço. Se o mesmo crawler for bloqueado com WAF ou Bot Management, a regra de bloqueio tem prioridade sobre a cobrança.

Crawlers que querem pagar precisam provar quem são com o Web Bot Auth. No Web Bot Auth, o bot assina as requisições com uma chave Ed25519 e publica a chave pública em [/.well-known/http-message-signatures-directory], para que o lado que recebe possa verificar a assinatura.

A assinatura vai em três cabeçalhos, [Signature-Agent], [Signature-Input] e [Signature], e identifica o bot por assinatura criptográfica em vez de faixas de IP. O formato padrão do log de acesso do servidor de origem não registra cabeçalhos de requisição, então não conferimos se as requisições de crawlers de IA nos 14 dias tinham assinatura.

As 18.605 requisições de crawlers de IA verificadas pelas faixas de IP publicadas nos 14 dias equivaleram a 77% das 24.022 requisições que o Googlebot e o bingbot enviaram das faixas publicadas no mesmo período. Colocar ou não tokens de treinamento no robots.txt é uma decisão a tomar com os números sem os imitadores, e somar a comparação de faixas a uma contagem semanal de logs permite acompanhar a tendência.

🔢 FAQ & conteúdo recomendado

A documentação da Anthropic diz que a extensão não padrão [Crawl-delay] é aceita, escrita como [Crawl-delay: 1] abaixo de [User-agent: ClaudeBot]. A documentação da Apple informa que o Applebot não segue o crawl-delay, mas ajusta sozinho o ritmo de coleta quando o site fica lento ou devolve erros.

Pela documentação da Apple, páginas com a meta tag nosnippet não são usadas como contexto extra quando os modelos de IA dos produtos da Apple geram respostas, e nas sugestões de busca só o título aparece. Para arquivos que não podem ter meta tag, como PDFs ou imagens, envie a mesma diretiva com o cabeçalho de resposta [X-Robots-Tag: applebot: nosnippet].

A documentação da Perplexity orienta a criar uma regra que permite só as requisições cujo UA contém PerplexityBot ou Perplexity-User e cujo IP de origem está dentro das faixas JSON publicadas, aplicando-a antes das outras regras de bloqueio. Como as faixas mudam de vez em quando, recomenda baixá-las da URL do JSON com regularidade e atualizar a regra.

🤖 Conteúdo recomendado: crawlers de IA 5 posts · 8 referências
🗂️ WEB
📋 Busca de clique zero 📄 Fatores de ranqueamento do algoritmo do Google 📄 SEO para JavaScript
📄 Meu IP 📄 Configurar o CDN da Cloudflare
📡 Crawlers da OpenAI 📡 Crawlers da Anthropic 📡 Crawlers da Perplexity 📡 Crawlers comuns do Google 📡 Applebot 📡 Crawlers web da Meta 📡 Pay per crawl 📡 Web Bot Auth
Nenhum resultado encontrado.
Crawlers da OpenAI — documentação oficial (link externo)
Documentação oficial · OpenAI
Overview of OpenAI Crawlers
Documentação oficial sobre as finalidades do GPTBot, do OAI-SearchBot e do ChatGPT-User, seus tokens do robots.txt e as URLs JSON das faixas de IP publicadas.
Ver post →Conteúdo atual
Crawlers da Anthropic — documentação oficial (link externo)
Documentação oficial · Anthropic
Does Anthropic crawl data from the web, and how can site owners block the crawler?
Documentação oficial sobre as finalidades do ClaudeBot, do Claude-User e do Claude-SearchBot, o efeito de bloqueá-los e o suporte a Crawl-delay.
Ver post →Conteúdo atual
Crawlers da Perplexity — documentação oficial (link externo)
Documentação oficial · Perplexity
Perplexity Crawlers
Documentação oficial sobre as finalidades do PerplexityBot e do Perplexity-User, suas faixas de IP publicadas e as configurações de permissão no firewall.
Ver post →Conteúdo atual
Crawlers comuns do Google — documentação oficial (link externo)
Documentação oficial · Google
Google’s common crawlers
Documentação oficial sobre por que o token Google-Extended é usado só no robots.txt, sem UA em requisições HTTP, e o que ele afeta.
Ver post →Conteúdo atual
Applebot — documentação oficial (link externo)
Documentação oficial · Apple
About Applebot
Documentação oficial sobre a diferença entre Applebot e Applebot-Extended, a verificação por DNS reverso e o tratamento de nosnippet.
Ver post →Conteúdo atual
Crawlers web da Meta — documentação oficial (link externo)
Documentação oficial · Meta
Crawlers web da Meta
Documentação oficial sobre as finalidades do Meta-ExternalAgent, do Meta-WebIndexer e do Meta-ExternalFetcher e suas configurações no robots.txt.
Ver post →Conteúdo atual
Cloudflare Pay per crawl — documentação oficial (link externo)
Documentação oficial · Cloudflare
What is Pay Per Crawl?
Documentação oficial do recurso que envia às requisições de crawlers de IA uma resposta 402 com um cabeçalho de preço e responde com 200 só às que pretendem pagar.
Ver post →Conteúdo atual
Cloudflare Web Bot Auth — documentação oficial (link externo)
Documentação oficial · Cloudflare
Web Bot Auth
Documentação oficial sobre como um bot prova quem é com uma assinatura Ed25519 nos cabeçalhos da requisição e sobre o registro de um diretório de chaves.
Ver post →Conteúdo atual

ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Demonstre sua humanidade: 6   +   10   =