Como Evitar Banimentos de IP da Amazon ao Fazer Scraping

Compreender o sistema de proibição de IP da Amazon e aprender estratégias comprovadas para evitar detecção. Abrange configuração de proxy residencial, randomização de solicitação, geo-alvo, e procedimentos de recuperação.

Como Evitar Banimentos de IP da Amazon ao Fazer Scraping

Entendendo o sistema de proibição de IP da Amazon

A Amazon opera um dos sistemas antibots mais sofisticados da internet. Quando seus endereços IP são banidos, você perde o acesso aos dados do produto que impulsionam suas operações de preços, pesquisa e inteligência competitiva. Entender como a Amazon detecta e proíbe IPs é o primeiro passo para evitá-lo.

A Amazon não bloqueia simplesmente IPs individuais — constrói perfis comportamentais. Um único IP suspeito pode desencadear blocos moles (CAPTCHAs), enquanto violações persistentes levam a blocos rígidos (renegação de acesso completa). O sistema rastreia padrões em intervalos de IP, então obter um IP proibido pode aumentar o escrutínio em endereços vizinhos. Para uma compreensão abrangente dos métodos de detecção, consulte como sistemas anti-bots detectam proxies.

Como a Amazon detecta tráfego automatizado

A detecção da Amazon opera em múltiplas camadas simultaneamente.

Detecção de Nível de Pedido

Detecção de Nível de Pedido
SinalO que a Amazon verificaNível de Risco
Impressão digital TLSO aperto de mão TLS corresponde às bibliotecas de bots conhecidas (pedidos Python, curl)Alta
Ordem do cabeçalhocabeçalhos HTTP enviados em ordem não- navegadorMédio
Cabeçalhos em FaltaAusência de Aceitar-Língua, Aceitar-Codificação, etc.Alta
Agente do UsuárioTextos fora de data, inválidos ou conhecidos como User-AgentAlta
Tratamento de CookiesNão aceitar ou devolver cookies de sessãoMédio

Detecção comportamental

Detecção comportamental
PadrãoDesignação das mercadoriasNível de Risco
Intervalos fixosPedidos que chegam em intervalos exatos (a cada 5,0 segundos)Alta
Rastreamento sequencialVisitar ASINs em ordem numérica ou alfabéticaAlta
Sem caminho de navegaçãoSaltando diretamente para páginas de produto sem navegaçãoMédio
Volume elevado de pedidosCentenas de pedidos por minuto de um IPCrítico
Sem execução JavaScriptPáginas carregadas sem executar o JavaScriptMédio

Detecção de Nível IP

Amazon mantém bancos de dados de intervalos IP datacenter e provedores proxy conhecidos. Os IPs do Datacenter enfrentam um escrutínio imediato, independentemente do comportamento. IPs residenciais começar com maior confiança porque eles compartilham piscinas com verdadeiros compradores da Amazon.

Tipos de Blocos da Amazônia

Compreender os diferentes tipos de blocos ajuda você a responder adequadamente.

Blocos macios (CAPTCHA)

A resposta mais comum. Amazon serve uma página CAPTCHA em vez de dados de produto. Este é um aviso — continue a partir do mesmo IP e você vai aumentar para um bloco rígido. Quando receber um CAPTCHA, afaste-se imediatamente e mude para um novo IP.

Blocos rígidos (503/403 erros)

Negação completa de acesso, normalmente retornando códigos de status HTTP 503 ou 403. Os blocos duros podem durar horas a dias para um IP específico. Uma vez bloqueado, esse IP é efetivamente inutilizável para a Amazon até que o bloco expire.

Manipulação do Conteúdo

A Amazon às vezes serve conteúdo diferente para os bots suspeitos — preços incorretos, revisões em falta ou dados incompletos do produto. Isso é mais difícil de detectar porque você recebe uma resposta de 200. Validar seus dados raspados contra valores conhecidos para capturar isso.

Key takeaway: CAPTCHAs são sinais de alerta, não apenas obstáculos. Trate cada CAPTCHA como um indicador de que sua abordagem atual precisa de ajuste.

Estratégias de prevenção

1. Use Proxies Residenciais

Esta é a mudança mais impactante que você pode fazer. Proxies residenciais usam endereços IP atribuídos a assinantes reais da internet, tornando seus pedidos indistinguíveis de compradores genuínos. O grupo de proxy residencial do ProxyHat abrange mais de 195 países com milhões de IPs.

