Come Evitare i Bani IP Amazon durante lo Scraping

Capire il sistema di divieto IP di Amazon e imparare strategie provate per evitare il rilevamento. Copre la configurazione di proxy residenziale, richiedere randomizzazione, geo-targeting e procedure di recupero.

Come Evitare i Bani IP Amazon durante lo Scraping

Comprendere il sistema IP Ban di Amazon

Amazon gestisce uno dei più sofisticati sistemi anti-bot su internet. Quando gli indirizzi IP vengono vietati, si perde l'accesso ai dati del prodotto che guida le operazioni di pricing, ricerca e intelligenza competitiva. Capire come Amazon rileva e vieta gli IP è il primo passo per impedirlo.

Amazon non blocca semplicemente IP individuali — costruisce profili comportamentali. Un singolo IP sospetto potrebbe innescare blocchi morbidi (CAPTCHAs), mentre le violazioni persistenti portano a blocchi duri (completa negazione di accesso). Il sistema traccia i modelli tra gli intervalli IP, così ottenere un IP vietato può aumentare il controllo sugli indirizzi vicini. Per una comprensione completa dei metodi di rilevamento, vedere la nostra guida come i sistemi anti-bot rilevano i proxy.

Come Amazon rileva il traffico automatizzato

Il rilevamento di Amazon funziona su più strati contemporaneamente.

Detezione a richiesta

SegnaleCosa controlla AmazonLivello di rischio
TLS FingerprintTLS handshake corrisponde a librerie di bot conosciute (richieste di Python, curl)Alto
Ordine intestazioneIntestazioni HTTP inviate in ordine non-browserMedia
Intestazioni mancantiAssenza di Accetta-Language, Accetta-Codifica, ecc.Alto
User-Agentstringhe obsolete, invalide o note-bot User-AgentAlto
Gestione dei cookieNon accettare o restituire i cookie di sessioneMedia

Detezione comportamentale

ModelloDescrizioneLivello di rischio
Intervalli fissiRichieste che arrivano a intervalli esatti (ogni 5,0 secondi)Alto
Strisciando sequenzialeVisitare ASIN in ordine numerico o alfabeticoAlto
Nessun percorso di navigazioneSalta direttamente alle pagine del prodotto senza navigazioneMedia
Volume di alta richiestaCentinaia di richieste al minuto da un IPCritica
Nessuna esecuzione JavaScriptPagine caricate senza eseguire JavaScriptMedia

Rilevazione IP-Level

Amazon mantiene database di intervalli IP datacenter e provider proxy noti. Gli IP del Datacenter affrontano un controllo immediato accresciuto indipendentemente dal comportamento. IP residenziali iniziare con maggiore fiducia perché condividono piscine con veri acquirenti Amazon.

Tipi di blocchi Amazon

Capire i diversi tipi di blocco ti aiuta a rispondere in modo appropriato.

Blocchi morbidi (CAPTCHA)

La risposta più comune. Amazon serve una pagina CAPTCHA invece dei dati del prodotto. Questo è un avvertimento — continuano dallo stesso IP e si escalerà a un blocco duro. Quando si riceve un CAPTCHA, disattivare immediatamente e passare a un nuovo IP.

Blocchi rigidi (503/403 errori)

Rinnegamento completo dell'accesso, in genere restituendo i codici di stato HTTP 503 o 403. I blocchi rigidi possono durare ore a giorni per un IP specifico. Una volta bloccato, che l'IP è effettivamente inutilizzabile per Amazon fino alla scadenza del blocco.

Manipolazione dei contenuti

Amazon a volte serve diversi contenuti per sospetti bot — prezzi errati, recensioni mancanti, o dati di prodotto incompleti. Questo è più difficile da rilevare perché si riceve una risposta di 200. Convalida i tuoi dati raschiati contro i valori noti per catturare questo.

Asporto chiave: CAPTCHA sono segnali di avvertimento, non solo ostacoli. Trattare ogni CAPTCHA come un indicatore che il vostro approccio attuale ha bisogno di regolazione.

Strategie di prevenzione

1. Utilizzare i proxy residenziali

Questo è il cambiamento più efficace che si può fare. I proxy residenziali utilizzano gli indirizzi IP assegnati agli abbonati Internet reali, rendendo le vostre richieste indistinguibili da veri acquirenti. Il pool proxy residenziale di ProxyHat copre 195+ paesi con milioni di IP.

# 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. Implement Smart Rotation

