Pular para o conteúdo
Segurança de rede

Como detectar web scraping: logs, consultas de IP e pontos cegos

Como detectar web scraping nos seus logs de acesso: consultas reais de CCBot, AhrefsBot, uma saída do Tor e um servidor em nuvem, uma alegação de Googlebot rastreada e o que os IPs não mostram.

PorEquipe GeoIPHubPublicadoTempo de leitura20 min de leitura
Fileiras abstratas de blocos de dados sendo levantadas e levadas embora, representando web scraping

Uma requisição de um scraper é só um GET. Ela tem um código de status, um caminho e um User-Agent, como qualquer outra linha do seu log. O scraping só aparece ao longo de centenas de linhas e em uma rede inteira: um script Python em um servidor de nuvem, um navegador headless controlado por Puppeteer ou Playwright, um rastreador de treinamento de IA, um rastreador de SEO como o AhrefsBot, ou uma API de scraping que vende proxies rotativos por gigabyte.

Passamos sete IPs de classes de scrapers pela API da GeoIPHub em 2026-10-08. Quatro rastreadores verificados (Googlebot, CCBot, ClaudeBot, AhrefsBot) vieram todos de redes de hospedagem e pontuaram allow. Um servidor de nuvem Linode comum pontuou 10, também allow, e uma saída do Tor e um servidor de VPN da Mullvad pontuaram 100, block. O IP informa a rede. O veredito de scraping vem dos seus logs.

A seguir, mostramos como detectar bots de scraping em um log de acesso, rastreamos uma linha de log que diz ser o Googlebot, mostramos onde os dados de IP ficam cegos e associamos o que você encontrar a allow, limitar a taxa, desafiar ou bloquear. Se você quiser ver primeiro os sinais de IP um por um, nosso hub trata da detecção de bots por IP, sinal por sinal; este post os aplica ao scraping.

Log de acesso abstrato representado como barras de luz, algumas pulsando em um ritmo mecânico, representando tráfego de scrapers nos logs
Os scrapers deixam um ritmo nos seus logs de acesso antes de deixar qualquer outra coisa.

Como detectar web scraping: taxa, caminho, cliente e rede

Para detectar web scraping, verifique quatro grupos de sinais: com que velocidade um cliente faz pedidos (taxa), o que ele pede e em que ordem (caminho), o que ele diz sobre si mesmo (cliente) e de onde ele se conecta (rede). A OWASP classifica o scraping como uma ameaça automatizada própria, a OAT-011, definida como coletar "conteúdo da aplicação e/ou outros dados para uso em outro lugar" (OWASP Automated Threats). Essa definição trata de intenção, que você não consegue ver. Os quatro grupos são o que você consegue ver.

  • Taxa. Requisições por minuto por IP e por rede. Por rede queremos dizer o ASN ou, para um agrupamento mais fino, o /24 no IPv4 e o /64 no IPv6. Scrapers costumam rodar em uma taxa constante o dia inteiro; pessoas chegam em rajadas e dormem.
  • Caminho. URLs de listagem e paginação percorridas em ordem, um sitemap lido de cima a baixo, apenas páginas de produtos ou de preços, e nenhuma requisição de CSS, JavaScript ou imagem.
  • Cliente. A alegação do User-Agent, a ausência do cabeçalho Accept-Language, nenhum cookie mantido entre requisições e marcadores de automação. No navegador, navigator.webdriver é true quando o Chrome roda com --headless ou --enable-automation (MDN), embora um scraper determinado consiga remover isso. Na borda, uma impressão digital de TLS (JA3 ou JA4) muitas vezes revela uma biblioteca HTTP por trás de um User-Agent que diz ser o Chrome.
  • Rede. O que uma consulta de IP retorna: um IP de datacenter (hospedagem), que a API sinaliza como detection.is_hosting, um rastreador verificado, Tor, uma VPN ou um scanner.

A parte difícil da detecção de web scraping é que todo sinal tem um gêmeo inocente. Uma CDN buscando a sua origem, um monitor de disponibilidade, um escritório atrás de um único endereço NAT e um leitor de RSS parecem estranhos em algum eixo. O caso de scraping se forma a partir de sinais que concordam entre si.