# ProxyHat residential proxy with geo-targeting
http://USERNAME-country-US:PASSWORD@gate.proxyhat.com:8080
# For Amazon.de
http://USERNAME-country-DE:PASSWORD@gate.proxyhat.com:8080
# For Amazon.co.uk
http://USERNAME-country-GB:PASSWORD@gate.proxyhat.com:8080

2. Implementar a rotação inteligente

Nunca envie mais de 5-10 pedidos de um único IP para a Amazon. O gateway do ProxyHat roda automaticamente IPs por solicitação por padrão, mas você também deve implementar controles de nível de aplicação.

import requests
import random
import time
PROXY_BASE = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
def make_request(url, max_retries=3):
    """Make a request with automatic retry on failure."""
    for attempt in range(max_retries):
        # Each request gets a fresh IP from the rotating proxy
        proxies = {"http": PROXY_BASE, "https": PROXY_BASE}
        headers = {
            "User-Agent": random.choice(USER_AGENTS),
            "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
            "Accept-Language": "en-US,en;q=0.9",
            "Accept-Encoding": "gzip, deflate, br",
        }
        try:
            response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
            # Check for CAPTCHA
            if "captcha" in response.text.lower() or response.status_code == 503:
                print(f"CAPTCHA/block detected on attempt {attempt + 1}")
                time.sleep(random.uniform(10, 30))  # Longer backoff
                continue
            if response.status_code == 200:
                return response
        except requests.RequestException:
            time.sleep(random.uniform(5, 15))
    return None

3. Randomizar os Padrões de Pedido

Cada aspecto do seu padrão de solicitação deve incluir aleatoriedade para evitar a detecção estatística.

import random
import time
def random_delay(min_sec=2, max_sec=7):
    """Add human-like random delay."""
    delay = random.uniform(min_sec, max_sec)
    # Occasionally add a longer pause (simulates reading a page)
    if random.random() < 0.1:  # 10% chance
        delay += random.uniform(10, 30)
    time.sleep(delay)
def shuffle_targets(urls):
    """Randomize the order of URLs to avoid sequential patterns."""
    shuffled = urls.copy()
    random.shuffle(shuffled)
    return shuffled