Non inviare mai più di 5-10 richieste da un singolo IP a Amazon. Il gateway di ProxyHat ruota automaticamente gli IP per richiesta di default, ma è necessario implementare anche i controlli a livello di applicazione.

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. Randomize Request Patterns

Ogni aspetto del modello di richiesta dovrebbe includere casualità per evitare il rilevamento statistico.

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. Abbina Geo-Locazione a Marketplace

Accedere a amazon.com da un IP tedesco o amazon.de da un IP giapponese è un forte segnale di attività automatizzata. Abbina sempre la posizione del proxy al mercato di destinazione.

MercatoPaese del proxyConfigurazione ProxyHat
Amazon.comStati UnitiUSERNAME-country-US
amazon.co.ukRegno UnitoUSERNAME-country-GB
Amazon.deGermaniaUSERNAME-country-DE
amazon.co.jpGiapponeUSERNAME-country-JP
amazon.frFranciaUSERNAME-country-FR
Amazon.inIndiaUSERNAME-country-IN

Check Elenco completo di ProxyHat per tutti i paesi sostenuti.

5. sessioni di maniglia correttamente

Amazon traccia le sessioni tramite i cookie. Accettare e restituire i cookie rende le tue richieste più simili a un vero browser. Per la navigazione impaginata (risultati di ricerca, recensioni), utilizzare sessioni appiccicose per mantenere lo stesso vaso IP e cookie.

# 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. Controlla il tuo tasso di successo

Traccia il tasso HTTP 200, tasso CAPTCHA e blocca la velocità in tempo reale. Impostare le soglie per regolare automaticamente il raschietto quando il rilevamento aumenta.

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

Recupero Dopo un Ban

Se un IP viene vietato, ecco come recuperare:

  1. Stop immediatamente: Non continuare a inviare richieste da IP vietati o IP vicini.
  2. Interruttore IPs: Utilizzare una nuova serie di IP residenziali da una diversa gamma. La grande piscina di ProxyHat garantisce sempre la disponibilità di IP puliti.
  3. Regolare il vostro approccio: Rivedere i modelli di richiesta, ritardi e intestazioni prima di riprendere.
  4. Inizia lentamente: Quando si riprende, iniziare con un basso tasso di richiesta e aumentare gradualmente.
  5. Aspetta. Amazon bans tipicamente scadono entro 24-48 ore per blocchi morbidi e fino a 7 giorni per blocchi duri su IP specifici.

Node.js Ban Prevention

Ecco un'implementazione equivalente Node.js utilizzando SDK del nodo di ProxyHat.

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));
}

Prevenzione Checklist

Utilizzare questa lista di controllo prima di eseguire qualsiasi raschietto Amazon:

  • Utilizzo di proxy residenziali (non datacenter)
  • Proxy geolocalizzazione match target marketplace
  • Le stringhe User-Agent sono correnti e ruotate
  • Tutte le intestazioni standard del browser sono incluse
  • Richiesta di ritardi sono randomizzati (2-7 secondi minimo)
  • Gli URL sono smorzati, non elaborati in modo sequenziale
  • La gestione dei cookie è abilitata
  • Il rilevamento CAPTCHA e il backup automatico sono in posizione
  • Il monitoraggio dei tassi di successo è attivo
  • La frequenza è limitata (a partire da 5-10 richieste parallele)

Asporto chiave

  • Il rilevamento di Amazon è multi-strato: richiedere impronte digitali, modelli comportamentali e la reputazione IP tutto importa.
  • I proxy residenziali non sono negoziabili — gli IP del datacenter affrontano un controllo immediato accresciuto.
  • Abbina geolocalizzazione proxy al mercato Amazon di destinazione.
  • Randomize tutto: ritardi, Utente-Aggenti, ordine di richiesta e modelli di sessione.
  • Trattare CAPTCHAs come avvisi anticipati e regolare immediatamente.
  • Monitorare i tassi di successo e regolare automaticamente quando il rilevamento aumenta.

Per una configurazione completa di raschiamento Amazon, leggi il nostro Guida di raschiamento dati prodotti Amazon ed esplorare il pieno e-commerce scraping strategia. Inizia con I proxy residenziali di ProxyHat per un accesso affidabile Amazon.

Pronto per iniziare?

Accedi a oltre 50M di IP residenziali in oltre 148 paesi con filtraggio AI.

Vedi i prezziProxy residenziali
← Torna al Blog