SinalComo um scraper apareceSósia inocente
Taxa por IP ou redeRequisições constantes a cada 1 a 2 segundos por horasNAT de escritório, CGNAT, uma CDN ou um serviço de monitoramento
Ordem das páginaspage=1, 2, 3 … em sequência, ou o sitemap na ordem do arquivoUma pessoa paginando resultados, mas com muito menos páginas
RecursosSó HTML, sem CSS, JS ou imagensLeitores de feed, prévias de links, navegadores em modo texto
Profundidade da sessãoMilhares de páginas em uma sessãoUm rastreamento interno de QA ou a sua própria ferramenta de auditoria de SEO
User-AgentNome de rastreador vindo de uma rede que o rastreador não usaUm rastreador real em uma faixa adicionada nos últimos dias
RedeDatacenter, saída do Tor ou de VPNVPNs corporativas, agentes de compras com IA, ferramentas hospedadas em nuvem

Como saber se seu site está sendo raspado: leia primeiro os seus logs de acesso

Para saber se seu site está sendo raspado, agrupe os logs de acesso por rede e procure clientes que buscam muitas páginas, em ordem, e nunca carregam os recursos que um navegador carregaria. Os sinais externos costumam chegar primeiro: os textos ou os preços dos seus produtos aparecem em outro site, ou a banda e o custo de servidor sobem nas páginas de listagem enquanto as conversões ficam estáveis. Para verificar de fora, pesquise entre aspas uma frase característica da sua página e observe se os seus preços reaparecem em sites agregadores poucas horas depois de uma mudança. Os logs dizem quem fez isso.

Veja como isso aparece em um log de acesso no formato combined. Estes são valores ilustrativos, não tráfego real. 45.33.32.156 é o host de teste público do Nmap na Linode, e ele não enviou essas requisições; ele representa "um servidor de nuvem" porque não podemos publicar o IP de um visitante real.

GeoIPHub API
# illustrative values, not real traffic 45.33.32.156 - - [08/Oct/2026:03:14:07 +0000] "GET /products?page=34 HTTP/1.1" 200 48211 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 45.33.32.156 - - [08/Oct/2026:03:14:08 +0000] "GET /products?page=35 HTTP/1.1" 200 47960 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 45.33.32.156 - - [08/Oct/2026:03:14:10 +0000] "GET /products?page=36 HTTP/1.1" 200 48377 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 45.33.32.156 - - [08/Oct/2026:03:14:11 +0000] "GET /products?page=37 HTTP/1.1" 200 48102 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 45.33.32.156 - - [08/Oct/2026:03:14:13 +0000] "GET /products?page=38 HTTP/1.1" 200 47815 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 45.33.32.156 - - [08/Oct/2026:03:14:14 +0000] "GET /products?page=39 HTTP/1.1" 200 48290 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Três coisas chamam a atenção. As páginas sobem uma a uma, com 1 a 2 segundos de intervalo, às 3 da manhã. Não há referrer e nem uma única requisição de .css ou .js entre elas. E o cliente diz ser o Googlebot, o que as próximas seções testam.

Você não precisa de uma plataforma de logs para encontrar clientes assim. Estes comandos de uma linha funcionam em um log combined padrão; rode-os primeiro sobre uma hora movimentada:

GeoIPHub API
# Busiest client IPs awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20 # Busiest IPv4 /24 networks (rotating scrapers often stay inside one block) awk '{split($1,o,"."); print o[1]"."o[2]"."o[3]".0/24"}' access.log | sort | uniq -c | sort -rn | head -20 # Busiest User-Agents awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20 # Clients with more than 100 page requests and zero asset requests awk '{ if ($7 ~ /\.(css|js|png|jpe?g|webp|svg|woff2?)(\?|$)/) a[$1]++; else p[$1]++ } END { for (ip in p) if (!(ip in a) && p[ip] > 100) print p[ip], ip }' access.log | sort -rn