def get_random_user_agent():
    """Return a realistic, current User-Agent string."""
    agents = [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
        "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    ]
    return random.choice(agents)

4. Combine geo-localização para Marketplace

Acessando amazon.com de um IP alemão ou amazon.de de um IP japonês é um forte sinal de atividade automatizada. Combina sempre a localização do seu proxy com o mercado alvo.

4. Combine geo-localização para Marketplace
MercadoPaís ProxyConfiguração do ProxyHat
amazon.comEstados UnidosUSERNAME-country-US
amazon.co.ukReino UnidoUSERNAME-country-GB
amazon.deAlemanhaUSERNAME-country-DE
amazon.co.jpJapãoUSERNAME-country-JP
amazon.frFrançaUSERNAME-country-FR
amazon.inÍndiaUSERNAME-country-IN

Verificar Lista de localização completa do ProxyHat para todos os países apoiados.

5. Lidar com as sessões corretamente

A Amazon rastreia sessões através de cookies. Aceitar e devolver cookies faz com que seus pedidos pareçam mais com um navegador real. Para navegação paginada (resultados de pesquisa, revisões), use sessões pegajosas para manter o mesmo IP e pote de cookies.

# Sticky session for paginated scraping
PROXY_SESSION = "http://USERNAME-session-amz{session_id}:PASSWORD@gate.proxyhat.com:8080"
def create_session(session_id):
    """Create a requests session with sticky proxy and cookies."""
    session = requests.Session()
    proxy = PROXY_SESSION.format(session_id=session_id)
    session.proxies = {"http": proxy, "https": proxy}
    session.headers.update({
        "User-Agent": get_random_user_agent(),
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.9",
        "Accept-Encoding": "gzip, deflate, br",
    })
    return session

6. Monitore sua taxa de sucesso

Acompanhe sua taxa HTTP 200, CAPTCHA e taxa de bloqueio em tempo real. Defina limiares para estrangular automaticamente seu raspador quando a detecção aumentar.

class SuccessTracker:
    def __init__(self, captcha_threshold=0.1, block_threshold=0.05):
        self.total = 0
        self.success = 0
        self.captchas = 0
        self.blocks = 0
        self.captcha_threshold = captcha_threshold
        self.block_threshold = block_threshold
    def record(self, status):
        self.total += 1
        if status == "success":
            self.success += 1
        elif status == "captcha":
            self.captchas += 1
        elif status == "block":
            self.blocks += 1
    @property
    def should_throttle(self):
        if self.total < 10:
            return False
        captcha_rate = self.captchas / self.total
        block_rate = self.blocks / self.total
        return captcha_rate > self.captcha_threshold or block_rate > self.block_threshold
    @property
    def success_rate(self):
        return self.success / self.total if self.total > 0 else 0

Recuperação após uma proibição

Se um IP for banido, aqui está como recuperar:

  1. Parar imediatamente: Não continue enviando pedidos do IP banido ou IPs próximos.
  2. Mudar de IP: Use um novo conjunto de IPs residenciais de uma gama diferente. A grande piscina do ProxyHat garante que você sempre tenha IPs limpos disponíveis.
  3. Ajuste sua abordagem: Reveja seus padrões de solicitação, atrasos e cabeçalhos antes de retomar.
  4. Iniciar lentamente: Ao retomar, comece com uma baixa taxa de solicitação e aumente gradualmente.
  5. Espera. As proibições da Amazon normalmente expiram dentro de 24-48 horas para blocos macios e até 7 dias para blocos duros em IPs específicos.

Node.js Ban Prevention

Aqui está uma implementação Node.js equivalente usando O Nó do ProxyHat SDK.

const axios = require("axios");
const { HttpsProxyAgent } = require("https-proxy-agent");
const PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080";
const USER_AGENTS = [
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0",
];
async function safeAmazonRequest(url, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const agent = new HttpsProxyAgent(PROXY_URL);
    try {
      const response = await axios.get(url, {
        httpsAgent: agent,
        headers: {
          "User-Agent": USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)],
          "Accept-Language": "en-US,en;q=0.9",
          Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
          "Accept-Encoding": "gzip, deflate, br",
        },
        timeout: 30000,
        validateStatus: () => true,
      });
      if (response.data.toLowerCase().includes("captcha") || response.status === 503) {
        console.log(`CAPTCHA/block on attempt ${attempt + 1}`);
        await new Promise((r) => setTimeout(r, 10000 + Math.random() * 20000));
        continue;
      }
      if (response.status === 200) return response;
    } catch (err) {
      await new Promise((r) => setTimeout(r, 5000 + Math.random() * 10000));
    }
  }
  return null;
}
// Random delay between requests
function randomDelay(minMs = 2000, maxMs = 7000) {
  const delay = minMs + Math.random() * (maxMs - minMs);
  return new Promise((r) => setTimeout(r, delay));
}

Lista de Verificação de Prevenção

Use esta lista de verificação antes de executar qualquer raspador Amazon:

  • Usando proxies residenciais (não datacenter)
  • A geolocalização do Proxy corresponde ao mercado alvo
  • Textos do usuário são atuais e girados
  • Todos os cabeçalhos padrão do navegador estão incluídos
  • Atrasos na solicitação são randomizados (2-7 segundos mínimo)
  • URLs são embaralhadas, não processadas sequencialmente
  • O manuseamento de cookies está activo
  • Detecção CAPTCHA e retrocesso automático estão no lugar
  • A monitorização da taxa de sucesso está activa
  • A concorrência é limitada (iniciar com 5-10 solicitações paralelas)

Tiras de Chaves

  • A detecção da Amazon é multicamadas: solicita impressões digitais, padrões de comportamento e reputação IP.
  • Proxies residenciais não são negociáveis — IPs datacenters enfrentam escrutínio imediato aumentado.
  • Coincidir geo-localização proxy para o mercado alvo Amazon.
  • Randomize tudo: atrasos, agentes do usuário, pedidos e padrões de sessão.
  • Tratar CAPTCHAs como avisos precoces e ajustar imediatamente.
  • Monitore as taxas de sucesso e acelere automaticamente quando a detecção aumentar.

Para uma instalação completa de raspagem da Amazon, leia Guia de raspagem de dados de produtos da Amazon e explorar o Estratégia de raspagem do comércio electrónicoComeçar com Proxies residenciais do ProxyHat para acesso confiável à Amazon.

Pronto para começar?

Acesse mais de 50M de IPs residenciais em mais de 148 países com filtragem por IA.

Ver preçosProxies residenciais
← Voltar ao Blog