Resposta rápida
O que 503 Service Unavailable significa com um proxy?
503 Service Unavailable significa que o servidor não pode atender a requisição agora, por sobrecarga, manutenção ou uma regra de proteção. Via proxies residenciais do CrawlRelay, leia o cabeçalho Retry-After e o corpo da resposta: um 503 por manutenção ou sobrecarga se resolve com o tempo, já uma página de desafio indica filtro contra tráfego automatizado e você deve desacelerar.
503 Service Unavailable de relance
| Erro | 503 Service Unavailable |
|---|---|
| Tipo | Código de status HTTP (5xx, erro do servidor) |
| Enviado por | O site alvo, sua CDN ou o proxy quando não tem saída disponível |
| Definido em | RFC 9110, section 15.6.4 (Retry-After: section 10.2.3) |
| Tentar novamente? | Sim, após Retry-After ou um backoff |
| Primeira verificação | Cheque o cabeçalho Retry-After e se o corpo é uma página de desafio da CDN |
O que 503 Service Unavailable significa?
RFC 9110 define 503 como condição temporária. O servidor está ativo mas não quer ou não pode atender a requisição agora, e pode dizer quando voltar via Retry-After.
Na prática, três situações compartilham esse código: site realmente sobrecarregado ou em manutenção, CDN exibindo página de desafio a tráfego automatizado e gateway proxy sem saída para segmentação muito restrita. O corpo e os cabeçalhos diferenciam.
Como a 503 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 == 503, às vezes comRetry-After - Scrapy: tenta de novo por padrão (503 está em
RETRY_HTTP_CODES) - curl:
HTTP/2 503, frequentemente com cabeçalhoserver:indicando a CDN - Navegadores: página de manutenção ou cheque intersticial
O que causa a 503?
Mais provável inicialmente:
- Sobrecarga ou manutenção no site alvo, normalmente com
Retry-After. - Página de desafio servida por uma CDN para clientes que quer verificar, com status 503 ou 403.
- Sua própria carga, quando seu crawler gera grande parte do tráfego do site.
- Segmentação restrita, por exemplo uma cidade pequena, quando nenhuma saída está disponível no momento.
- Queda upstream na CDN ou região cloud usada pelo site.
Como diagnosticar a 503 passo a passo?
- Leia
Retry-Aftere o cabeçalhoserver, depois observe o título HTML do corpo. - Carregue a página num navegador do mesmo país para ver o que uma pessoa vê.
- Pause seu crawler por alguns minutos e teste uma requisição: se passar, sua carga foi o gatilho.
- Amplie a segmentação para o nível país e compare.
# 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_URLComo corrigir a 503?
- Espere e tente de novo usando o atraso
Retry-Afterou backoff exponencial. - Reduza sua carga nesse host: menos requisições paralelas, atrasos maiores, cache.
- Considere a página de desafio como sinal de parada para essa velocidade. Não use soluções de CAPTCHA ou disfarce de navegador para passar; diminua o ritmo e contate o site se precisar de acesso.
- Amplie a segmentação quando o 503 vem com filtro restrito de cidade.
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 503?
Tente de novo um 503, mas com paciência. Use Retry-After se presente; senão faça backoff exponencial de alguns segundos até um ou dois minutos. Se um host responde 503 para a maioria das requisições por mais de alguns minutos, pause ele totalmente e volte depois. Registre páginas de desafio separadamente de quedas reais nos seus logs.
Como 503 Service Unavailable se aplica ao CrawlRelay?
CrawlRelay envia sua requisição por um IP residencial escolhido para combinar com sua segmentação. Segmentação por país usa o maior conjunto de saídas; por cidade é mais restrita. Se 503s ocorrem só com filtro de cidade, teste a mesma requisição por país antes de mudar qualquer outra coisa.
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: 429 Too Many Requests · 502 Bad Gateway · 504 Gateway Timeout.
503 Service Unavailable: perguntas que desenvolvedores fazem
Por que recebo 503 só via proxy e não da minha casa?
Ou o site trata seu tráfego proxy de forma diferente, muitas vezes mostrando página de desafio, ou sua segmentação é tão restrita que saídas são escassas. Compare o corpo da resposta nos dois casos. Página de desafio é para desacelerar; mensagem curta de proxy com segmentação restrita indica ampliar o filtro de localização.
503 é o mesmo que ser bloqueado?
Não. Um 503 real é temporário e se resolve com o tempo. Página de desafio servida com 503 é filtro e geralmente indica ritmo ou padrão automatizado. Reduza concorrência e adicione atrasos. Se o site não quiser acesso automatizado, respeite e busque API ou dados licenciados.
Quantas vezes devo tentar um 503?
Três a cinco tentativas com backoff exponencial é um teto razoável para um URL. Depois disso, pause o host inteiro em vez de tentar URLs isoladamente, pois site em problema não melhora com tentativas. Registre o host e horário para retomar depois.
Outros erros de proxy nesta referência
Códigos de status HTTP
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
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.