Analise a saída com esta lista:

  • Páginas acessadas. Os clientes mais ativos se concentram em listagens, preços, resultados de busca ou no sitemap?
  • Taxa por IP, depois por rede. Depois de enriquecer os IPs, some as requisições por ASN; 50 endereços de hospedagem em um ASN percorrendo as mesmas páginas provavelmente são um único agente.
  • Profundidade da sessão. Centenas de páginas por sessão, sem uso de carrinho, login ou caixa de busca.
  • Ordem. URLs de paginação ou do sitemap buscadas em sequência.
  • Recursos. Só HTML, sem CSS, JavaScript, fontes ou imagens.
  • Alegações de rastreador. Todo User-Agent de Googlebot, Bingbot, GPTBot ou ClaudeBot entra em uma lista para verificação por IP.
  • Marcadores de automação. User-Agents de bibliotecas (python-requests, curl, Go-http-client) e indícios de navegador headless.

Endereços IP de scrapers: o que consultas reais na GeoIPHub retornam

Os endereços IP de scrapers se dividem em algumas classes de rede, e uma consulta diz qual classe você está vendo, não se a requisição foi de um scraper. Nas nossas consultas na GeoIPHub, rastreadores verificados pontuaram de 0 a 23 (allow); saídas do Tor e de VPN pontuaram 100 (block). Fizemos uma consulta anônima por classe em 2026-10-08, com quatro segundos de intervalo:

GeoIPHub API
curl -s https://api.geoiphub.com/v1/lookup/18.97.14.81
IPClasse de botRede (ASN)Indicadores principaisfraud_scorerecommended_actiondetection_methods
18.97.14.81Rastreador (categoria: archiver)Amazon AMAZON-AES (AS14618)is_hosting: true, crawler.name: CCBot, verified: true0allowdatacenter_ip, rdns_hosting, verified_crawler
216.73.216.10Rastreador (categoria: ai)Amazon AMAZON-02 (AS16509)is_hosting: true, crawler.name: ClaudeBot, verified: true0allowdatacenter_ip, no_ptr_datacenter, verified_crawler
5.39.1.230Rastreador (categoria: seo)OVH (AS16276)crawler.name: AhrefsBot, verified: true, is_abusive: true23allowabusive_listed, datacenter_blocklisted, no_ptr_datacenter, verified_crawler
192.178.4.40Rastreador (categoria: search_engine)Google (AS15169)crawler.name: Googlebot, verified: true0allowdatacenter_ip, no_ptr_datacenter, verified_crawler
45.33.32.156Servidor de nuvem comumAkamai Connected Cloud, Linode (AS63949)is_hosting: true, crawler.name: none10allowdatacenter_ip
185.220.101.47Saída do TorStiftung Erneuerbare Freiheit (AS60729)is_tor: true, is_spammer: true100blocktor_exit, datacenter_blocklisted, rdns_tor, known_spammer
185.213.155.73VPN comercial31173 Services AB (AS39351)is_vpn: true, vpn_provider: Mullvad, vpn_confidence: 95100blockknown_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter

São consultas únicas em um único dia, não um benchmark, e os valores mudam à medida que as faixas mudam. Uma lacuna conhecida: no_ptr_datacenter nas linhas do Googlebot e do AhrefsBot é um problema dos nossos dados, não deles. A API não armazena registro PTR para algumas faixas de rastreadores, embora o DNS reverso resolva (192.178.4.40 resolve para crawl-192-178-4-40.googlebot.com). No IP do ClaudeBot o sinal está correto: ele não tem DNS reverso.

Aqui está a resposta do CCBot, reduzida, mas com valores reais e o aninhamento original:

GeoIPHub API
{ "ip": "18.97.14.81", "asn": { "asn": 14618, "org": "AMAZON-AES - Amazon.com, Inc.", "asn_type": "hosting" }, "detection": { "is_hosting": true, "is_vpn": false, "is_tor": false }, "threat": { "is_crawler": true, "crawler": { "verified": true, "name": "CCBot", "operator": "CommonCrawl", "category": "archiver", "verification_method": "ip_range_list" } }, "scoring": { "fraud_score": 0, "recommended_action": "allow", "detection_methods": ["datacenter_ip", "rdns_hosting", "verified_crawler"] } }

