Asporto chiave
- E-commerce raschiamento poteri prezzi competitivi, ricerca di mercato e l'intelligenza di prodotto — ma le principali piattaforme utilizzano sistemi anti-bot aggressivi che bloccano raschianti non protetti in pochi minuti.
- I proxy residenziali sono il tipo di proxy più efficace per la raschiatura di e-commerce perché utilizzano IP ISP reali che le piattaforme non possono distinguere da acquirenti autentici.
- piattaforme diverse richiedono diverse strategie: Amazon ha bisogno di alta rotazione con geo-targeting, Shopify negozi sono più leggeri ma numerosi, e Walmart combina endpoint API con pagine rese.
- I proxy geo-targeted sono essenziali per il monitoraggio dei prezzi in tutte le regioni, poiché le piattaforme di e-commerce servono prezzi diversi, disponibilità dei prodotti e promozioni basate sulla posizione dei visitatori.
- Una pipeline di raschiamento e-commerce di qualità di produzione combina i proxy residenziali rotanti, la logica di riprovazione intelligente, l'estrazione di dati strutturata e l'elaborazione in batch programma per monitorare milioni di elenchi di prodotti in modo affidabile.
Perché E-Commerce Data Scraping Matters
E-commerce genera intelligenza competitiva più attiva di qualsiasi altra fonte di dati sul web. I prezzi del prodotto cambiano orariamente. I nuovi venditori entrano ogni giorno nei mercati. Le promozioni appaiono e scompaiono entro ore. Per qualsiasi azienda che vende prodotti online — o compete con quelli che fanno — proxies per la raschiatura dell'ecommerce sono la base di una strategia basata sui dati.
Ecco cosa consente di raschiare l'e-commerce:
- Intelligenza dei prezzi dinamica: Monitora i prezzi dei concorrenti in tempo reale e regola la tua strategia di prezzi per massimizzare i margini rimanendo competitivi.
- Monitoraggio catalogo prodotti: Traccia nuovi lancio di prodotti, livelli di stock, descrizioni dei prodotti e modifiche delle caratteristiche nei negozi concorrenti.
- Ricerca di mercato: Analizzare le categorie di prodotti, le classifiche dei bestseller, il sentimento della recensione del cliente e le tendenze del mercato prima di entrare in nuovi segmenti.
- Conformità MAP: I marchi possono monitorare le violazioni dei prezzi pubblicità minima in tutta la loro rete di rivenditori e rivenditori.
- Generazione di piombo: Estrarre le informazioni del venditore, le directory del marchio e i dati di contatto di affari da elenchi di mercato.
La sfida è che le piattaforme di e-commerce sono tra i siti più fortemente protetti su Internet. Amazon, Walmart, Target, eBay e grandi negozi Shopify tutti distribuiscono sofisticati sistemi anti-bot progettati per bloccare la raccolta di dati automatizzata. Senza l'infrastruttura proxy giusta, i raschiatori falliranno prima di raccogliere un singolo punto di dati.
Sfide dei Siti E-Commerce Scraping
Le piattaforme di e-commerce investono milioni nella tecnologia anti-bot. Capire queste difese è essenziale prima di costruire qualsiasi rottame.
Sistemi Anti-Bot avanzati
Le principali piattaforme di e-commerce dispiegano il rilevamento bot di livello enterprise. Amazon utilizza un sistema proprietario che combina il punteggio della reputazione IP, l'impronta digitale TLS, l'analisi comportamentale del browser e la classificazione dell'apprendimento automatico. Walmart integra PerimeterX (ora HUMAN Security), che analizza i movimenti del mouse, i modelli di scorrimento e gli ambienti di esecuzione JavaScript. Shopify negozi sempre più utilizzare Cloudflare Bot Management, che mantiene un database globale di informazioni sulle minacce di IP noti.
Contenuto dinamico e rendering JavaScript
I moderni siti di e-commerce caricano dati, prezzi e recensioni dinamicamente tramite JavaScript. Una semplice richiesta HTTP che non esegue JavaScript restituirà una shell vuota — nessun prezzo, nessun dettaglio del prodotto, nessuna recensione. Ciò significa un efficace e-commerce di raschiatura spesso richiede browser senza testa come Puppeteer o Playwright, che aumenta il consumo di risorse e rende la gestione proxy più complessa.
Geo-Specific Prezzi e contenuti
Le piattaforme di e-commerce servono contenuti diversi in base alla posizione dei visitatori. Amazon.com mostra prezzi diversi, opzioni di spedizione e anche la disponibilità del prodotto a seconda che si tratti di navigare da New York, Londra, o Tokyo. Un sistema di monitoraggio dei prezzi che non tiene conto della geo-targeting produrrà dati inesatti e fuorvianti. Hai bisogno di proxy nelle regioni specifiche in cui si desidera monitorare i prezzi.
Limitazioni e gestione delle sessioni
I siti di e-commerce applicano limiti di tasso rigorosi. Amazon tipicamente consente 10-15 richieste al minuto da un singolo IP prima di attivare CAPTCHA o blocchi. Walmart è ancora più rigido con IP nuovi o non attendibili. Questi limiti significano che il monitoraggio di un catalogo di 100.000 prodotti richiede migliaia di indirizzi IP che ruotano in coordinamento, non una manciata di proxy statici.
Cambiamenti strutturali e test A/B
I siti di e-commerce modificano costantemente la loro struttura HTML attraverso test e riprogetti A/B. Il selettore CSS che estrae un prezzo oggi non può restituire nulla domani. I sistemi di raschiatura robusti devono includere il monitoraggio, la convalida e l'analisi adattativa per gestire questi cambiamenti senza intervento umano.
Perché i proxy sono essenziali per lo Scraping E-Commerce
Senza i proxy, qualsiasi progetto di raschiatura e-commerce a scala significativa è impossibile. Ecco perché:
- La rotazione IP impedisce il blocco: La distribuzione di richieste su migliaia di IP garantisce che nessun singolo indirizzo superi i limiti di velocità o inneschi i modelli di rilevamento del bot.
- Gli IP residenziali passano i controlli di reputazione: I sistemi anti-bot mantengono database di intervalli IP datacenter. Processi residenziali utilizzare gli IP assegnati da ISP reali a famiglie reali, rendendoli indistinguibili da acquirenti autentici.
- Il geo-targeting consente i prezzi regionali: Processi in specifici paesi e città vedere esattamente cosa vedono i consumatori locali — compresi i prezzi localizzati, la valuta, le promozioni e la disponibilità di prodotti.
- Persistenza di sessione quando necessario: Alcune attività di raschiamento (aggiunta articoli al carrello, navigazione della paginazione, controllo dei flussi di checkout) richiedono il mantenimento dello stesso IP attraverso più richieste. Le sessioni di proxy appiccicose rendono questo possibile.
- Scalabilità: Una rete proxy con milioni di IP consente di scalare dal monitoraggio di 1.000 prodotti a 1.000.000 prodotti senza modifiche architettoniche.
I migliori tipi di proxy per Scraping E-Commerce
Non tutti i tipi di proxy eseguono ugualmente attraverso piattaforme di e-commerce. La vostra scelta dipende dal sito di destinazione, demolire il volume e il budget. Per un'immersione più profonda in tipi di proxy, vedere il nostro residenziale vs datacenter vs guida di confronto mobile.
| Piattaforma | Residenziale | Datacenter | Mobile | Consigliato |
|---|---|---|---|---|
| Amazon | Grande successo (95%+) | Basso (blocco pesante) | Molto alto (98%+) | Residenziale |
| Walmart | Grande successo (93%+) | Molto basso (bloccato) | Molto alto (97%+) | Residenziale |
| Shopify negozi | Molto alto (97%+) | Moderato (60-80%) | Molto alto (99%+) | Miscela Residenziale / Datacenter |
| eBay | Alto (94%+) | Low-moderate (40-60%) | Molto alto (97%+) | Residenziale |
| Obiettivo | Alto (92%+) | Molto basso (bloccato) | Alto (96%+) | Residenziale |
| Migliore acquisto | Alto (91%+) | Basso (20-40%) | Alto (95%+) | Residenziale |
| Etsy | Molto alto (96%+) | Moderato (50-70%) | Molto alto (98%+) | Residenziale |
Bottom line: I proxy residenziali sono la scelta predefinita per la demolizione e-commerce. I proxy Datacenter funzionano solo in modo affidabile contro i negozi Shopify più piccoli senza una protezione bot avanzata. I proxy mobili forniscono i più alti tassi di successo, ma ad un costo maggiore della larghezza di banda — li riservano per obiettivi di alto valore con le difese anti-bot più forti.
Piattaforme principali: strategie proxy
Amazon
Amazon è il sito di e-commerce più raschiato e, di conseguenza, il più difeso. Il loro sistema anti-bot analizza la reputazione IP, i modelli di richiesta, le impronte TLS e i segnali comportamentali contemporaneamente.
Strategia proxy per Amazon:
- Utilizzare i proxy residenziali rotanti — nuovo IP per richiesta per pagine di prodotto, risultati di ricerca e pagine di revisione.
- Attiva geo-targeting per abbinare il dominio Amazon (US IPs for amazon.com, DE IPs for amazon.de, JP IPs for amazon.co.jp).
- Limitare la convalutazione a 5-10 richieste parallele per geo-regione per evitare di attivare il rilevamento a livello di cluster.
- Aggiungi 2-5 secondi ritardi randomizzati tra le richieste della stessa sessione.
- Ruota stringhe User-Agent da una piscina di 20+ versioni del browser recenti.
Negozi
Acquisti poteri oltre 4 milioni di negozi online. Mentre i singoli negozi variano nella protezione del bot, le protezioni a livello di piattaforma di Shopify includono il limite di velocità e l'integrazione di Cloudflare.
Strategia proxy per Shopify:
- Molti negozi Shopify espongono un
/products.jsonendpoint che restituisce i dati dei prodotti strutturati senza rendering — prova questo primo. - Per i negozi senza il punto finale JSON, sono sufficienti i prossi residenziali rotanti con rotazione moderata (nuovi IP ogni 3-5 richieste).
- Il limite di velocità di Shopify è tipicamente di 2 richieste/secondo per IP, rispetto a questo per mantenere l'accesso.
- Quando si raschiano migliaia di negozi Shopify, i proxy datacenter possono lavorare per negozi non protetti, risparmiando i costi della larghezza di banda. Ripiegare in residenziale per i negozi di quel blocco.
Walmart
Walmart utilizza HUMAN Security (ex PerimeterX), una delle piattaforme di rilevamento bot più sofisticate disponibili. Le semplici richieste HTTP con IP datacenter sono bloccate immediatamente.
Strategia proxy per Walmart:
- I proxy residenziali sono obbligatori — gli IP del datacenter hanno tassi di successo quasi zero.
- Utilizzare un browser senza testa (Puppeteer/Playwright) dal momento che Walmart si basa pesantemente sulla verifica della sfida JavaScript.
- Implementare sessioni appiccicose (5-10 minuti di durata) durante la navigazione di elenchi di prodotti multi-pagina o paginazione di ricerca.
- endpoint API di Walmart (
walmart.com/api/percorsi) a volte hanno una protezione più leggera rispetto alle pagine rese — sperimentare con entrambi.
Guida all'attuazione: Python
Ecco una configurazione di raschiamento e-commerce pronta alla produzione utilizzando Python con ProxyHat Python SDK. Per una guida fondamentale per l'utilizzo proxy in Python, vedere Utilizzo di Proxies in Python.
Graffio di base del prodotto con proxy rotanti
import requests
from bs4 import BeautifulSoup
import random
import time
# ProxyHat proxy configuration
PROXY_USER = "USERNAME"
PROXY_PASS = "PASSWORD"
PROXY_HOST = "gate.proxyhat.com"
PROXY_PORT = 8080
USER_AGENTS = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/131.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/131.0.0.0 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0",
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 Chrome/131.0.0.0 Safari/537.36",
]
def get_proxy(country="US"):
"""Build ProxyHat proxy URL with geo-targeting."""
proxy_url = f"http://{PROXY_USER}-country-{country}:{PROXY_PASS}@{PROXY_HOST}:{PROXY_PORT}"
return {"http": proxy_url, "https": proxy_url}
def scrape_product(url, country="US", retries=3):
"""Scrape a product page with automatic retry and IP rotation."""
for attempt in range(retries):
try:
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",
}
response = requests.get(
url,
proxies=get_proxy(country),
headers=headers,
timeout=30,
)
if response.status_code == 200:
return parse_product(response.text)
elif response.status_code == 503:
print(f"Blocked on attempt {attempt + 1}, rotating IP...")
time.sleep(random.uniform(2, 5))
except requests.exceptions.RequestException as e:
print(f"Request error: {e}")
time.sleep(random.uniform(1, 3))
return None
def parse_product(html):
"""Extract product data from HTML."""
soup = BeautifulSoup(html, "html.parser")
return {
"title": soup.select_one("h1#productTitle, h1[data-automation-id='productTitle']"),
"price": soup.select_one(".a-price .a-offscreen, [data-testid='price']"),
"rating": soup.select_one(".a-icon-star-small .a-icon-alt, .rating-number"),
"availability": soup.select_one("#availability span, .prod-fulfillment-messaging"),
}
# Scrape products from multiple regions
products_to_monitor = [
"https://www.amazon.com/dp/B0EXAMPLE1",
"https://www.amazon.com/dp/B0EXAMPLE2",
]
for url in products_to_monitor:
for country in ["US", "GB", "DE"]:
result = scrape_product(url, country=country)
if result:
print(f"[{country}] {result}")
time.sleep(random.uniform(2, 5))
Shopify Store Scraper Utilizzando l'API JSON
import requests
import json
PROXY_URL = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
PROXIES = {"http": PROXY_URL, "https": PROXY_URL}
def scrape_shopify_store(store_url):
"""Scrape all products from a Shopify store via JSON API."""
products = []
page = 1
while True:
url = f"{store_url}/products.json?page={page}&limit=250"
response = requests.get(url, proxies=PROXIES, timeout=20)
if response.status_code != 200:
break
data = response.json()
batch = data.get("products", [])
if not batch:
break
for product in batch:
products.append({
"title": product["title"],
"handle": product["handle"],
"vendor": product["vendor"],
"product_type": product["product_type"],
"variants": [
{
"sku": v.get("sku"),
"price": v["price"],
"compare_at_price": v.get("compare_at_price"),
"available": v["available"],
}
for v in product["variants"]
],
})
page += 1
return products
# Usage
store_data = scrape_shopify_store("https://example-store.myshopify.com")
print(f"Found {len(store_data)} products")
Guida all'attuazione: Node.js
Per la raschiatura basata su JavaScript con browser senza testa — essenziale per Walmart e altri siti fortemente protetti — vedere il nostro Guida proxy Node.js per la configurazione di base. Qui di seguito è un'implementazione specifica dell'e-commerce utilizzando SDK del nodo di ProxyHat.
Browser senza testa Scraping con Puppeteer
const puppeteer = require("puppeteer");
const PROXY_HOST = "gate.proxyhat.com";
const PROXY_PORT = 8080;
const PROXY_USER = "USERNAME";
const PROXY_PASS = "PASSWORD";
async function scrapeProductPage(url, country = "US") {
const proxyUser = `${PROXY_USER}-country-${country}`;
const browser = await puppeteer.launch({
headless: "new",
args: [`--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}`],
});
const page = await browser.newPage();
await page.authenticate({ username: proxyUser, password: PROXY_PASS });
// Set realistic viewport and user agent
await page.setViewport({ width: 1920, height: 1080 });
await page.setUserAgent(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/131.0.0.0 Safari/537.36"
);
try {
await page.goto(url, { waitUntil: "networkidle2", timeout: 45000 });
// Wait for price element to load
await page.waitForSelector('[data-testid="price"], .a-price', {
timeout: 10000,
});
const product = await page.evaluate(() => {
const getText = (selector) =>
document.querySelector(selector)?.textContent?.trim() || null;
return {
title: getText("h1"),
price: getText('[data-testid="price"], .a-price .a-offscreen'),
rating: getText(".rating-number, .a-icon-star-small .a-icon-alt"),
reviewCount: getText("#acrCustomerReviewCount, .rating-count"),
availability: getText("#availability span, .prod-fulfillment-messaging"),
seller: getText("#sellerProfileTriggerId, .seller-name"),
};
});
return product;
} catch (error) {
console.error(`Scraping failed for ${url}:`, error.message);
return null;
} finally {
await browser.close();
}
}
// Monitor prices across regions
async function monitorPrices(asinList, countries) {
const results = [];
for (const asin of asinList) {
for (const country of countries) {
const domain = { US: "amazon.com", GB: "amazon.co.uk", DE: "amazon.de" }[country];
const url = `https://www.${domain}/dp/${asin}`;
const data = await scrapeProductPage(url, country);
if (data) {
results.push({ asin, country, ...data, scrapedAt: new Date().toISOString() });
}
// Random delay between requests
await new Promise((r) => setTimeout(r, 2000 + Math.random() * 3000));
}
}
return results;
}
// Usage
monitorPrices(["B0EXAMPLE1", "B0EXAMPLE2"], ["US", "GB", "DE"]).then((data) =>
console.log(JSON.stringify(data, null, 2))
);
Monitoraggio dei prezzi georget
La variazione dei prezzi in tutte le regioni è uno dei più preziosi dataset nell'intelligenza dell'e-commerce. Lo stesso prodotto può avere una differenza di prezzo del 20-40% tra i paesi — e anche tra le città all'interno dello stesso paese. Il geo-targeting di ProxyHat supporta il routing di livello nazionale e urbano, che è fondamentale per un accurato monitoraggio dei prezzi regionali.
Come funziona Geo-Targeting per il monitoraggio dei prezzi
Quando si inoltra una richiesta attraverso un proxy in una posizione specifica, la piattaforma di e-commerce rileva la posizione del visitatore attraverso l'indirizzo IP. Questo innesca il comportamento specifico della posizione:
- Valuta e prezzi: La piattaforma visualizza i prezzi in valuta locale con livelli di prezzi specifici per regione.
- Disponibilità del prodotto: Le opzioni di inventario e spedizione differiscono per regione. Alcuni prodotti sono disponibili solo in alcuni mercati.
- Promozioni: Eventi di vendita regionale, sconti per le vacanze e programmi di fidelizzazione variano per paese.
- Visualizzazione fiscale: Alcune regioni mostrano prezzi preimpostati, altre mostrano prezzi inclusi fiscali.
# Monitor the same product across 5 markets
import requests
PROXY_BASE = "USERNAME-country-{country}:PASSWORD@gate.proxyhat.com:8080"
markets = {
"US": {"domain": "amazon.com", "currency": "USD"},
"GB": {"domain": "amazon.co.uk", "currency": "GBP"},
"DE": {"domain": "amazon.de", "currency": "EUR"},
"JP": {"domain": "amazon.co.jp", "currency": "JPY"},
"CA": {"domain": "amazon.ca", "currency": "CAD"},
}
def monitor_price(asin, country, market_info):
proxy = f"http://{PROXY_BASE.format(country=country)}"
url = f"https://www.{market_info['domain']}/dp/{asin}"
response = requests.get(
url,
proxies={"http": proxy, "https": proxy},
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/131.0.0.0"},
timeout=30,
)
# Parse price from response...
return {"country": country, "currency": market_info["currency"], "url": url}
Monitoraggio dei prezzi in tempo reale e batch
Il monitoraggio dei prezzi e-commerce cade in due modelli architettonici, ciascuno con diversi requisiti proxy.
| Aspetti | Monitoraggio in tempo reale | Monitoraggio di Batch |
|---|---|---|
| Aggiorna la frequenza | Ogni 5-15 minuti | 1-4 volte al giorno |
| Caso di utilizzo | Riscrittura dinamica, tracciamento di vendita flash | Analisi storica, relazioni di tendenza |
| Larghezza di banda proxy | Elevato (richiesta continua) | Moderato (esplosione concentrata) |
| Le esigenze di concorrenza | 50-200 richieste parallele | 10-50 richieste parallele |
| Miglior tipo di proxy | Rotante residenziale | Rotante residenziale |
| Dimensione della piscina IP necessaria | Grande (10.000 + IP) | Moderato (1.000 + IP) |
| Costo stimato (10K prodotti) | $200-500 al mese | $50-150/mese |
Monitoraggio in tempo reale è necessario quando si esegue un motore di ripetizione che deve rispondere alle variazioni di prezzo del concorrente in pochi minuti. Questa architettura richiede lavoratori raschianti persistenti che ciclono continuamente attraverso la vostra lista di prodotti, utilizzando i proxy residenziali rotanti per mantenere alti tassi di successo sotto carico sostenuto.
Monitoraggio batch si adattano alla maggior parte dei casi di utilizzo: rapporti di prezzo giornalieri, analisi concorrenziali settimanali e monitoraggio della tendenza. Un lavoro programmato corre 2-4 volte al giorno, raschia il catalogo completo del prodotto utilizzando una serie di richieste contemporaneamente, memorizza i risultati in un database, e si spegne fino alla prossima corsa. Questo approccio utilizza significativamente meno larghezza di banda proxy.
Raccomandazione: Inizia con il monitoraggio batch. La maggior parte delle decisioni di prezzi non richiedono granularità di livello minuto. Eseguire i primi lavori di raschiamento 2-3 volte al giorno. Spostare il monitoraggio in tempo reale solo per le categorie di prodotti in cui i concorrenti cambiano frequentemente i prezzi (elettronica, voli, prodotti di tendenza).
Gestione delle misure comuni di e-commerce
Anche con i proxy residenziali, i sistemi anti-bot di e-commerce possono rilevare modelli automatizzati. Qui ci sono tecniche provate per massimizzare i tassi di successo, costruendo sulle strategie dai nostri guida per raschiare senza bloccarsi.
CAPTCHA Handling
Amazon e Walmart presentano CAPTCHA quando sospettano attività automatizzata. Il miglior approccio è la prevenzione:
- Ruotare gli IP in modo aggressivo — un nuovo IP per ogni richiesta riduce la possibilità di accumulare segnali sufficienti su qualsiasi singolo IP per attivare un CAPTCHA.
- Utilizzare intestazioni di richiesta realistiche che corrispondono esattamente all'ordine e ai valori dell'intestazione di un browser reale.
- Mantenere le impronte TLS coerenti utilizzando la stessa versione del browser durante una sessione.
- Se i CAPTCHA appaiono ancora, implementare il backoff esponenziale: mettere in pausa l'IP per 5 minuti, quindi 15 minuti, quindi 1 ora.
Richiesta di impronte digitali Randomizzazione
import random
def generate_headers():
"""Generate realistic, randomized request headers."""
chrome_versions = ["130.0.0.0", "131.0.0.0", "132.0.0.0"]
platforms = [
("Windows NT 10.0; Win64; x64", "Windows"),
("Macintosh; Intel Mac OS X 10_15_7", "macOS"),
("X11; Linux x86_64", "Linux"),
]
platform, platform_name = random.choice(platforms)
chrome_ver = random.choice(chrome_versions)
return {
"User-Agent": f"Mozilla/5.0 ({platform}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{chrome_ver} Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": random.choice([
"en-US,en;q=0.9",
"en-US,en;q=0.9,es;q=0.8",
"en-GB,en;q=0.9",
]),
"Accept-Encoding": "gzip, deflate, br",
"Cache-Control": random.choice(["no-cache", "max-age=0"]),
"Sec-Ch-Ua-Platform": f'"{platform_name}"',
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
}
Smart Retry con Rotazione IP
import time
import random
def scrape_with_smart_retry(url, max_retries=5, country="US"):
"""Scrape with exponential backoff and automatic IP rotation."""
base_delay = 2
for attempt in range(max_retries):
proxy = get_proxy(country) # New IP each attempt
headers = generate_headers()
try:
response = requests.get(url, proxies=proxy, headers=headers, timeout=30)
if response.status_code == 200:
return response.text
elif response.status_code == 403:
print(f"Attempt {attempt + 1}: Forbidden (IP likely flagged)")
elif response.status_code == 429:
print(f"Attempt {attempt + 1}: Rate limited")
elif response.status_code == 503:
print(f"Attempt {attempt + 1}: Service unavailable (CAPTCHA)")
except requests.exceptions.Timeout:
print(f"Attempt {attempt + 1}: Timeout")
except requests.exceptions.ConnectionError:
print(f"Attempt {attempt + 1}: Connection error")
# Exponential backoff with jitter
delay = base_delay * (2 ** attempt) + random.uniform(0, 1)
print(f"Waiting {delay:.1f}s before retry...")
time.sleep(delay)
return None
Infrastrutture per Scraping E-Commerce
Trasferirsi dalla demolizione di poche centinaia di prodotti al monitoraggio di milioni di elenchi richiede decisioni architettoniche che colpiscono i costi, l'affidabilità e la freschezza dei dati.
Architettura per Scala
| Scala | Prodotti | Architettura | Larghezza di banda del proxy |
|---|---|---|---|
| Piccolo | 1-10K | Singola sceneggiatura, cron programmato | 5-20 GB/mese |
| Media | 10K-100K | Lavoratori di queue (Redis/RabbitMQ) | 50-200 GB/mese |
| Grande | 100K-1M+ | Lavoratori distribuiti, Kubernetes | 500 GB-5 TB/mese |
Pipeline di scorrimento a base di coda
Per operazioni su larga scala, un'architettura basata sulla coda fornisce affidabilità e scalabilità:
# Producer: enqueue scraping jobs
import redis
import json
r = redis.Redis()
def enqueue_products(product_urls, priority="normal"):
queue_name = f"scrape:{priority}"
for url in product_urls:
job = json.dumps({"url": url, "retries": 0, "created_at": time.time()})
r.lpush(queue_name, job)
# Consumer: process scraping jobs
def worker(country="US"):
while True:
# Priority queue: check high-priority first
job_data = r.rpop("scrape:high") or r.rpop("scrape:normal")
if not job_data:
time.sleep(1)
continue
job = json.loads(job_data)
result = scrape_with_smart_retry(job["url"], country=country)
if result:
# Store result in database
r.lpush("results:pending", json.dumps({
"url": job["url"],
"data": result,
"scraped_at": time.time(),
}))
elif job["retries"] < 3:
# Re-queue failed jobs
job["retries"] += 1
r.lpush("scrape:normal", json.dumps(job))
Ottimizzazione della larghezza di banda
Le pagine di e-commerce sono pesanti — 500 KB a 2 MB ciascuno con immagini e script. In scala, i costi della larghezza di banda dominano. Ottimizzare da:
- Bloccare risorse inutili: Nei browser senza testa, bloccare immagini, font, CSS e script di tracciamento. I dati del prodotto sono nelle chiamate HTML e API.
- Utilizzando gli endpoint API quando disponibili: Shopify
/products.json, Amazon's Product Advertising API per venditori autorizzati, e l'API di affiliazione di Walmart tutti restituiscono i dati strutturati ad una frazione della larghezza di banda. - Caching prodotti invariati: Solo i prodotti ri-scrape i cui prezzi sono probabilmente cambiati. Utilizzare modelli storici per priorizzare gli elenchi frequentemente aggiornati.
- Compressione dei dati memorizzati: Conservare l'HTML crudo solo quando necessario per il debugging. Estrarre e memorizzare i dati strutturati immediatamente.
Considerazioni giuridiche ed etiche
Il raschiamento dei dati e-commerce opera in un quadro giuridico che continua ad evolversi. La comprensione dei confini è essenziale per la costruzione di un'operazione di raschiamento sostenibile.
Ciò che è generalmente accettato
- Raccolta di dati pubblici: Le informazioni sul prodotto pubblicamente visibili (prezzi, titoli, disponibilità) sono ampiamente accettate, sostenute da sentenze come hiQ Labs v. LinkedIn negli Stati Uniti.
- Intelligenza competitiva: Utilizzando i dati raschiati per la strategia dei prezzi, l'analisi del mercato e l'intelligenza aziendale è la pratica standard in tutte le industrie.
- Monitoraggio MAP: I marchi che controllano i prezzi pubblici dei propri prodotti attraverso rivenditori autorizzati e non autorizzati sono un caso di uso legittimo consolidato.
Migliori Pratiche
- Rispetta i segnali robot.txt: Pur non essendo giuridicamente vincolante, il rispetto delle direttive a innesto dimostra buona fede.
- Evitare di cancellare i dati personali: Non raccogliere nomi dei recensori, e-mail o altre informazioni personali senza una base legale secondo le normative applicabili sulla protezione dei dati.
- Tasso limite responsabilmente: Evitare di inviare richieste ad un tasso che potrebbe influenzare le prestazioni del sito. La rotazione del proxy dovrebbe distribuire il carico, non moltiplicarlo.
- Non aggirare i controlli di accesso: Scraping pagine di prodotti pubblici è diverso da bypassare le pareti di login o accedere a dashboard di venditore ristretti.
- Conservare solo ciò di cui hai bisogno: Raccogliere i punti dati specifici richiesti per il vostro caso di utilizzo. Evitare di scaricare in massa interi archivi del sito.
Iniziare con ProxyHat per E-Commerce Scraping
ProxyHat fornisce l'infrastruttura proxy necessaria per la raccolta di dati e-commerce affidabile su qualsiasi scala. Ecco come iniziare:
- Scegli il tuo piano: Recensione Prezzo di ProxyHat e selezionare una allocazione del traffico che corrisponde al volume di monitoraggio del prodotto. Per riferimento, il monitoraggio di 10.000 prodotti ogni giorno in 3 regioni utilizza circa 10-30 GB al mese.
- Configurare geo-targeting: Usa il targeting di paese o di livello città nel tuo nome utente proxy per indirizzare le richieste tramite IP nei tuoi mercati target.
- Integrare con il tuo stack: Utilizzare Python SDK♪ Node.js SDKo Vai SDK per un'integrazione semplificata. Guarda la nostra documentazione per la configurazione avanzata.
- Iniziare con il monitoraggio batch: Costruire un lavoro di raschiamento giornaliero per la vostra lista di prodotti core, convalidare la qualità dei dati, quindi espandere la copertura e la frequenza.
- Scala come necessario: Le scale di proxy residenziali di ProxyHat con le vostre esigenze — da 1.000 a 1,000,000+ prodotti senza cambiare la configurazione del proxy.
Per ulteriori tecniche di raschiamento e strategie proxy, esplorare il nostro web scraping uso caso guida e migliori proxy per la raschiatura web confronto.
Domande frequenti
Quali sono i migliori proxy per raschiare Amazon?
I proxy residenziali rotanti sono la scelta migliore per la raschiatura Amazon. Il sistema anti-bot di Amazon mantiene vasti database di intervalli IP datacenter e li blocca in modo aggressivo. I proxy residenziali utilizzano IP reali assegnati a ISP che superano i controlli di reputazione di Amazon. Per ottenere i migliori risultati, utilizzare i proxy residenziali geo-targeted corrispondenti al dominio Amazon che si sta raschiando (US IPs for amazon.com, IP tedeschi per amazon.de) e ruotare gli IP su ogni richiesta.
Quanto banda di proxy ho bisogno per il monitoraggio dei prezzi e-commerce?
La larghezza di banda dipende dal numero di prodotti, dalla frequenza di raschiamento, e se si utilizzano richieste HTTP o browser senza testa. Una pagina di prodotto tipica è 100-500 KB tramite HTTP o 1-2 MB tramite browser senza testa. Il monitoraggio di 10.000 prodotti una volta al giorno tramite HTTP richiede circa 2-5 GB al mese. Lo stesso catalogo raschiato con browser senza testa ha bisogno di 10-20 GB. Moltiplicato dal numero di corse giornaliere di raschiamento e variazioni regionali si traccia.
Posso raschiare i siti di e-commerce senza proxy?
Non a nessuna scala significativa. Senza proxy, il tuo unico indirizzo IP sarà limitato al tasso o bloccato in pochi minuti sulle principali piattaforme. Amazon tipicamente blocca un singolo IP dopo 50-100 richieste. Anche piccole attività di monitoraggio che coprono poche centinaia di prodotti richiedono la rotazione IP per evitare interruzioni. I proxy non sono facoltativi per la raschiatura dell'e-commerce — sono un requisito fondamentale dell'infrastruttura.
È legale raschiare i prezzi dei prodotti da siti concorrenti?
Le informazioni sul prodotto pubblicamente disponibili — i prezzi, i titoli, le descrizioni, la disponibilità — sono generalmente considerati legali per scopi di intelligenza competitiva. I tribunali degli Stati Uniti hanno sostenuto il diritto di raschiare i dati pubblici in casi come hiQ Labs v. LinkedIn. Tuttavia, si dovrebbe evitare di raschiare i dati personali, rispettare i limiti di tasso, e astenersi dal bypassare i controlli di accesso tecnico come muri di login. Consultare sempre il consulente legale per la vostra giurisdizione specifica e il caso di utilizzo.
Come posso gestire CAPTCHAs quando raschio siti di e-commerce?
La migliore strategia CAPTCHA è la prevenzione. Utilizzare i proxy residenziali rotanti per evitare di accumulare abbastanza segnali su qualsiasi singolo IP per attivare il rilevamento. Invia intestazioni realistiche del browser con un corretto ordine dell'intestazione. Aggiungi ritardi randomizzati tra richieste (2-5 secondi). Se i CAPTCHA appaiono ancora, implementano il backoff esponenziale — interrompono l'IP flagged per intervalli crescenti. Con la grande piscina IP residenziale di ProxyHat e la rotazione per-richiesta, la maggior parte dei raschiatori possono raggiungere i tassi di successo senza CAPTCHA 90-95% sulle principali piattaforme di e-commerce.






