Sem KYC — sem ID, sem selfie, sem documentos. Pague com cripto: BTC, USDT, USDC, ETH, SOL, LTC
Idioma: Português
Comece agora

Referência de erro de proxy · Códigos de status HTTP

429 Too Many Requests ao raspagem: o que significa e como corrigir

Código de status HTTP (4xx, erro do cliente): a mensagem exata em cada ferramenta, as causas prováveis em ordem, e o conserto que funciona.

Última atualização: · 5 min de leitura

Resposta rápida

O que 429 Too Many Requests significa com um proxy?

429 Too Many Requests significa que o site está limitando sua taxa: você enviou mais requisições do que aceitam por janela de tempo. A solução é enviar menos, não esconder mais. Com proxies residenciais CrawlRelay, respeite o cabeçalho Retry-After, limite a concorrência por host e faça backoff exponencial com jitter aleatório. Rotacionar IPs para exceder limites publicados quebra a maioria dos termos de uso.

429 Too Many Requests de relance

Erro429 Too Many Requests
TipoCódigo de status HTTP (4xx, erro do cliente)
Enviado porO site alvo ou seu gateway de API
Definido emRFC 6585, section 4 (Retry-After: RFC 9110, section 10.2.3)
Tentar novamente?Sim, após o intervalo Retry-After ou um backoff exponencial
Primeira verificaçãoLeia o cabeçalho Retry-After e suas requisições por segundo por host

O que 429 Too Many Requests significa?

RFC 6585 introduziu 429 para limitação de taxa. O servidor pode adicionar um cabeçalho Retry-After, seja um número de segundos ou uma data HTTP, dizendo quando voltar. APIs adicionam cabeçalhos próprios, por exemplo X-RateLimit-Remaining.

Um 429 é a resposta mais educada que um site pode dar a um scraper. Indica que o conteúdo está disponível, só não na velocidade atual. Sites que ignoram seus 429 normalmente escalam para 403, CAPTCHAs ou bloqueios permanentes.

Como a 429 aparece em Python, curl, Node.js e navegadores?

A mesma falha aparece de forma diferente em cada ferramenta. Estas são as mensagens para buscar nos seus logs:

  • Python requests / httpx: status_code == 429, frequentemente com Retry-After: 30
  • Scrapy: tratado por RetryMiddleware, pois 429 está no padrão RETRY_HTTP_CODES
  • curl: HTTP/2 429 seguido por retry-after: nos cabeçalhos da resposta
  • APIs: corpo JSON como {"error": "rate_limited"}

O que causa a 429?

Mais provável inicialmente:

  • Concorrência alta por host. Cinquenta trabalhadores paralelos num domínio parecem ataque para a maioria dos sites.
  • Sem atraso entre requisições, ou atraso fixo que sincroniza muitos trabalhadores no mesmo instante.
  • Repetições sem backoff. Uma tempestade de tentativas após o primeiro 429 multiplica a carga.
  • Limites compartilhados. Alguns sites contam requisições por conta, chave de API ou cookie de sessão, não por IP.
  • Pontos finais pesados. URLs de busca e filtro geralmente têm limites mais rígidos que páginas estáticas.

Como diagnosticar a 429 passo a passo?

  1. Registre o valor de Retry-After e quaisquer cabeçalhos de limitação de taxa no primeiro 429.
  2. Meça sua taxa real de requisições por host, não a total.
  3. Verifique se o limite segue o IP, cookie ou chave API: altere um por vez.
  4. Leia a documentação da API ou robots.txt do site; uma linha Crawl-delay indica o ritmo esperado.
Teste a URL com erro usando curl (porta HTTP, modo verbose)
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL

Como corrigir a 429?

  • Respeite Retry-After. Aguarde ao menos o tempo pedido pelo servidor.
  • Limite a concorrência por host, não só globalmente. Scrapy tem CONCURRENT_REQUESTS_PER_DOMAIN e AUTOTHROTTLE_ENABLED.
  • Backoff exponencial com jitter: 1 s, 2 s, 4 s etc., mais uma fração aleatória, com limite máximo.
  • Busque menos. Cache respostas, envie If-Modified-Since ou If-None-Match, pule páginas sem alteração.
  • Use a API oficial quando o site oferecer; limites geralmente documentados.
Python: tentar novamente com Retry-After, backoff exponencial e jitter
import random
import time

import requests

PROXY = "http://USERNAME:[email protected]:7777"
PROXIES = {"http": PROXY, "https": PROXY}
RETRY_STATUSES = {429, 502, 503, 504}


def fetch(url, attempts=5, timeout=(10, 30)):
    for attempt in range(attempts):
        try:
            r = requests.get(url, proxies=PROXIES, timeout=timeout)
        except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
            r = None  # dropped exit, reset or timeout: a new connection gets a new exit
        if r is not None and r.status_code not in RETRY_STATUSES:
            return r
        retry_after = r.headers.get("Retry-After", "") if r is not None else ""
        if retry_after.isdigit():
            wait = int(retry_after)
        else:
            wait = min(60, 2 ** attempt) + random.uniform(0, 1)
        time.sleep(wait)
    raise RuntimeError("giving up on %s after %d attempts" % (url, attempts))

Devo tentar novamente após a 429?

Sim, 429 deve ser refeito depois. Aguarde o intervalo Retry-After se o servidor enviar; senão use backoff exponencial com jitter e limite. Conte 429 consecutivos por host e reduza a concorrência quando aumentar. A função Python abaixo faz o básico.

Como 429 Too Many Requests se aplica ao CrawlRelay?

Um 429 passado via CrawlRelay carrega cabeçalhos e corpo do alvo: o limite é do site, .a dosagem por host é sua tarefa. Use sessões sticky se o site contar requisições por sessão, para manter seu ritmo mensurável; veja o guia de concorrência para números iniciais.

Gateway: gw.crawlrelay.com, porta 7777 (HTTP, HTTPS via CONNECT) e porta 7778 (SOCKS5). Formato do usuário: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Relacionado: 403 Forbidden · 503 Service Unavailable · Guia de concorrência.

429 Too Many Requests: perguntas que desenvolvedores fazem

Devo rotacionar IPs para evitar 429?

Não. Um 429 é pedido do site para desacelerar. Espalhar a mesma taxa por mais IPs para driblar limites por IP é evasão, proibida por maioria dos termos de uso. Rotação serve para distribuir carga e localização, não para exceder limites publicados. Reduza sua taxa e use cache.

Quanto tempo devo esperar após um 429?

Espere o número de segundos no cabeçalho Retry-After, ou até a data indicada. Sem cabeçalho, comece com um ou dois segundos e dobre o tempo após cada novo 429, com um extra aleatório e limite próximo a um minuto. Retome com taxa menor, não com a que causou o 429.

Por que recebo 429 com poucas requisições por minuto?

O limite pode ser por conta, cookie ou chave API, não por IP, ou o ponto final pode ser custoso, como página de busca. Alguns sites aplicam limites baixos a clientes classificados como bots. Verifique cabeçalhos de resposta, documentação API e peça acesso ao site se precisar de mais.

Outros erros de proxy nesta referência

Códigos de status HTTP

Erros no navegador e cliente

Erros de conexão e TLS

Proxies residenciais com documentação que cobre os casos de falha

CrawlRelay proxies residenciais a partir de US$ 0,50/GB, tráfego que nunca expira.

A partir de US$ 0,50/GB · sem KYC

Comece agora