O próprio rastreador da Common Crawl roda na AWS e, mesmo assim, pontua 0. O IP fica em 18.97.14.80/29, uma faixa que a Common Crawl publica no seu arquivo ccbot.json, e o ajuste de rastreador verificado na nossa pontuação (−28,5) anula o sinal de datacenter. A GeoIPHub verifica dessa forma 19 feeds oficiais de faixas de rastreadores, entre eles os do Google, do Bing, da OpenAI, da Anthropic, da Common Crawl e da Ahrefs. Se você quer que um rastreador cujos dados alimentam modelos de IA, como o CCBot ou o GPTBot, leia suas páginas é uma questão de política. A consulta só resolve quem ele é.

O AhrefsBot foi a surpresa. Ele voltou como verificado (5.39.1.230 fica em 5.39.1.224/27 nas faixas de rastreador publicadas pela Ahrefs), mas também com is_abusive: true e abusive_listed nos métodos, com pontuação 23, ainda allow. Não rastreamos qual lista o sinalizou. A lição vale de qualquer forma: "verificado" diz quem um rastreador é, não se você o quer. Um rastreador de SEO que mapeia o seu site para o relatório de backlinks de um concorrente continua fazendo scraping, só que declarado.

Falsificação de rastreadores em logs de scraping: uma linha, rastreada

Uma requisição que diz Googlebot no User-Agent, mas vem de um servidor de nuvem, é uma alegação não verificada. A GeoIPHub pode dizer que o IP não está em uma faixa do Google, mas a comparação com o User-Agent acontece no seu código, porque a consulta nunca vê os seus cabeçalhos. Pegue a quarta linha do log ilustrativo: 45.33.32.156, GET /products?page=37, User-Agent Googlebot/2.1.

  1. Consulte o IP. A consulta real retornou o ASN 63949, Akamai Connected Cloud (Linode), detection.is_hosting: true, threat.crawler.name: "none", verified: false, fraud_score 10, allow, com os métodos ["datacenter_ip"].
  2. Compare a alegação. O seu código confere o token do User-Agent com threat.crawler.verified e threat.crawler.name.
  3. Decida. O UA diz Googlebot; o IP não está em nenhuma faixa do Google. Isso o torna "não verificado como Googlebot". Limite a taxa ou desafie. Um desafio (um CAPTCHA ou uma verificação de JavaScript) é a forma de agir sobre a ação step_up da API. Não o chame de falso: uma nova faixa do Google pode levar até cerca de dois dias para ser verificada nos nossos dados, porque os arquivos de faixas são baixados diariamente e o banco de dados de consulta é reconstruído diariamente.
  4. Confira o contraste. O Googlebot real em 192.178.4.40 retornou verified: true, name: "Googlebot", verification_method: "ip_range_list", pontuação 0.

O Google documenta duas formas de fazer você mesmo a mesma verificação: DNS reverso no IP seguido de uma consulta direta do nome de host, ou uma comparação com os arquivos de faixas publicados, como common-crawlers.json (Google Search Central). A comparação em código fica assim:

GeoIPHub API
// Map User-Agent tokens to the crawler names the API returns. // They don't always match: OpenAI's "ChatGPT-User" comes back as "ChatGPTUser". const CRAWLER_NAMES = { "Googlebot": "Googlebot", "GPTBot": "GPTBot", "CCBot": "CCBot", "ClaudeBot": "ClaudeBot", "AhrefsBot": "AhrefsBot", "ChatGPT-User": "ChatGPTUser", }; async function classifyRequest(ip, userAgent) { const res = await fetch(`https://api.geoiphub.com/v1/lookup/${ip}`, { headers: { "x-api-key": process.env.GEOIPHUB_API_KEY }, }); const { threat, scoring } = await res.json(); const token = Object.keys(CRAWLER_NAMES).find((t) => userAgent.includes(t)); if (token) { const ok = threat.crawler.verified && threat.crawler.name === CRAWLER_NAMES[token]; return ok ? "allow_crawler" : "unverified_crawler_claim"; // rate-limit or challenge } return scoring.recommended_action; // allow, review, step_up or block }

