Torna al blog

Proxy per il parsing delle caratteristiche dei prodotti: come raccogliere dati dai marketplace senza blocchi

Guida dettagliata alla scelta e configurazione di proxy per il parsing delle caratteristiche dei prodotti dai marketplace: tipi di proxy, rotazione IP, bypass dei sistemi anti-bot di Wildberries e Ozon.

📅26 gennaio 2026
```html

Il parsing delle caratteristiche dei prodotti dai marketplace è un compito critico per venditori, analisti e aggregatori di prezzi. Wildberries, Ozon, Yandex.Market e altre piattaforme bloccano attivamente la raccolta automatica di dati, utilizzando sistemi anti-bot avanzati. Senza proxy configurati correttamente, il tuo parser verrà bloccato già dopo 50-100 richieste. In questo articolo esamineremo quali tipi di proxy sono adatti per il parsing, come configurare la rotazione IP e come bypassare la protezione dei principali marketplace.

Perché i marketplace bloccano il parsing e come funziona

I moderni marketplace perdono milioni di rubli a causa del parsing: i concorrenti copiano le descrizioni dei prodotti, gli aggregatori intercettano il traffico e il carico sui server aumenta. Pertanto, Wildberries, Ozon, Yandex.Market e altre piattaforme hanno implementato una protezione multilivello contro la raccolta automatica di dati.

Come i marketplace identificano il parsing:

  • Frequenza delle richieste da un IP — se da un indirizzo arrivano 100+ richieste al minuto, questo è un chiaro segnale di un bot. Un utente normale visualizza 5-10 schede prodotto in questo tempo.
  • Assenza di JavaScript — i semplici parser su requests o curl non eseguono codice JS che carica prezzi e caratteristiche. Il sito vede che il contenuto viene richiesto senza rendering.
  • User-Agent e intestazioni — le intestazioni predefinite delle librerie (ad esempio, "python-requests/2.28.0") rivelano immediatamente un bot. L'assenza delle intestazioni Accept-Language, Referer è anche sospetta.
  • Fingerprint del browser — i sistemi avanzati (Cloudflare, Kasada, DataDome) analizzano Canvas, WebGL, font, estensioni del browser. I browser headless come Puppeteer sono facilmente identificabili per l'assenza di alcuni parametri.
  • Pattern comportamentali — un bot apre le schede prodotto con intervalli identici (ad esempio, esattamente ogni 2 secondi), non scorre la pagina, non muove il mouse. Questo lo distingue da una persona reale.

Conseguenze del blocco: Ban temporaneo dell'IP da 1 a 24 ore, CAPTCHA per ogni richiesta, blocco completo dell'intervallo IP del data center. Per le aziende, ciò significa fermare la raccolta di dati e perdere il vantaggio competitivo.

Caso reale: Un aggregatore di prezzi ha effettuato parsing di Wildberries con 10 IP di data center, effettuando 500 richieste all'ora da ciascuno. Dopo 3 giorni, l'intero intervallo /24 ha ricevuto un ban permanente — è stato necessario cambiare fornitore di proxy e passare a IP residenziali con rotazione.

Confronto dei tipi di proxy per il parsing dei prodotti

Per il parsing delle caratteristiche dei prodotti vengono utilizzati tre tipi principali di proxy. Ognuno ha i suoi vantaggi e limitazioni a seconda del volume di dati, del budget e dei requisiti di velocità.

Tipo di proxy Velocità Rischio di ban Costo Quando utilizzare
Proxy di data center Alta (50-200 ms) Alta Bassa Parsing di piccoli volumi (fino a 10.000 prodotti/giorno), test del parser
Proxy residenziali Media (200-800 ms) Basso Alta (in base al traffico) Parsing di Wildberries, Ozon con protezione anti-bot, grandi volumi di dati
Proxy mobili Media (300-1000 ms) Molto basso Molto alta Parsing con massima protezione, bypass di blocchi severi, progetti critici

Proxy di data center — sono indirizzi IP di server nei data center (AWS, Hetzner, OVH). Sono veloci ed economici, ma i marketplace li identificano facilmente tramite database ASN. Sono adatti per il parsing di cataloghi piccoli (fino a 10.000 prodotti al giorno) o piattaforme senza protezioni serie. Costo: da 1-3$ per IP al mese.

Proxy residenziali — sono IP di utenti domestici, ottenuti legalmente tramite SDK in applicazioni. I marketplace li percepiscono come normali acquirenti. Ideali per il parsing di Wildberries, Ozon, Yandex.Market in grandi volumi. Costo: da 5-15$ per 1 GB di traffico (circa 10.000-30.000 richieste).

Proxy mobili — IP di operatori mobili (MTS, Beeline, MegaFon). Il tipo più affidabile per bypassare la protezione, ma costoso e lento. Utilizzare solo per compiti critici, dove il blocco è inaccettabile. Costo: da 50-150$ per IP al mese con rotazione.

Proxy residenziali o data center: cosa scegliere per il tuo compito

La scelta del tipo di proxy dipende da tre fattori: volume di parsing, livello di protezione della piattaforma e budget. Esaminiamo scenari specifici di utilizzo.

Quando sono adatti i proxy di data center

Scenario 1: Test del parser
Stai sviluppando un nuovo parser e controlli la logica di estrazione dei dati. Devi parsare 100-500 prodotti per il debug. In questo caso, i proxy residenziali sono una spesa eccessiva. Prendi 5-10 IP di data center e fai 50-100 richieste da ciascuno all'ora. Questo è sufficiente per testare senza blocchi.

Scenario 2: Parsing di piattaforme senza protezione
Piccoli marketplace regionali, bacheche di annunci tipo Avito (in alcune categorie), negozi online su OpenCart spesso non hanno un serio sistema anti-bot. Qui i data center funzionano stabilmente a condizione di un carico moderato (fino a 200 richieste all'ora per IP).

Scenario 3: Budget limitato e piccoli volumi
Se hai bisogno di parsare 5.000-10.000 prodotti al giorno e il budget è limitato, prova i data center con rotazione aggressiva (cambio IP ogni 50-100 richieste). Sì, ci saranno più blocchi, ma con una corretta configurazione della logica di retry (ripetizione della richiesta con un nuovo IP) funziona.

Quando sono necessari i proxy residenziali

Scenario 1: Parsing di Wildberries e Ozon
Queste piattaforme utilizzano Cloudflare, DataDome e i propri sistemi anti-bot. Dai data center riceverai CAPTCHA o ban dopo 20-50 richieste. I proxy residenziali con rotazione ogni 5-10 minuti consentono di parsare centinaia di migliaia di prodotti senza problemi. Un cliente ha parsato l'intero catalogo di Wildberries (20+ milioni di prodotti) in una settimana, utilizzando un pool di 1000 IP residenziali.

Scenario 2: Parsing con autorizzazione
Alcune caratteristiche dei prodotti (prezzi all'ingrosso, giacenze nei magazzini) sono disponibili solo per utenti autorizzati. Se parsate tramite un account, l'uso di data center porterà al blocco dell'account. I proxy residenziali imitano le azioni di un utente reale, riducendo il rischio di ban.

Scenario 3: Geotargeting
I prezzi e la disponibilità dei prodotti su Wildberries, Ozon, Yandex.Market dipendono dalla regione dell'utente. Per raccogliere dati su Mosca, San Pietroburgo, Ekaterinburg contemporaneamente, sono necessari proxy residenziali con selezione della città. I data center non consentono di controllare con precisione la geolocalizzazione.

Formula per la scelta del tipo di proxy:

  • Volume < 10.000 prodotti/giorno + nessuna protezione severa = data center
  • Volume > 10.000 prodotti/giorno + Wildberries/Ozon = residenziali
  • Parsing con autorizzazione + rischio di ban dell'account = residenziali
  • Necessità di geotargeting per città della RF = residenziali
  • Progetto critico + tolleranza zero ai blocchi = mobili

Configurazione della rotazione IP: intervalli e strategie

La rotazione IP è il cambio automatico del server proxy dopo un certo numero di richieste o tempo. Una corretta configurazione della rotazione è la chiave per un parsing stabile senza blocchi.

Tipi di rotazione dei proxy

1. Rotazione basata sul tempo (Time-based rotation)
L'IP cambia dopo un intervallo fisso: 5 minuti, 10 minuti, 30 minuti. Questo è il metodo più semplice, ma non il più efficace. Se fai 200 richieste in 5 minuti e il limite della piattaforma è di 100 richieste per IP, riceverai comunque un ban.

Quando utilizzare: Per proxy residenziali con carico basso (fino a 50 richieste per IP). Ad esempio, il parsing di Wildberries con un intervallo di 3-5 secondi tra le richieste — la rotazione ogni 10 minuti sarà ottimale.

2. Rotazione basata sul numero di richieste (Request-based rotation)
L'IP cambia dopo N richieste: 50, 100, 200. Questo è più preciso rispetto alla rotazione temporale, ma richiede di tenere traccia del contatore delle richieste nel codice del parser.

Quando utilizzare: Per data center e parsing aggressivo. Ad esempio, sai che Ozon blocca dopo 80 richieste per IP — imposta la rotazione ogni 70 richieste con un margine.

3. Rotazione per ogni richiesta (Per-request rotation)
Ogni richiesta passa attraverso un nuovo IP. Massima protezione dai blocchi, ma la strategia più costosa per i proxy residenziali (il consumo di traffico aumenta a causa della creazione di nuove connessioni).

Quando utilizzare: Per bypassare le protezioni più severe (Cloudflare in modalità "Under Attack"), parsing con alto rischio di ban dell'account, raccolta di dati sui concorrenti che monitorano il parsing.

Intervalli di rotazione raccomandati per piattaforme popolari

Piattaforma Tipo di proxy Intervallo di rotazione Ritardo tra le richieste
Wildberries Residenziali Ogni 5-10 minuti o 50 richieste 2-4 secondi
Ozon Residenziali Ogni 7-12 minuti o 60 richieste 3-5 secondi
Yandex.Market Residenziali Ogni 10-15 minuti o 80 richieste 2-3 secondi
Avito (categoria prodotti) Data center Ogni 15-20 minuti o 100 richieste 1-2 secondi
AliExpress Residenziali Ogni 3-5 minuti o 30 richieste 4-6 secondi

Punto importante: Questi numeri sono il risultato di test nel 2024. I marketplace aggiornano costantemente la protezione, quindi si consiglia di iniziare con impostazioni conservative (meno richieste, più ritardo) e aumentare gradualmente il carico, monitorando la percentuale di blocchi.

Strategia di rotazione "intelligente"

Invece di intervalli fissi, utilizza una rotazione adattiva basata sulle risposte del server:

  • HTTP 429 (Troppi richieste) — cambio immediato di IP e aggiunta di questo IP alla lista nera per 30-60 minuti.
  • HTTP 403 (Vietato) o CAPTCHA — cambio di IP e aumento del ritardo tra le richieste del 50%.
  • HTTP 503 (Servizio non disponibile) — potrebbe essere un problema non legato ai proxy, ma al sovraccarico del sito. Pausa di 30-60 secondi senza cambio di IP.
  • Richieste riuscite consecutive > 100 — puoi ridurre un po' il ritardo o aumentare il numero di richieste prima della rotazione.

Questa logica viene implementata nel codice del parser e consente di risparmiare fino al 30-40% del traffico proxy, evitando rotazioni non necessarie.

Bypass dei sistemi anti-bot di Wildberries, Ozon e Yandex.Market

I moderni marketplace utilizzano una protezione multilivello: da semplici controlli User-Agent a fingerprinting avanzato del browser. Solo i proxy non sono sufficienti — è necessaria una strategia complessiva di bypass.

Livello 1: Intestazioni HTTP corrette

Il set minimo di intestazioni che il tuo parser deve inviare:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: it-IT,it;q=0.9,en;q=0.8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Cache-Control: max-age=0

Punti critici:

  • L'User-Agent deve corrispondere a un browser reale. Usa versioni attuali di Chrome 120+, Firefox 121+. Non usare versioni obsolete (Chrome 90) — questo è un segnale di allerta.
  • L'Accept-Language deve essere "it-IT" per le piattaforme italiane. Se parsate con l'intestazione "en-US", il sito capisce la discrepanza (IP dall'Italia, ma lingua inglese).
  • Le intestazioni Sec-Fetch-* sono apparse in Chrome 76+ e sono obbligatorie per i siti moderni. La loro assenza rivela un vecchio parser.

Livello 2: Esecuzione di JavaScript

Wildberries e Ozon caricano prezzi, caratteristiche, giacenze tramite JavaScript dopo il caricamento della pagina. Se il tuo parser su requests/curl scarica semplicemente l'HTML, riceverà una pagina vuota o un placeholder.

Soluzione: Usa browser headless — Puppeteer (Node.js), Playwright (Python/Node.js), Selenium. Questi eseguono completamente il rendering della pagina, eseguono JS e ottengono l'HTML finale.

Problema dei browser headless: I siti li identificano facilmente tramite parametri navigator.webdriver === true, assenza di plugin, dimensioni specifiche del Canvas. La percentuale di identificazione di Chrome headless è di circa l'80-90%.

Soluzione al problema: Usa librerie per la modalità stealth:

  • puppeteer-extra-plugin-stealth (Node.js) — maschera Puppeteer come un normale Chrome, patchando 30+ parametri di fingerprint.
  • undetected-chromedriver (Python) — versione patchata di Selenium ChromeDriver, che non è identificata dalla maggior parte dei sistemi anti-bot.
  • playwright-stealth (Python) — equivalente per Playwright con supporto per Firefox e WebKit.

Livello 3: Bypass di Cloudflare e DataDome

Wildberries utilizza Cloudflare Bot Management, Ozon — DataDome. Questi sistemi analizzano non solo IP e intestazioni, ma anche comportamenti: velocità di scorrimento, movimenti del mouse, tempo di caricamento della pagina.

Segni della sfida di Cloudflare: Invece del contenuto, vedi la pagina "Controllo del tuo browser..." con un ritardo di 5 secondi. Nel codice si tratta di una sfida JavaScript, che verifica il browser.

Come bypassare:

  • FlareSolverr — servizio proxy che risolve automaticamente la sfida di Cloudflare. Invi gli URL e restituisce i cookie per il bypass. Funziona nel 70-80% dei casi.
  • Playwright con attesa — carichi la pagina in un browser headless, aspetti 10-15 secondi (finché JS non viene eseguito), estrai i cookie e li usi in normali richieste HTTP. Risparmia risorse: il browser è necessario solo per ottenere i cookie, poi parsate tramite requests.
  • Proxy residenziali + browser stealth — la combinazione offre oltre il 95% di bypass riusciti. Cloudflare vede l'IP reale dell'utente e il fingerprint corretto del browser.

Importante: Cloudflare aggiorna costantemente la protezione. Ciò che funzionava a dicembre 2024 potrebbe non funzionare a marzo 2025. Avere sempre un piano di riserva: soluzione manuale CAPTCHA tramite servizi 2Captcha/AntiCaptcha o passaggio all'API del marketplace (se disponibile).

Livello 4: Imitazione del comportamento dell'utente

I sistemi anti-bot avanzati monitorano i pattern comportamentali. Un vero utente scorre la pagina, muove il mouse, a volte torna indietro. Un bot apre le schede prodotto con un intervallo perfetto di 2.000 secondi.

Come imitare:

  • Randomizzazione dei ritardi — invece di fissi 3 secondi, usa random.uniform(2.5, 5.0). Aggiungi pause lunghe rare (15-30 secondi), simulando la distrazione dell'utente.
  • Scorrimento della pagina — in Puppeteer/Playwright aggiungi lo scorrimento prima di estrarre i dati: await page.evaluate(() => window.scrollBy(0, 500)).
  • Movimenti del mouse — la libreria ghost-cursor per Puppeteer genera traiettorie realistiche per il movimento del cursore.
  • Transizioni tramite ricerca — non aprire le schede prodotto direttamente tramite URL. Prima vai alla home, fai una ricerca, clicca sul prodotto nei risultati. Questo appare naturale.

Strumenti popolari per il parsing con supporto proxy

Per il parsing delle caratteristiche dei prodotti non è necessario scrivere codice da zero. Esistono strumenti pronti con interfaccia visiva, supporto proxy e bypass automatico della protezione.

Octoparse — parser senza codice

Descrizione: Applicazione desktop per Windows/Mac con un costruttore visivo di parser. Clicchi sugli elementi della pagina (nome del prodotto, prezzo, caratteristiche), il programma crea automaticamente le regole di estrazione.

Supporto proxy: Integrato. Nelle impostazioni indichi l'elenco dei proxy, il programma li ruota automaticamente. Supporta HTTP, HTTPS, SOCKS5. C'è integrazione con fornitori come Bright Data, Smartproxy.

Vantaggi: Non è necessario codice, funziona con siti JavaScript, pianificatore di attività integrato, esportazione in Excel/CSV/JSON.
Svantaggi: Abbonamento a pagamento a partire da 75$/mese, più lento rispetto al codice in Python, limitazioni sul numero di pagine nella versione gratuita.

Quando utilizzare: Per piccoli progetti (fino a 50.000 prodotti), se non sei un programmatore o hai bisogno di un prototipo veloce.

ParseHub — parser cloud

Descrizione: Analogo di Octoparse, ma funziona nel cloud. Configuri il parser nell'app desktop, ma viene eseguito sui server di ParseHub. Comodo per compiti lunghi (parsing di 100.000+ prodotti).

Supporto proxy: Solo nei piani a pagamento (da 149$/mese). Puoi caricare il tuo elenco di proxy o utilizzare gli IP residenziali integrati di ParseHub.

Vantaggi: Non sovraccarica il tuo computer, elaborazione automatica della paginazione, API per integrazione.
Svantaggi: Costoso, supporto lento, difficoltà di configurazione per siti complessi.

Scrapy (Python) — per programmatori

Descrizione: Framework per la creazione di parser in Python. L'opzione più flessibile e veloce — puoi parsare milioni di prodotti al giorno. Richiede conoscenze di Python a livello intermedio.

Supporto proxy: Tramite middleware. Soluzioni popolari: scrapy-rotating-proxies (rotazione da un elenco), scrapy-proxy-pool (integrazione con API dei fornitori). La configurazione richiede 10-15 minuti.

Vantaggi: Gratuito, molto veloce (richieste asincrone), controllo completo sulla logica, enorme comunità.
Svantaggi: Necessità di scrivere codice, difficoltà con siti JavaScript (richiesta di integrazione con Splash o Playwright).

Quando utilizzare: Per progetti seri con volume di 100.000+ prodotti al giorno, se hai un programmatore nel team.

Apify — marketplace di parser pronti

Descrizione: Piattaforma con migliaia di parser pronti (chiamati "attori") per siti popolari. Ci sono soluzioni pronte per Amazon, eBay, AliExpress. Per i marketplace russi, la scelta è minore, ma è possibile richiedere lo sviluppo.

Supporto proxy: Integrato in tutti gli attori. Apify fornisce i propri proxy residenziali (pagamento in base al traffico) o puoi collegare i tuoi.

Vantaggi: Soluzioni pronte, esecuzione cloud, API per automazione, proxy integrati.
Svantaggi: Costoso (da 49$/mese + pagamento per proxy), dipendenza dalla piattaforma, limitazioni nella personalizzazione.

Confronto degli strumenti

Strumento Necessita codice? Prezzo Velocità Per chi
Octoparse No Da 75$/mese Media Marketer, analisti senza programmazione
ParseHub No Da 149$/mese Media Stessi, che vogliono esecuzione cloud
Scrapy Sì (Python) Gratuito Molto alta Programmatori, grandi volumi di dati
Apify No (attori pronti) Da 49$/mese + traffico Alta Business, necessitano di soluzioni pronte
Puppeteer/Playwright Sì (JS/Python) Gratuito Media (browser pesanti) Programmatori, siti complessi in JS

Configurazione passo passo dei proxy nel parser

Esaminiamo la configurazione pratica dei proxy utilizzando strumenti popolari. Queste istruzioni sono adatte per il parsing di qualsiasi marketplace, non solo russi.

Configurazione in Octoparse

Passo 1: Apri Octoparse e crea un nuovo compito di parsing. Inserisci l'URL della pagina di partenza (ad esempio, categoria di prodotti su Wildberries).

Passo 2: Vai nel menu "Impostazioni" → "Impostazioni avanzate" → "Proxy". Seleziona "Usa proxy personalizzati".

Passo 3: Aggiungi i proxy nel formato:

http://username:password@proxy-server.com:8080
socks5://username:password@proxy-server.com:1080

Passo 4: Attiva l'opzione "Ruota proxy" e imposta l'intervallo di rotazione. Per Wildberries si raccomanda "Ruota ogni 50 richieste" o "Ruota ogni 10 minuti".

Passo 5: Clicca su "Test Proxy" — Octoparse verificherà la disponibilità di ogni proxy. Rimuovi quelli non funzionanti dall'elenco.

Passo 6: Nella sezione "Velocità" imposta il ritardo tra le richieste: 2-4 secondi per i proxy residenziali, 3-5 secondi per i data center.

Configurazione in Scrapy (Python)

Passo 1: Installa la libreria per la rotazione dei proxy:

pip install scrapy-rotating-proxies

Passo 2: Crea un file proxies.txt con l'elenco dei proxy (uno per riga):

http://user:pass@1.2.3.4:8080
http://user:pass@5.6.7.8:8080
socks5://user:pass@9.10.11.12:1080

Passo 3: Nel file settings.py del tuo progetto Scrapy aggiungi:

ROTATING_PROXY_LIST_PATH = 'proxies.txt'

DOWNLOADER_MIDDLEWARES = {
    'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
    'rotating_proxies.middlewares.BanDetectionMiddleware': 620,
}

# Ritardo tra le richieste (in secondi)
DOWNLOAD_DELAY = 3

# Randomizzazione del ritardo (±50%)
RANDOMIZE_DOWNLOAD_DELAY = True

# Richieste parallele (non più di 16 per proxy residenziali)
CONCURRENT_REQUESTS = 8

Passo 4: Scrapy ruoterà automaticamente i proxy ad ogni richiesta. Se un proxy restituisce un errore (HTTP 403, 429, timeout), viene contrassegnato come "cattivo" e temporaneamente escluso dalla rotazione.

Configurazione in Puppeteer (Node.js)

Passo 1: Installa Puppeteer e il plugin per la modalità stealth:

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

Passo 2: Crea uno script con supporto proxy:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

const proxyList = [
  'http://user:pass@proxy1.com:8080',
  'http://user:pass@proxy2.com:8080'
];

let currentProxyIndex = 0;

async function scrapeWithProxy(url) {
  const proxy = proxyList[currentProxyIndex];
  currentProxyIndex = (currentProxyIndex + 1) % proxyList.length;

  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=${proxy}`]
  });

  const page = await browser.newPage();
  
  // Autenticazione proxy (se richiesta)
  await page.authenticate({
    username: 'user',
    password: 'pass'
  });

  await page.goto(url, { waitUntil: 'networkidle2' });
  
  // Estrazione dei dati
  const data = await page.evaluate(() => {
    return {
      title: document.querySelector('.product-title')?.innerText,
      price: document.querySelector('.product-price')?.innerText,
      // Aggiungi altre estrazioni necessarie
    };
  });

  await browser.close();
  return data;
}

Passo 3: Chiama la funzione scrapeWithProxy(url) con l'URL desiderato per iniziare il parsing.

```