# Raspagem Educada Que Ainda Escala: Um Guia de Limitação de Taxa

Martelar um site faz você ser banido; rastrear uma solicitação de cada vez não leva a lugar nenhum. O meio escalável é o ritmo adaptativo por domínio, distribuído em IPs limpos — educado para o site, rápido para você.

Quase metade de todo o tráfego da internet agora é automatizado, e os sites sabem disso. A limitação de taxa é sua primeira e mais básica defesa — um limite de velocidade que decide quanto você pode pegar e quão rápido. A tentação é tratá-la como um obstáculo a ser rompido com força bruta, mas isso faz você ser banido. O erro oposto, rastrear uma solicitação cuidadosa de cada vez, não leva a lugar nenhum em escala. A resposta escalável é **raspagem educada**: ritme cada alvo como um usuário pesado, mas legítimo, distribuir a carga em IPs limpos e deixar as próprias respostas do site ajustarem sua velocidade. É assim que você se mantém rápido sem se tornar o tráfego que bloqueia todos.

## Saiba qual limite você está atingindo

Os servidores contam suas solicitações contra um identificador — geralmente seu IP, às vezes uma chave de API ou conta — em uma janela de tempo, e agem quando você ultrapassa um limite. Os três modelos comuns se comportam de maneira diferente: uma **janela fixa** conta solicitações por minuto de calendário; um **balde de tokens** lhe dá um número fixo de tokens (digamos 100 por minuto) e gasta um por solicitação, forçando uma espera quando o balde esvazia; uma **janela deslizante** conta nos últimos 60 segundos rolantes a qualquer instante. O resultado prático é que um surto é mais perigoso do que um fluxo constante — dez solicitações em um segundo podem disparar um limite que cem distribuídas em um minuto não disparariam.

Os limites também vêm em sabores. Limites suaves são gentis: o servidor desacelera você ou retorna `429 Too Many Requests` com um cabeçalho `Retry-After` dizendo exatamente quanto tempo esperar (o Erro 1015 do Cloudflare é isso). Alguns sites toleram pequenos surtos — permitindo 100 por minuto, mas apenas limitando a 120 — enquanto outros limitam cedo, digamos a 15 por minuto, e apenas bloqueiam rigidamente a 30. Limites rígidos são tetos estritos: uma API que permite 1.000 solicitações por hora bloqueia você completamente uma vez que você excede. Empurre um limite suave repetidamente e ele escala: 429 torna-se 403, depois uma proibição temporária de minutos a horas cuja janela cresce a cada vez que você a dispara, e finalmente uma lista negra permanente do seu IP ou sub-rede inteira.

## Leia a resposta, não adivinhe