Este é o caso em que a pontuação diz allow e o padrão diz scraper. Só pelo IP, esta requisição é 10 e allow, porque um servidor de nuvem é um sinal fraco por si só. O veredito de scraping vem de três coisas que a pontuação não vê: a divergência do UA, a taxa constante e o percurso página por página. Para o procedimento completo do Google, veja como verificar o Googlebot por DNS reverso e pelos arquivos de faixas do Google; para GPTBot, ClaudeBot e agentes assinados, veja como verificar rastreadores de IA por IP, DNS reverso e Web Bot Auth.

O que os dados de IP não pegam: proxies residenciais e navegadores reais

Os dados de IP não pegam scrapers que passam por proxies residenciais ou móveis, e a GeoIPHub não detecta proxies residenciais; o campo is_residential_proxy é uma inferência grosseira baseada no ASN, então trate-o como ausência de sinal. Uma rede de proxies residenciais envia cada requisição pela conexão doméstica de alguém. Na camada de IP, a requisição parece vir dessa casa: um provedor de internet residencial, uma cidade real, nenhum indicador de hospedagem, uma pontuação limpa.

A rotação piora as coisas. Um pool pode dar a cada requisição um novo IP residencial, então os contadores por IP nunca sobem. Proxies móveis compartilham IPs de operadora com celulares reais, e um scraper em IPv6 pode percorrer um /64 inteiro sem tocar em uma rede nova.

Navegadores reais são o segundo ponto cego. Um script Playwright controlando o Chrome a partir de uma conexão de escritório ou residencial envia o mesmo IP, o mesmo handshake TLS e os mesmos recursos que a pessoa na mesa ao lado. Algumas configurações headless se denunciam; as bem ajustadas, não.

O que ainda denuncia esses scrapers é o padrão entre as requisições:

Configuração do scraperO que o IP mostraO que ainda o denuncia
Proxies residenciais rotativosProvedor residencial, pontuação limpaMuitos IPs compartilhando uma mesma ordem de páginas, um mesmo ritmo e uma mesma impressão digital
Proxies móveisIP de operadora compartilhado com celulares reaisProfundidade de sessão e ordem de caminhos que nenhum usuário de celular produz
Rotação de IPv6 dentro de um /64Um endereço novo por requisiçãoContar requisições por /64 em vez de por endereço
Navegador headless em uma linha residencial ou de escritórioRede de acesso comumMarcadores de automação, impressões digitais de TLS, nenhuma continuidade de cookies
Qualquer scraper que segue todos os linksQualquer rede que ele useRequisições a um link oculto: um link escondido com CSS que nenhum visitante vê; qualquer coisa que o requisite está seguindo links às cegas

Se você criar um link oculto, bloqueie o caminho dele no robots.txt, para que os rastreadores que respeitam o arquivo nunca o toquem. Dois posts aprofundam as camadas que ficam ao lado do IP. Leia por que impressão digital de dispositivo e inteligência de IP funcionam melhor juntas, e o que uma consulta pode e não pode mostrar em detecção de fraude com proxies residenciais.

Scraping vs rastreamento vs abuso de API

O rastreamento é declarado e verificável, o scraping leva o seu conteúdo ou os seus dados e muitas vezes não é declarado, e o abuso de API são chamadas automatizadas aos seus endpoints além dos seus termos ou limites. A linha entre eles é comportamento e identidade, não tecnologia: o Googlebot e um scraper de preços podem rodar a mesma biblioteca HTTP na mesma nuvem.

Tipo de tráfegoO que ele visaComo se identificaO que verificar
RastreamentoPáginas para um índice de busca, um arquivo ou um modelo de IAUm User-Agent nomeado e faixas de IP publicadasIP na faixa do operador; respeito ao robots.txt
ScrapingConteúdo ou dados específicos: preços, listagens, artigosMuitas vezes um UA de navegador ou um nome de rastreador emprestadoTaxa, ordem das páginas, recursos ausentes, UA vs rastreador verificado
Abuso de APIOs seus endpoints JSON, muitas vezes por trás do siteUma chave de API, um token de sessão ou nadaChamadas por chave e por rede, endpoints fora dos fluxos normais do aplicativo

Um rastreador verificado ainda pode fazer scraping, como mostra o AhrefsBot, e um scraper ainda pode parecer um rastreador. Por isso a próxima seção começa liberando apenas os verificados.

Como evitar web scraping sem bloquear rastreadores de busca

Para evitar web scraping sem bloquear rastreadores de busca, libere primeiro os rastreadores verificados, depois limite a taxa por rede e desafie clientes que não se comportam como navegadores, e bloqueie apenas o que você confirmou. As faixas de pontuação da GeoIPHub dão o lado do IP: allow até 25, review até 50, step_up até 75 e block acima de 75. A ordem importa. Um bloqueio geral de datacenters aplicado primeiro teria atingido o Googlebot, o CCBot, o ClaudeBot e o AhrefsBot da nossa tabela, já que os quatro vieram de redes de hospedagem.

  1. Libere rastreadores verificados quando threat.crawler.verified for true e crawler.name corresponder ao token do User-Agent. Depois aplique a sua própria política por rastreador. Para rastreadores de IA, nossa comparação entre GPTBot, OAI-SearchBot e ChatGPT-User mostra como bloquear o treinamento sem sair da busca por IA.
  2. Reaproveite as regras de IP. Faixas de pontuação, tratamento do Tor e limites de taxa por prefixo funcionam igual para scrapers e para qualquer bot; o hub trata deles. Trate um IP de datacenter como uma entrada ponderada, não como um bloqueio, já que hospedagem também abrange agentes de IA, proxies corporativos e as suas próprias ferramentas (veja o que é um endereço IP de datacenter).
  3. Limite a taxa por ASN nas páginas que os scrapers querem. Um pool que roda por um único provedor de hospedagem fica abaixo de qualquer limite por IP, mas um contador por ASN nas páginas de listagem, busca e preços soma tudo. Dê às grandes nuvens um teto maior, já que muitos clientes sem relação entre si compartilham um ASN.
  4. Limite a paginação e coloque as listagens completas atrás de um login. Sirva um número fixo de páginas de listagem para visitantes anônimos. Uma barreira de conta transforma cada scraper em contas que você pode contar e encerrar.
  5. Defina cotas por chave nos endpoints JSON que as suas páginas chamam. Scrapers muitas vezes pulam o HTML e chamam a API por trás dele; então emita chaves ou tokens de sessão e limite as chamadas por chave.
  6. Adicione uma camada de gestão de bots ou de WAF para os sinais de cliente que os seus logs não guardam, como impressões digitais de TLS e verificações de JavaScript na borda.
  7. Use regras de comportamento para tráfego residencial, onde o IP não diz nada.

As respostas formam uma escada: liberar, limitar a taxa, desafiar, bloquear. Alguns sites acrescentam um tarpit, que desacelera as respostas a um suspeito de scraping, ou servem conteúdo de isca, como preços alterados, para tráfego que já classificaram. Os dois custam algo se a classificação estiver errada, então use-os apenas em tráfego que você bloquearia de qualquer forma.

SinalAção padrão
threat.crawler.verified com um User-Agent correspondenteLiberar e depois aplicar a sua política por rastreador
User-Agent de rastreador, crawler.name é "none"Limitar a taxa ou desafiar
Mesma ordem de páginas vinda de 20+ IPs em um ASNLimitar a taxa do ASN e depois desafiar
Só HTML, 100+ páginas, sem CSS ou JSDesafiar, não importa o que o IP diga
Acesso a um link que nenhuma pessoa consegue verBloquear esse cliente
Provedor residencial, pontuação limpa, padrão de scraperRegras de comportamento e impressões digitais

Para as linhas que dependem só do IP (Tor, relays, scanners, prefixos IPv6), use o mapa de ações do nosso guia de detecção de bots por IP.