A maior atualização para um scraper é reagir ao que o servidor lhe diz em vez de disparar uma taxa fixa. Aprenda o vocabulário: `429` significa desacelerar e honrar `Retry-After`; `403` significa que essa identidade está marcada, então rotacione em vez de tentar novamente; `503` é frequentemente um desafio ou rejeição temporária; e um `200` que retorna uma página CAPTCHA é um bloqueio suave, não um sucesso. Trate cada um de forma diferente. O movimento errado — tentar novamente o mesmo IP queimado em um 403, ou ignorar Retry-After e continuar em um 429 — é o que transforma um aviso suave em uma proibição permanente. Nossos mergulhos profundos em [corrigir 429s](https://quantumproxies.io/blog/fix-429-too-many-requests-scraping) cobrem o manuseio de respostas em detalhes.

```python
import time, requests

def polite_get(session, url, max_tries=4):
    for attempt in range(max_tries):
        r = session.get(url, timeout=20)
        if r.status_code == 200 and "captcha" not in r.text.lower():
            return r
        if r.status_code == 429:                       # obey the server
            wait = int(r.headers.get("Retry-After", 2 ** attempt))
            time.sleep(wait)
            continue
        if r.status_code in (403, 503):                # this exit is burned
            rotate_ip(session)                         # fresh IP, then retry
            time.sleep(2 ** attempt)                    # exponential backoff
            continue
        return r
    return None
```

![Lógica de cadência em Python que lê cada código de status: um 200 é retornado, um 429 aguarda o cabeçalho Retry-After ou recua exponencialmente, um 403 ou 503 rotaciona o IP e recua; o quadro associa códigos a ações: acelerar no 200, esperar no 429, rotacionar no 403 e tratar uma página de CAPTCHA com 200 como bloqueio suave.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335203/blog/generated/qp-b9-074-diag1.png)
*Deixe os próprios códigos de resposta do site dirigirem sua velocidade: acelere em 200s, obedeça Retry-After em 429s, rotacione em 403s.*

## Orçamento de solicitações por domínio

Um crawler que toca muitos sites nunca deve aplicar uma taxa global a todos eles. Um pequeno blog e um mercado fortalecido toleram cargas muito diferentes, então dê a cada domínio seu próprio orçamento. Um balde de tokens por host é o padrão limpo: atribua uma taxa conservadora por domínio, reabasteça ao longo do tempo e deixe solicitações para diferentes hosts rodarem em paralelo enquanto solicitações para o mesmo host permanecem dentro de seu limite. Comece devagar em um novo alvo e deixe os códigos de resposta dizerem se você pode acelerar.

```python
import time
from collections import defaultdict

class DomainLimiter:
    def __init__(self, per_min=30):
        self.gap = 60.0 / per_min          # min seconds between hits per host
        self.last = defaultdict(float)
    def wait(self, host):
        now = time.time()
        delay = self.gap - (now - self.last[host])
        if delay > 0:
            time.sleep(delay)
        self.last[host] = time.time()

# 30 req/min to any single host; different hosts proceed independently
limiter = DomainLimiter(per_min=30)
limiter.wait("example.com")
```

## Distribua a carga para que cada IP permaneça educado

Aqui está o movimento que reconcilia "educado" com "escala": a educação é medida por IP, mas sua taxa de transferência total é a soma em IPs. Se um alvo tolera 30 solicitações por minuto por endereço, um IP limita você a 30 — mas dez IPs limpos, cada um fazendo 30, dão a você 300 por minuto enquanto cada saída individual permanece cortês. Um [gateway residencial rotativo](https://quantumproxies.io/rotating-proxies) faz isso automaticamente, fornecendo um IP fresco por solicitação em mais de 90 milhões de endereços para que nenhuma saída única pareça agressiva. Isso não é um truque para martelar mais forte; é distribuir carga genuína para que nenhum servidor suporte um pico suspeito. Os fundamentos da rotação de IPs estão em [o que é rotação de IP e por que é crucial](https://quantumproxies.io/blog/what-is-ip-rotation-and-why-it-s-crucial-in-2026).

[Distribua a carga em IPs rotativos limpos](https://quantumproxies.io/rotating-proxies)

## Tome menos, armazene mais, escolha suas horas

A solicitação mais educada é a que você nunca envia. Três hábitos reduzem a carga sem custar dados. Primeiro, armazene agressivamente e use solicitações condicionais — envie `If-Modified-Since` ou `If-None-Match` para que uma página inalterada retorne um pequeno `304` em vez do corpo completo, poupando o servidor e sua largura de banda. Segundo, orce a concorrência deliberadamente: um semáforo limitando solicitações em andamento por domínio impede você de estourar acidentalmente. Terceiro, agende trabalhos pesados para as horas de menor movimento do alvo, quando seu tráfego é uma parte menor do deles e menos propenso a disparar um limite. Combinados, esses hábitos podem reduzir pela metade as solicitações que um trabalho precisa — a disciplina por trás de nossa lista de verificação [anti-ban](https://quantumproxies.io/blog/avoid-ip-ban-web-scraping).

Mais uma coisa que vale a pena dizer claramente: verifique `robots.txt` e respeite as expectativas de rastreamento declaradas de um site. A educação não é apenas autopreservação — ser um bom cidadão mantém a web aberta para todos. Nosso guia sobre [robots.txt na prática](https://quantumproxies.io/blog/robots-txt-web-scraping-ethics) cobre o que ele faz e não faz vincular.

![Uma escala de escalonamento do suave ao permanente: um 429 Too Many Requests pedindo que você desacelere, um 403 quando a identidade é sinalizada, um banimento temporário de minutos a horas que vai crescendo e, por fim, uma lista negra permanente do IP ou da sub-rede; o quadro diz para respeitar o Retry-After no primeiro 429 e nunca tentar de novo com um IP queimado.](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335204/blog/generated/qp-b9-074-diag2.png)
*Empurre um limite suave repetidamente e ele endurece: 429 torna-se 403, depois uma proibição temporária crescente, depois uma lista negra permanente.*

## Perguntas frequentes

### Como evito a limitação de taxa ao fazer scraping?

Ritme cada domínio com seu próprio orçamento de solicitações, respeite `Retry-After` em 429s, recue exponencialmente e distribua a carga em um pool rotativo de IPs limpos para que nenhum endereço único pareça agressivo. Adicione cache e solicitações condicionais para enviar menos solicitações no total e agende trabalhos pesados para as horas de menor movimento do alvo.

### O que significa HTTP 429 e como devo lidar com isso?

429 Too Many Requests é um limite de taxa suave — o servidor está pedindo para você desacelerar, não banindo você. Leia o cabeçalho `Retry-After` e espere exatamente esse tempo antes de tentar novamente; se estiver ausente, recue exponencialmente. Nunca ignore e continue martelando, porque 429s repetidos escalam para 403s e depois para proibições temporárias ou permanentes.

### Quantas solicitações por minuto são seguras?

Não há um número universal — depende inteiramente do alvo. Um site pequeno pode tolerar apenas algumas solicitações por minuto; um grande, muito mais. Comece de forma conservadora (digamos 20–30 por minuto por IP), fique atento a 429s e ajuste a partir das respostas. Escale a taxa de transferência total adicionando IPs, não aumentando a taxa em um único.

### Proxies rotativos são considerados indelicados?

Não quando usados para distribuir carga genuína. A rotação mantém cada IP individual dentro de uma taxa cortês enquanto sua taxa de transferência agregada cresce — o servidor nunca vê um pico suspeito de nenhum endereço. Torna-se indelicado apenas se você usá-lo para exceder o que o site pode razoavelmente lidar no total; ritme o agregado, não apenas a taxa por IP.

Educado e escalável não são opostos. Leia os sinais, respeite Retry-After, orce por domínio, armazene o que puder e distribua o restante em IPs rotativos limpos. Você acaba mais rápido do que o scraper imprudente — porque você é quem nunca é banido.

[Escale educadamente com proxies residenciais rotativos](https://quantumproxies.io/rotating-proxies)