E o robots.txt? Ele pede; não impõe. A RFC 9309, o padrão de exclusão de robôs, diz que suas regras "não são uma forma de autorização de acesso" (RFC 9309). Mantenha-o para os rastreadores que o respeitam e imponha todo o resto no seu servidor. Nosso guia para bloquear rastreadores de IA mostra essa camada de imposição com código para nginx e Express.

Comece pelos logs de ontem. Exporte os 50 clientes mais ativos que não carregaram nenhum recurso, cole cada um na consulta de IP gratuita (30 consultas por minuto sem chave, 1.500 por dia com uma chave gratuita) e separe-os nas classes da tabela de consultas acima. Os que sobrarem, muito ativos e em redes residenciais, são onde as suas regras de comportamento entram em seguida.

Perguntas frequentes

Como bloqueio scrapers de IA como GPTBot ou CCBot?

Comece pelo robots.txt: o GPTBot e o CCBot o respeitam, então uma regra Disallow para os tokens deles detém os rastreadores declarados. O robots.txt é um pedido, não um controle de acesso (a RFC 9309 diz que suas regras não são uma forma de autorização de acesso), então aplique as regras também no seu servidor: verifique cada rastreador pelas faixas de IP que ele publica e trate como não verificado um cliente que usa o nome de fora dessas faixas. A OpenAI opera vários bots com funções diferentes; nosso post GPTBot vs OAI-SearchBot vs ChatGPT-User explica qual bloquear se você quiser continuar na busca do ChatGPT.

Quantas requisições por minuto indicam scraping?

Não existe um número universal. Meça a sua própria linha de base humana em um dia normal, por /24 no IPv4 e por /64 no IPv6, e depois procure redes muito acima dela. A taxa sozinha também sinaliza NAT de escritórios, CGNAT e serviços de monitoramento, então trate uma taxa alta como scraping só quando ela vier junto com páginas buscadas em sequência e nenhuma requisição de recursos.

É possível impedir totalmente o web scraping?

Não. Qualquer coisa que um navegador consiga renderizar, um scraper determinado consegue copiar, inclusive por meio de proxies residenciais e navegadores reais. O objetivo é tornar o scraping lento, caro e visível: verificar rastreadores, limitar a taxa por rede, desafiar clientes que não se comportam como navegadores e colocar dados de alto valor atrás de login ou de chaves de API.

Bloquear IPs de datacenter impede o scraping?

Em parte. Isso detém scrapers que rodam em servidores de nuvem baratos, mas também bloqueia rastreadores verificados, a menos que você os libere antes: nas nossas consultas de 2026-10-08, o CCBot na AWS pontuou 0 (allow) e o Googlebot real pontuou 0 (allow), ambos em redes de hospedagem. Um servidor Linode comum pontuou 10, também allow, então a pontuação sozinha não o bloqueia. Scrapers que alugam proxies residenciais passam totalmente por um bloqueio de datacenter.

Uma consulta de IP pode me dizer que um IP é um scraper?

Não. Uma consulta informa a classe da rede e o risco: um rastreador verificado, um servidor de datacenter, uma saída do Tor ou uma VPN. Se esse IP está fazendo scraping no seu site é algo que vem dos seus logs: a taxa de requisições, a ordem das páginas que ele busca, se carrega recursos e se o User-Agent corresponde ao rastreador que a consulta verifica.

Como sei se um scraper está usando proxies residenciais?

Não dá para saber pelo IP, e a GeoIPHub não detecta proxies residenciais. Procure muitos IPs de consumidores que compartilham um mesmo padrão de sessão: a mesma ordem de páginas, o mesmo intervalo entre requisições, os mesmos recursos ausentes e impressões digitais de TLS ou de dispositivo parecidas. O que denuncia o scraper é o padrão entre os endereços, não um endereço isolado.

Escrito por

Equipe GeoIPHub

A equipe por trás da API do GeoIPHub

Escrito pela equipe do GeoIPHub, as pessoas que constroem a API de inteligência de IP do GeoIPHub e seu scanner. Os rascunhos são preparados com auxílio de IA e editados pela equipe; os exemplos de API são consultas reais à API em produção, salvo quando indicados como ilustrativos.

Compartilhe este artigo
Mais artigos

Artigos relacionados