Torna al blog

Proxy per il Web Scraping e il Data Mining: La Guida Completa

Criticamente importante: - Traduci SOLO in italiano, NON mescolare le lingue - NON includere parole di altre lingue nella traduzione - Usa SOLO caratteri e l'alfabeto italiano - NON TRADURRE MAI i codici promozionali (ad esempio, ARTHELLO) - lasciali invariati Testo da tradurre: In questo articolo: Scoprirai perché i server proxy sono diventati uno strumento indispensabile per il web scraping nel 2025, come funzionano i moderni sistemi anti-bot (Cloudflare, DataDome), quali tipi di proxy sono i migliori...

📅14 novembre 2025

In questo articolo: Scoprirete perché i server proxy sono diventati uno strumento indispensabile per il web scraping nel 2025, come funzionano i moderni sistemi anti-bot (Cloudflare, DataDome), quali tipi di proxy sono più adatti per il data parsing e come scegliere correttamente i proxy per le vostre esigenze. Il materiale si basa su dati attuali ed esperienza pratica.

🎯 Perché sono necessari i proxy per il parsing

Il web scraping è la raccolta automatizzata di dati dai siti web. Nel 2025, questa è una tecnologia fondamentale per il business: monitoraggio dei prezzi dei concorrenti, raccolta di dati per il machine learning, aggregazione di contenuti, analisi di mercato. Tuttavia, i siti moderni si proteggono attivamente dai bot, e senza proxy, il parsing efficace è quasi impossibile.

Motivi principali per l'uso dei proxy

🚫 Aggirare i blocchi IP

I siti web monitorano il numero di richieste da ciascun indirizzo IP. Superato il limite (solitamente 10-100 richieste al minuto), si viene bloccati. I proxy consentono di distribuire le richieste su una moltitudine di indirizzi IP, rendendovi invisibili.

🌍 Accesso geolocalizzato

Molti siti mostrano contenuti diversi a seconda del paese dell'utente. Per il parsing di dati globali sono necessari proxy provenienti da diversi paesi. Ad esempio, per monitorare i prezzi di Amazon negli Stati Uniti sono necessari IP americani.

⚡ Elaborazione parallela

Senza proxy, si è limitati a un singolo IP e a richieste sequenziali. Con un pool di proxy, è possibile effettuare centinaia di richieste parallele, accelerando il parsing di 10-100 volte. Critico per grandi volumi di dati.

🔒 Anonimato e sicurezza

I proxy nascondono il vostro IP reale, proteggendovi dal retargeting, dal tracciamento e da potenziali rischi legali. Particolarmente importante quando si analizzano dati sensibili o si effettua intelligence competitiva.

⚠️ Cosa succede senza proxy

  • Ban immediato — il vostro IP verrà bloccato dopo 50-100 richieste
  • CAPTCHA ad ogni passo — dovrete risolvere CAPTCHA manualmente
  • Dati incompleti — otterrete solo un campione limitato
  • Bassa velocità — un solo IP significa richieste sequenziali
  • Rilevamento bot — i siti moderni identificheranno immediatamente l'automazione

🌐 Il panorama del web scraping nel 2025

L'industria del web scraping nel 2025 sta vivendo cambiamenti senza precedenti. Da un lato, la domanda di dati cresce in modo esponenziale: i modelli AI richiedono dataset di addestramento, le aziende necessitano di analisi in tempo reale. Dall'altro, le protezioni diventano sempre più sofisticate.

Tendenze chiave del 2025

1. Sistemi anti-bot basati su AI

Il machine learning analizza ora i pattern comportamentali: movimenti del mouse, velocità di scorrimento, tempo tra i clic. Sistemi come DataDome identificano i bot con una precisione del 99,99% in meno di 2 millisecondi.

  • Analisi dei segnali client-side e server-side
  • Behavioral fingerprinting (impronte comportamentali)
  • Tasso di falsi positivi inferiore allo 0,01%

2. Protezione multistrato

I siti non si affidano più a una singola tecnologia. Cloudflare Bot Management combina sfide JS, TLS fingerprinting, database di reputazione IP e analisi comportamentale. Aggirare tutti gli strati contemporaneamente è difficile.

3. Rate limiting come standard

Praticamente ogni sito importante applica il rate limiting, ovvero la limitazione della frequenza delle richieste. Limiti tipici: 10-100 richieste/minuto per API pubbliche, 1-5 richieste/secondo per pagine normali. Il challenge rate-limiting applica CAPTCHA al superamento delle soglie.

Statistiche di mercato

Indicatore 2023 2025 Variazione
Siti con protezione anti-bot 43% 78% +35%
Success rate senza proxy 25% 8% -17%
Rate limit medio (richieste/min) 150 60 -60%
Costo proxy di qualità $5-12/GB $1.5-4/GB -50%

🛡️ Sistemi anti-bot moderni

Comprendere come funzionano i sistemi anti-bot è fondamentale per un parsing di successo. Nel 2025, le protezioni sono passate dai semplici blocchi IP a complessi sistemi multistrato basati su machine learning.

Metodi di rilevamento dei bot

Reputazione IP

Database di IP proxy noti (gli IP dei datacenter sono facilmente identificabili). Gli indirizzi IP sono classificati per ASN (Autonomous System Number), cronologia di abuso, tipo (residenziale/datacenter).

TLS/HTTP Fingerprinting

Analisi dell'handshake TLS (impronta JA3), ordine delle intestazioni HTTP, versioni dei protocolli. I bot spesso utilizzano librerie standard con pattern caratteristici.

Sfide JavaScript

Esecuzione di calcoli JS complessi nel browser. I client HTTP semplici (requests, curl) non possono eseguire JS. Sono necessari browser headless (Puppeteer, Selenium).

Analisi Comportamentale

Monitoraggio dei movimenti del mouse, della velocità di digitazione, dei pattern di scorrimento. I modelli AI sono addestrati su milioni di sessioni di utenti reali e bot.

Livelli di blocco

1. Restrizioni leggere

  • Sfide CAPTCHA
  • Rallentamento delle risposte
  • Nascondere parte dei dati

2. Blocchi medi

  • HTTP 403 Forbidden
  • HTTP 429 Too Many Requests
  • Blocco temporaneo dell'IP (1-24 ore)

3. Ban severi

  • Blocco permanente dell'IP
  • Ban dell'intera sottorete (Classe C)
  • Aggiunta a blacklist globali

☁️ Cloudflare, DataDome e altre protezioni

Piattaforme anti-bot principali

Cloudflare Bot Management

La protezione più diffusa — utilizzata sul 20%+ di tutti i siti web. Combina molteplici tecniche:

  • JS Challenge — Cloudflare Turnstile (sostituto di reCAPTCHA)
  • TLS Fingerprinting — impronte JA3/JA4
  • IP Intelligence — database di proxy noti
  • Behavioral scoring — analisi di scroll/mouse/timing
  • Rate limiting — limiti adattivi basati sul comportamento

Aggiramento: Richiede proxy residenziali/mobili di qualità + browser headless con fingerprint corretti + comportamento simile a quello umano.

DataDome

Protezione basata su AI con focus sul machine learning. Prende una decisione in meno di 2 ms con una precisione del 99,99%.

  • Modelli ML — addestrati su petabyte di dati
  • Segnali Client + Server — analisi bidirezionale
  • Analisi ASN IP — valutazione della reputazione tramite ASN
  • Frequenza delle richieste — analisi della frequenza e dei pattern delle richieste
  • Entropia delle intestazioni — rilevamento di anomalie nelle intestazioni

Tasso di falsi positivi: inferiore allo 0,01% — il sistema è molto preciso ma aggressivo nei confronti dei proxy.

PerimeterX (HUMAN)

Analisi comportamentale basata sulla biometria. Monitora i micro-movimenti del mouse, la pressione sul touchscreen, i pattern di navigazione.

Imperva (Incapsula)

Protezione di livello Enterprise. Utilizzata su siti finanziari e governativi. Molto difficile da aggirare senza proxy residenziali premium.

⏱️ Rate Limiting e rilevamento dei pattern

Il rate limiting è la limitazione del numero di richieste da una singola fonte in un dato periodo. Anche con i proxy, è necessario gestire correttamente la frequenza delle richieste, altrimenti il pattern verrà riconosciuto.

Tipi di rate limiting

1. Fixed Window

Limite fisso per una finestra temporale. Ad esempio: 100 richieste al minuto. Alle 10:00:00 il contatore si azzera.

Finestra 10:00-10:01: massimo 100 richieste
Finestra 10:01-10:02: il contatore si azzera

2. Sliding Window

Finestra scorrevole. Vengono considerate le richieste degli ultimi N secondi rispetto al momento attuale. Metodo più preciso ed equo.

3. Token Bucket

Avete un "secchio di token" (es. 100 pezzi). Ogni richiesta consuma un token. I token si ricaricano alla velocità di X al secondo. Permette brevi picchi di attività.

🎯 Strategie per aggirare il rate limiting

  • Rotazione proxy — ogni IP ha il suo limite, usiamo un pool
  • Aggiunta di ritardi — simulazione del comportamento umano (0.5-3 sec tra le richieste)
  • Randomizzazione degli intervalli — non esattamente 1 sec, ma 0.8-1.5 sec casuali
  • Rispetto di robots.txt — osservare il Crawl-delay
  • Distribuzione del carico — parsing in più thread con IP diversi

🔄 Tipi di proxy per lo scraping

Non tutti i proxy sono ugualmente utili per il parsing. La scelta del tipo di proxy dipende dal sito di destinazione, dal volume dei dati, dal budget e dal livello di protezione.

🏢

Proxy Datacenter

IP provenienti da data center (AWS, Google Cloud, OVH). Veloci ed economici, ma facilmente identificabili dai siti.

✅ Vantaggi:

  • I più economici ($1.5-3/GB)
  • Alta velocità (100+ Mbps)
  • IP stabili

❌ Svantaggi:

  • Facilmente rilevabili (ASN noto)
  • Alto tasso di ban (50-80%)
  • Non adatti a siti complessi

Per: Siti semplici senza protezione, API, progetti interni

🏠

Proxy Residenziali

IP di utenti domestici reali tramite ISP (provider). Appaiono come utenti normali.

✅ Vantaggi:

  • Appaiono legittimi
  • Basso tasso di ban (10-20%)
  • Enormi pool di IP (milioni)
  • Geotargeting per paese/città

❌ Svantaggi:

  • Più costosi ($2.5-10/GB)
  • Più lenti (10-50 Mbps)
  • IP instabili (possono cambiare)

Per: E-commerce, social network, siti protetti, monitoraggio SEO

📱

Proxy Mobili

IP di operatori mobili (3G/4G/5G). I più affidabili, poiché migliaia di utenti condividono lo stesso IP.

✅ Vantaggi:

  • Quasi mai bloccati (tasso di ban ~5%)
  • IP condivisi (migliaia dietro un IP)
  • Ideali per protezioni severe
  • Rotazione IP automatica

❌ Svantaggi:

  • I più costosi ($3-15/GB)
  • Più lenti dei residenziali
  • Pool di IP limitato

Per: Instagram, TikTok, banche, massima protezione

⚔️ Confronto: Datacenter vs Residenziale vs Mobile

Confronto dettagliato

Parametro Datacenter Residenziale Mobile
Success rate 20-50% 80-90% 95%+
Velocità 100+ Mbps 10-50 Mbps 5-30 Mbps
Costo/GB $1.5-3 $2.5-8 $3-12
Dimensione pool 10K-100K 10M-100M 1M-10M
Rilevabilità Alta Bassa Molto bassa
Geotargeting Paese/Città Paese/Città/ISP Paese/Operatore
Ideale per API, siti semplici E-commerce, SEO Social network, protezione rigorosa

💡 Raccomandazione: Iniziate con i proxy residenziali, che offrono il miglior equilibrio tra prezzo e qualità per la maggior parte delle attività. Datacenter solo per siti semplici. Mobile per risorse altamente protette.

🎯 Come scegliere i proxy per le vostre attività

Matrice di selezione dei proxy

Criteri di scelta:

1. Livello di protezione del sito di destinazione

  • Nessuna protezione: Proxy Datacenter
  • Protezione di base (rate limiting): Proxy Datacenter con rotazione
  • Media (Cloudflare Basic): Proxy Residenziali
  • Alta (Cloudflare Pro, DataDome): Proxy residenziali Premium
  • Massima (PerimeterX, social network): Proxy Mobili

2. Volume di dati

  • Meno di 10 GB/mese: Qualsiasi tipo
  • 10-100 GB/mese: Proxy Residenziali o Datacenter economici
  • 100-1000 GB/mese: Combo Datacenter + residenziali
  • Oltre 1 TB/mese: Bulk Datacenter + residenziali selettivi

3. Budget

  • Fino a $100/mese: Proxy Datacenter
  • $100-500/mese: Proxy Residenziali
  • $500-2000/mese: Residenziali Premium + mobili per attività critiche
  • Oltre $2000/mese: Pool misti in base all'attività

4. Requisiti geografici

  • Nessuna restrizione geo: Qualsiasi tipo
  • Paese specifico: Proxy Residenziali con geotargeting
  • Città/regione specifica: Proxy Residenziali Premium
  • ISP specifico: Proxy Residenziali con targeting ISP

✅ Esempi di utilizzo

Parsing prezzi Amazon/eBay

Raccomandazione: Proxy Residenziali del paese target
Perché: Protezione media + contenuto geolocalizzato + grande volume di dati

Raccolta dati Instagram/TikTok

Raccomandazione: Proxy Mobili
Perché: Protezione anti-bot aggressiva + piattaforma mobile

Parsing siti di notizie

Raccomandazione: Proxy Datacenter con rotazione
Perché: Solitamente senza protezioni serie + grande volume

Monitoraggio SEO di Google

Raccomandazione: Proxy Residenziali di diversi paesi
Perché: Risultati di ricerca geolocalizzati + rilevamento IP datacenter

💰 Analisi dei costi dei proxy per lo scraping

Calcolare correttamente il budget per i proxy è la chiave per la redditività del progetto. Analizziamo scenari reali e calcoliamo i costi.

Calcolo del traffico

Formula di calcolo

Traffico mensile = Pagine raccolte × Dimensione pagina × Fattore di overhead

  • Dimensione media pagina HTML: 50-200 KB
  • Con immagini/CSS/JS: 500 KB - 2 MB
  • Fattore di overhead: 1.2-1.5× (retry, reindirizzamenti)
  • Endpoint API: solitamente 1-50 KB

Esempi di calcolo

Scenario 1: Parsing prezzi Amazon

Pagine/giorno: 10,000
Dimensione pagina: ~150 KB
Volume mensile: 10,000 × 150 KB × 30 × 1.3 = 58.5 GB
Tipo proxy: Residenziale
Costo: 58.5 GB × $2.7 = $158/mese

Scenario 2: Monitoraggio SEO di Google

Parole chiave: 1,000
Verifiche/giorno: 1 volta
Dimensione SERP: ~80 KB
Volume mensile: 1,000 × 80 KB × 30 × 1.2 = 2.8 GB
Tipo proxy: Residenziale (paesi diversi)
Costo: 2.8 GB × $2.7 = $7.6/mese

Scenario 3: Parsing massivo di notizie

Articoli/giorno: 50,000
Dimensione articolo: ~30 KB (solo testo)
Volume mensile: 50,000 × 30 KB × 30 × 1.2 = 54 GB
Tipo proxy: Datacenter (siti semplici)
Costo: 54 GB × $1.5 = $81/mese

Ottimizzazione dei costi

1. Metti in cache i dati

Salva l'HTML localmente e analizza nuovamente senza nuove richieste. Risparmio fino al 50% del traffico.

2. Usa le API dove possibile

Gli endpoint API restituiscono solo JSON (1-50 KB) invece di HTML completo (200+ KB). Risparmio dell'80-90%.

3. Blocca le immagini

In Puppeteer/Selenium, blocca il caricamento di immagini, video e font. Risparmio del 60-70% del traffico.

4. Analizza solo il nuovo

Usa checksum o timestamp per determinare le modifiche. Non analizzare pagine che non sono cambiate.

💡 Pro-tip: Strategia ibrida

Usa il 70-80% di proxy datacenter economici per il parsing bulk di siti semplici, e il 20-30% residenziali per siti complessi con protezione. Questo ottimizza il rapporto prezzo/qualità. Ad esempio: per 100K pagine, usa datacenter per 80K pagine semplici ($120) e residenziali per 20K protette ($54). Totale: $174 invece di $270 (risparmio del 35%).

Inizia il parsing con ProxyCove!

Registrati, ricarica il tuo saldo con il codice promozionale ARTHELLO e ricevi $1.3 in omaggio!

Continuazione nella Parte 2: Strategie di rotazione IP, configurazione dei proxy in Python (requests, Scrapy), Puppeteer e Selenium. Esempi di codice pratici per attività di parsing reali con ProxyCove.

In questa parte: Analizzeremo le strategie di rotazione degli indirizzi IP (sessioni rotanti vs sessioni sticky), impareremo a configurare i proxy in Python (requests, Scrapy), Puppeteer e Selenium. Esempi di codice pratici per attività di parsing reali con ProxyCove.

🔄 Strategie di rotazione degli indirizzi IP

La rotazione dei proxy è una tecnica chiave per un parsing di successo. Una strategia di rotazione corretta può aumentare il tasso di successo dal 20% al 95%+. Nel 2025 esistono diversi approcci collaudati.

Strategie principali

1. Rotazione per ogni richiesta

Ogni richiesta HTTP passa attraverso un nuovo IP. Massima anonimità, ma può causare problemi con le sessioni.

Adatto per:

  • Parsing di liste di prodotti
  • Raccolta di pagine statiche
  • Verifica massiva di URL
  • Scraping di Google SERP

2. Sessioni Sticky (Sticky Sessions)

Un IP viene utilizzato per l'intera sessione utente (10-30 minuti). Simula il comportamento di un utente reale.

Adatto per:

  • Processi multi-step (login → dati)
  • Compilazione di moduli
  • Gestione account
  • Carrelli E-commerce

3. Rotazione basata sul tempo

Cambio di IP ogni N minuti o dopo N richieste. Un equilibrio tra stabilità e anonimato.

Adatto per:

  • Sessioni di parsing lunghe
  • Chiamate API con rate limit
  • Monitoraggio in tempo reale

4. Rotazione intelligente (AI-driven)

L'algoritmo decide quando cambiare IP in base alle risposte del server (429, 403) e ai pattern di successo.

Adatto per:

  • Sistemi anti-bot complessi
  • Parsing adattivo
  • Alta efficienza

💡 Raccomandazioni sulla scelta

  • Per alta velocità: Rotazione ad ogni richiesta + grande pool di proxy
  • Per siti complessi: Sessioni Sticky + simulazione del comportamento
  • Per API: Rotazione basata sul tempo rispettando i rate limits
  • Per social network: Sessioni Sticky + proxy mobili (minimo 10 min per IP)

⚖️ Sessioni Rotanti vs Sessioni Sticky

Confronto dettagliato

Criterio Proxy Rotanti Sessioni Sticky
Cambio IP Ogni richiesta o per timer 10-30 minuti per IP
Salvataggio cookie ❌ No ✅ Sì
Velocità di parsing Molto alta Media
Aggiramento rate limiting Ottimo Scarso
Processi multi-step Non adatto Ideale
Consumo proxy Efficiente Medio
Rilevabilità Bassa Bassa
Costo per lo stesso volume Inferiore Superiore (mantenimento più lungo)

🎯 Verdetto: Utilizza proxy rotanti per il parsing massivo di dati statici. Usa sessioni sticky per la gestione di account, moduli e processi multi-step. ProxyCove supporta entrambe le modalità!

🐍 Configurazione dei proxy in Python Requests

Python Requests è la libreria più popolare per le richieste HTTP. La configurazione dei proxy richiede solo 2 righe di codice.

Configurazione di base

Esempio più semplice

import requests # Proxy ProxyCove (sostituire con i propri dati) proxy = { "http": "http://username:password@gate.proxycove.com:8080", "https": "http://username:password@gate.proxycove.com:8080" } # Effettua una richiesta tramite proxy response = requests.get("https://httpbin.org/ip", proxies=proxy) print(response.json()) # Vedrete l'IP del server proxy

✅ Sostituire username:password con le vostre credenziali ProxyCove

Rotazione del proxy da una lista

import requests import random # Lista di proxy ProxyCove (o di altri provider) proxies_list = [ "http://user1:pass1@gate.proxycove.com:8080", "http://user2:pass2@gate.proxycove.com:8080", "http://user3:pass3@gate.proxycove.com:8080", ] def get_random_proxy(): proxy_url = random.choice(proxies_list) return {"http": proxy_url, "https": proxy_url} # Parsing di 100 pagine con rotazione urls = [f"https://example.com/page/{i}" for i in range(1, 101)] for url in urls: proxy = get_random_proxy() try: response = requests.get(url, proxies=proxy, timeout=10) print(f"✅ {url}: {response.status_code}") except Exception as e: print(f"❌ {url}: {str(e)}")

Gestione degli errori e retry

import requests from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry # Configurazione della strategia di retry retry_strategy = Retry( total=3, # 3 tentativi backoff_factor=1, # Ritardo tra i tentativi status_forcelist=[429, 500, 502, 503, 504], ) adapter = HTTPAdapter(max_retries=retry_strategy) session = requests.Session() session.mount("http://", adapter) session.mount("https://", adapter) # Proxy proxy = { "http": "http://username:password@gate.proxycove.com:8080", "https": "http://username:password@gate.proxycove.com:8080" } # Richiesta con retry automatico response = session.get( "https://example.com", proxies=proxy, timeout=15 )

🕷️ Configurazione di Scrapy con proxy

Scrapy è un potente framework per lo scraping su larga scala. Supporta middleware per la rotazione automatica dei proxy.

Metodo 1: Configurazione di base

settings.py

# settings.py # Usa la variabile d'ambiente per il proxy import os http_proxy = os.getenv('HTTP_PROXY', 'http://user:pass@gate.proxycove.com:8080') # Scrapy usa automaticamente la variabile http_proxy DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, } # Impostazioni aggiuntive per una migliore compatibilità CONCURRENT_REQUESTS = 16 # Richieste parallele DOWNLOAD_DELAY = 0.5 # Ritardo tra le richieste (secondi) RANDOMIZE_DOWNLOAD_DELAY = True # Randomizzazione del ritardo

Metodo 2: Middleware personalizzato con rotazione

# middlewares.py import random from scrapy import signals class ProxyRotationMiddleware: def __init__(self): self.proxies = [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', 'http://user3:pass3@gate.proxycove.com:8080', ] def process_request(self, request, spider): # Sceglie un proxy casuale per ogni richiesta proxy = random.choice(self.proxies) request.meta['proxy'] = proxy spider.logger.info(f'Using proxy: {proxy}') # settings.py DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.ProxyRotationMiddleware': 100, 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, }

Metodo 3: scrapy-rotating-proxies (consigliato)

# Installazione pip install scrapy-rotating-proxies # settings.py ROTATING_PROXY_LIST = [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', 'http://user3:pass3@gate.proxycove.com:8080', ] DOWNLOADER_MIDDLEWARES = { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610, 'rotating_proxies.middlewares.BanDetectionMiddleware': 620, } # Impostazioni per il rilevamento dei ban ROTATING_PROXY_BAN_POLICY = 'rotating_proxies.policy.BanDetectionPolicy' ROTATING_PROXY_PAGE_RETRY_TIMES = 5

✅ Traccia automaticamente i proxy funzionanti ed esclude quelli bannati

🎭 Puppeteer e proxy

Puppeteer è Chrome headless per siti pesanti in JavaScript. Necessario per aggirare le sfide JS (Cloudflare, DataDome).

Node.js + Puppeteer

Esempio di base

const puppeteer = require('puppeteer'); (async () => { // Configurazione proxy ProxyCove const browser = await puppeteer.launch({ headless: true, args: [ '--proxy-server=gate.proxycove.com:8080', '--no-sandbox', '--disable-setuid-sandbox' ] }); const page = await browser.newPage(); // Autenticazione (se il proxy richiede login/password) await page.authenticate({ username: 'your_username', password: 'your_password' }); // Parsing della pagina await page.goto('https://example.com'); const content = await page.content(); console.log(content); await browser.close(); })();

Rotazione del proxy in Puppeteer

const puppeteer = require('puppeteer'); const proxies = [ { server: 'gate1.proxycove.com:8080', username: 'user1', password: 'pass1' }, { server: 'gate2.proxycove.com:8080', username: 'user2', password: 'pass2' }, { server: 'gate3.proxycove.com:8080', username: 'user3', password: 'pass3' } ]; async function scrapeWithProxy(url, proxyConfig) { const browser = await puppeteer.launch({ headless: true, args: [`--proxy-server=${proxyConfig.server}`] }); const page = await browser.newPage(); await page.authenticate({ username: proxyConfig.username, password: proxyConfig.password }); await page.goto(url, { waitUntil: 'networkidle2' }); const data = await page.evaluate(() => document.body.innerText); await browser.close(); return data; } // Usiamo proxy diversi per pagine diverse (async () => { const urls = ['https://example.com/page1', 'https://example.com/page2']; for (let i = 0; i < urls.length; i++) { const proxy = proxies[i % proxies.length]; // Rotazione const data = await scrapeWithProxy(urls[i], proxy); console.log(`Pagina ${i + 1}:`, data.substring(0, 100)); } })();

Plugin puppeteer-extra

// npm install puppeteer-extra puppeteer-extra-plugin-stealth const puppeteer = require('puppeteer-extra'); const StealthPlugin = require('puppeteer-extra-plugin-stealth'); // Il plugin nasconde i segni del browser headless puppeteer.use(StealthPlugin()); (async () => { const browser = await puppeteer.launch({ headless: true, args: ['--proxy-server=gate.proxycove.com:8080'] }); const page = await browser.newPage(); await page.authenticate({ username: 'user', password: 'pass' }); // Ora i siti non identificheranno che è un bot! await page.goto('https://example.com'); await browser.close(); })();

✅ Il plugin Stealth nasconde le tracce di webdriver, oggetti chrome e altri segni di automazione

🤖 Selenium con proxy (Python)

Selenium è lo strumento classico per l'automazione del browser. Supporta Chrome, Firefox e altri browser.

Chrome + Selenium

Configurazione di base con proxy

from selenium import webdriver from selenium.webdriver.chrome.options import Options # Configurazione di Chrome con proxy chrome_options = Options() chrome_options.add_argument('--headless') # Senza GUI chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # Proxy ProxyCove proxy = "gate.proxycove.com:8080" chrome_options.add_argument(f'--proxy-server={proxy}') # Creazione del driver driver = webdriver.Chrome(options=chrome_options) # Parsing della pagina driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()

Proxy con autenticazione (selenium-wire)

# pip install selenium-wire from seleniumwire import webdriver from selenium.webdriver.chrome.options import Options # Configurazione del proxy con username/password seleniumwire_options = { 'proxy': { 'http': 'http://username:password@gate.proxycove.com:8080', 'https': 'http://username:password@gate.proxycove.com:8080', 'no_proxy': 'localhost,127.0.0.1' } } chrome_options = Options() chrome_options.add_argument('--headless') # Driver con proxy autenticato driver = webdriver.Chrome( options=chrome_options, seleniumwire_options=seleniumwire_options ) driver.get('https://example.com') print(driver.title) driver.quit()

✅ selenium-wire supporta proxy con username:password (Selenium standard non lo fa)

Rotazione dei proxy in Selenium

from seleniumwire import webdriver from selenium.webdriver.chrome.options import Options import random # Lista di proxy proxies = [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', 'http://user3:pass3@gate.proxycove.com:8080', ] def create_driver_with_proxy(proxy_url): seleniumwire_options = { 'proxy': { 'http': proxy_url, 'https': proxy_url, } } chrome_options = Options() chrome_options.add_argument('--headless') driver = webdriver.Chrome( options=chrome_options, seleniumwire_options=seleniumwire_options ) return driver # Parsing di più pagine con proxy diversi urls = ['https://example.com/1', 'https://example.com/2', 'https://example.com/3'] for url in urls: proxy = random.choice(proxies) driver = create_driver_with_proxy(proxy) try: driver.get(url) print(f"✅ {url}: {driver.title}") except Exception as e: print(f"❌ {url}: {str(e)}") finally: driver.quit()

📚 Librerie per la rotazione dei proxy

scrapy-rotating-proxies

Rotazione automatica per Scrapy con rilevamento ban.

pip install scrapy-rotating-proxies

requests-ip-rotator

Rotazione tramite AWS API Gateway (IP gratuiti).

pip install requests-ip-rotator

proxy-requests

Wrapper per requests con rotazione e verifica.

pip install proxy-requests

puppeteer-extra-plugin-proxy

Plugin per Puppeteer con rotazione proxy.

npm install puppeteer-extra-plugin-proxy

💻 Esempi di codice completi

Esempio: Parsing prodotti Amazon con rotazione

import requests from bs4 import BeautifulSoup import random import time # Proxy ProxyCove PROXIES = [ {"http": "http://user1:pass1@gate.proxycove.com:8080", "https": "http://user1:pass1@gate.proxycove.com:8080"}, {"http": "http://user2:pass2@gate.proxycove.com:8080", "https": "http://user2:pass2@gate.proxycove.com:8080"}, ] # User agents per la rotazione USER_AGENTS = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36', ] def scrape_amazon_product(asin): url = f"https://www.amazon.com/dp/{asin}" proxy = random.choice(PROXIES) headers = {'User-Agent': random.choice(USER_AGENTS)} try: response = requests.get(url, proxies=proxy, headers=headers, timeout=15) if response.status_code == 200: soup = BeautifulSoup(response.content, 'html.parser') # Parsing dei dati title = soup.find('span', {'id': 'productTitle'}) price = soup.find('span', {'class': 'a-price-whole'}) return { 'asin': asin, 'title': title.text.strip() if title else 'N/A', 'price': price.text.strip() if price else 'N/A', } except Exception as e: print(f"Errore per {asin}: {str(e)}") return None # Parsing di una lista di prodotti asins = ['B08N5WRWNW', 'B07XJ8C8F5', 'B09G9FPHY6'] for asin in asins: product = scrape_amazon_product(asin) if product: print(f"✅ {product['title']}: {product['price']}") time.sleep(random.uniform(2, 5)) # Ritardo simile a quello umano

Esempio: Spider Scrapy con proxy

# spider.py import scrapy class ProductSpider(scrapy.Spider): name = 'products' start_urls = ['https://example.com/products'] custom_settings = { 'ROTATING_PROXY_LIST': [ 'http://user1:pass1@gate.proxycove.com:8080', 'http://user2:pass2@gate.proxycove.com:8080', ], 'DOWNLOADER_MIDDLEWARES': { 'rotating_proxies.middlewares.RotatingProxyMiddleware': 610, 'rotating_proxies.middlewares.BanDetectionMiddleware': 620, }, 'DOWNLOAD_DELAY': 1, 'CONCURRENT_REQUESTS': 8, } def parse(self, response): for product in response.css('div.product'): yield { 'name': product.css('h2.title::text').get(), 'price': product.css('span.price::text').get(), 'url': response.urljoin(product.css('a::attr(href)').get()), } # Pagina successiva next_page = response.css('a.next::attr(href)').get() if next_page: yield response.follow(next_page, self.parse)

Pronti per iniziare il parsing con ProxyCove?

Proxy Residenziali, Mobili e Datacenter per qualsiasi attività. Ricarica il tuo saldo con il codice promozionale ARTHELLO e ottieni un bonus di $1.3!

Continuazione nella parte finale: Migliori pratiche di web scraping, come evitare i ban, aspetti legali del parsing, casi d'uso reali e conclusioni.

Nella parte finale: Analizzeremo le migliori pratiche di web scraping 2025, strategie per evitare i ban, aspetti legali del parsing (GDPR, CCPA), casi d'uso reali e raccomandazioni finali per un parsing di successo.

✨ Migliori pratiche di web scraping 2025

Il parsing di successo nel 2025 è una combinazione di competenze tecniche, strumenti appropriati e approccio etico. Seguire le best practice aumenta il tasso di successo dal 30% al 90%+.

Regole d'oro del parsing

1. Rispettare robots.txt

Il file robots.txt indica quali parti del sito possono essere analizzate. Rispettare queste regole è segno di uno scraper etico.

User-agent: *
Crawl-delay: 10
Disallow: /admin/
Disallow: /api/private/

✅ Rispettare il Crawl-delay e non analizzare i percorsi vietati

2. Aggiungere ritardi

Un essere umano non effettua 100 richieste al secondo. Simulare un comportamento naturale.

  • 0.5-2 sec tra le richieste per siti semplici
  • 2-5 sec per siti protetti
  • 5-10 sec per dati sensibili
  • Randomizzazione dei ritardi (non esattamente 1 sec!)

3. Ruotare User-Agent

Lo stesso User-Agent + molte richieste = bandiera rossa per i sistemi anti-bot.

USER_AGENTS = [
  'Mozilla/5.0 (Windows NT 10.0) Chrome/120.0',
  'Mozilla/5.0 (Macintosh) Safari/17.0',
  'Mozilla/5.0 (X11; Linux) Firefox/121.0',
]

4. Gestire gli errori

La rete è instabile. I proxy cadono. I siti restituiscono 503. Utilizzare sempre la logica di retry.

  • 3-5 tentativi con backoff esponenziale
  • Logging degli errori
  • Fallback su un altro proxy in caso di ban
  • Salvataggio dei progressi

5. Usare le Sessioni

Requests Session salva i cookie, riutilizza le connessioni TCP (più veloce), gestisce le intestazioni.

session = requests.Session()
session.headers.update({...})

6. Memorizzare i risultati in cache

Non analizzare la stessa cosa due volte. Salvare l'HTML in file o database per la rianalisi senza nuove richieste.

Simulare il comportamento umano

Cosa fanno le persone vs i bot

Comportamento Umano Bot (cattivo) Bot (buono)
Velocità richieste 1-5 sec tra i clic 100/sec 0.5-3 sec (random)
User-Agent Browser reale Python-requests/2.28 Chrome 120 (rotazione)
Intestazioni HTTP 15-20 intestazioni 3-5 intestazioni Set completo
JavaScript Esegue sempre Non esegue Browser Headless
Cookie Salva Ignora Gestisce

🎯 Raccomandazioni sulle intestazioni (headers)

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', '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', 'DNT': '1', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'none', 'Cache-Control': 'max-age=0', }

🛡️ Come evitare i ban

I ban sono il problema principale nel parsing. Nel 2025, i sistemi di rilevamento sono diventati così intelligenti da richiedere un approccio complesso per l'aggiramento.

Strategia di difesa multilivello

⚠️ Segnali che portano al ban

  • Reputazione IP — ASN di proxy noto o IP di datacenter
  • Rate limiting — troppe richieste troppo velocemente
  • Pattern comportamentali — intervalli fissi tra le richieste
  • Assenza di esecuzione JS — le sfide browser non vengono eseguite
  • TLS fingerprint — requests/curl hanno impronte uniche
  • HTTP/2 fingerprint — l'ordine delle intestazioni tradisce l'automazione
  • Fingerprints WebGL/Canvas — per browser headless

✅ Come aggirare il rilevamento

1. Usa proxy di qualità

  • Residenziali/Mobili per siti complessi
  • Pool IP ampio (1000+ per la rotazione)
  • Geotargeting per il paese richiesto
  • Sessioni Sticky per processi multi-step

2. Browser Headless con anti-detection

  • Puppeteer-extra-stealth — nasconde i segni di headless
  • Playwright Stealth — analogo per Playwright
  • undetected-chromedriver — per Selenium Python
  • Randomizzazione Fingerprints — WebGL, Canvas, Font

3. Rotazione intelligente e rate limiting

  • Non più di 5-10 richieste/minuto per IP
  • Randomizzazione dei ritardi (intervalli non fissi)
  • Rotazione adattiva — cambio IP in caso di 429/403
  • Pause notturne — simulazione del sonno umano

4. Set completo di intestazioni

  • 15-20 intestazioni HTTP realistiche
  • Referer chain (da dove si proviene)
  • Accept-Language in base alla geolocalizzazione del proxy
  • Intestazioni Sec-CH-UA per Chrome

💡 Pro-tip: Approccio combinato

Per la massima efficienza, combina: Proxy Residenziali + Puppeteer-stealth + Rotazione Intelligente + Intestazioni Complete + Ritardi di 2-5 sec. Questo garantisce un tasso di successo del 95%+ anche sui siti più protetti.

🇪🇺 GDPR e protezione dei dati

Il GDPR (Regolamento Generale sulla Protezione dei Dati) è la legge più severa al mondo sulla protezione dei dati. Multe fino a 20 milioni di euro o il 4% del fatturato globale.

Requisiti chiave del GDPR per lo scraping

Base Giuridica

È necessaria una base giuridica per il trattamento dei dati personali:

  • Consenso — quasi impossibile per il parsing
  • Interesse legittimo — può essere applicabile, ma richiede giustificazione
  • Obbligo legale — per la compliance

Minimizzazione dei dati

Raccogli solo i dati necessari. Non analizzare tutto "per ogni evenienza". Email, telefoni, indirizzi — solo se strettamente necessari.

Limitazione dello scopo

Utilizza i dati solo per lo scopo dichiarato. Se hai analizzato per l'analisi di mercato, non puoi venderli come base email.

Diritto all'oblio

Le persone possono richiedere la cancellazione dei loro dati. È necessaria una procedura per gestire tali richieste.

🚨 Alti rischi GDPR

  • Parsing di indirizzi email per spam — multa garantita
  • Raccolta di dati biometrici (foto facciali) — dati particolarmente sensibili
  • Dati dei minori — protezione rafforzata
  • Dati sanitari — assolutamente vietati senza basi legali specifiche

💡 Raccomandazione: Se analizzate dati UE, consultate un legale. Il GDPR non è uno scherzo. Per sicurezza, evitate i dati personali e concentratevi su fatti, prezzi, prodotti.

🎯 Casi d'uso reali

💰

Monitoraggio prezzi dei concorrenti

Obiettivo: Tracciare i prezzi su Amazon/eBay per il dynamic pricing.

Soluzione: Proxy Residenziali USA + Scrapy + MongoDB. Parsing di 10.000 prodotti 2 volte al giorno. Success rate 92%.

Proxy: Residenziali $200/mese

ROI: Aumento del profitto del 15%

📊

Monitoraggio posizioni SEO

Obiettivo: Tracciare le posizioni del sito in Google per 1000 parole chiave in diversi paesi.

Soluzione: Proxy Residenziali 20 paesi + Python requests + PostgreSQL. Raccolta SERP giornaliera.

Proxy: Residenziali $150/mese

Alternativa: API servizi SEO ($500+/mese)

🤖

Raccolta dati per modelli ML

Obiettivo: Raccogliere 10 milioni di articoli di notizie per l'addestramento di un modello NLP.

Soluzione: Proxy Datacenter + Scrapy distribuito + storage S3. Rispetto di robots.txt e ritardi.

Proxy: Datacenter $80/mese

Tempo: 2 mesi di raccolta

📱

Parsing Instagram/TikTok

Obiettivo: Monitorare le menzioni del marchio sui social network per l'analisi di marketing.

Soluzione: Proxy Mobili + Puppeteer-stealth + coda Redis. Sessioni Sticky di 10 minuti per IP.

Proxy: Mobili $300/mese

Success rate: 96%

🏠

Aggregatore immobiliare

Obiettivo: Raccogliere annunci da 50 siti immobiliari per il confronto.

Soluzione: Mix di proxy datacenter + residenziali + Scrapy + Elasticsearch. Aggiornamento ogni 6 ore.

Proxy: Misti $120/mese

Volume: 500K annunci/giorno

📈

Dati finanziari

Obiettivo: Parsing di quotazioni azionarie, notizie per un algoritmo di trading.

Soluzione: Proxy residenziali Premium + Python asyncio + TimescaleDB. Aggiornamento in tempo reale.

Proxy: Premium $400/mese

Latenza: <100ms critico

📊 Monitoraggio e analisi

Metriche chiave di parsing

95%+

Success Rate

Risposte HTTP 200

<5%

Ban Rate

Risposte 403/429

2-3s

Tempo di risposta medio

Latenza proxy

$0.05

Costo per 1K Pagine

Costo proxy

Strumenti di monitoraggio

  • Prometheus + Grafana — metriche in tempo reale
  • Stack ELK — logging e analisi
  • Sentry — tracciamento degli errori
  • Dashboard personalizzata — stato proxy, costi

🔧 Risoluzione dei problemi tipici

Errori comuni e soluzioni

❌ HTTP 403 Forbidden

Causa: IP bannato o identificato come proxy

Soluzione: Passa a proxy residenziali/mobili, aggiungi intestazioni realistiche, usa browser headless

❌ HTTP 429 Too Many Requests

Causa: Rate limit superato

Soluzione: Aumenta i ritardi (3-5 sec), ruota i proxy più spesso, riduci le richieste concorrenti

❌ CAPTCHA ad ogni richiesta

Causa: Il sito rileva l'automazione

Soluzione: Puppeteer-stealth, proxy mobili, sessioni sticky, più ritardi

❌ Contenuto vuoto / JS non caricato

Causa: Il sito utilizza rendering dinamico

Soluzione: Usa Selenium/Puppeteer invece di requests, attendi il caricamento JS

❌ Lenta velocità di parsing

Causa: Richieste sequenziali

Soluzione: Asincronicità (asyncio, aiohttp), richieste concorrenti, più proxy

🚀 Tecniche di parsing avanzate

Per sviluppatori esperti

1. Mascheramento del Fingerprint HTTP/2

I moderni sistemi anti-bot analizzano l'ordine dei frame e degli header HTTP/2. Librerie come curl-impersonate imitano browser specifici a livello TLS/HTTP.

# Uso di curl-impersonate per imitare perfettamente Chrome curl_chrome116 --proxy http://user:pass@gate.proxycove.com:8080 https://example.com

2. Algoritmi di Rotazione Proxy Intelligenti

Non solo rotazione casuale, ma algoritmi intelligenti:

  • Least Recently Used (LRU): usiamo i proxy che non sono stati usati di recente
  • Success Rate Weighted: usiamo più spesso i proxy con un alto tasso di successo
  • Geographic Clustering: raggruppiamo le richieste allo stesso sito tramite proxy della stessa nazione
  • Adaptive Throttling: rallentiamo automaticamente al rilevamento del rate limiting

3. Cattura e risoluzione CAPTCHA

Quando le CAPTCHA sono inevitabili, utilizza:

  • API 2Captcha: risoluzione tramite persone reali ($0.5-3 per 1000 captcha)
  • hCaptcha-solver: soluzioni AI per captcha semplici
  • Audio CAPTCHA: riconoscimento tramite speech-to-text
  • reCAPTCHA v3: più difficile da aggirare, richiede proxy residenziali + stealth

4. Architettura di Scraping Distribuita

Per progetti su larga scala (1M+ pagine/giorno):

  • Pattern Master-Worker: coda di attività centrale (Redis, RabbitMQ)
  • Pod Kubernetes: scalabilità orizzontale degli scraper
  • Database distribuiti: Cassandra, MongoDB per l'archiviazione
  • Code di messaggi: elaborazione asincrona dei risultati
  • Stack di monitoraggio: Prometheus + Grafana per le metriche

💎 Livello Enterprise: gestione proxy

Per grandi team e progetti, implementa:

  • Pool proxy centralizzato: gestione unica dei proxy per tutti i progetti
  • Health checking: verifica automatica della funzionalità dei proxy
  • Rilevamento ban: modelli ML per l'identificazione degli IP bannati
  • Tracciamento costi: contabilizzazione dei costi per progetto e team
  • API gateway: API interna per ottenere proxy

🎯 Conclusioni e raccomandazioni

📝 Raccomandazioni finali 2025

1. Scelta del proxy

Siti semplici: Proxy Datacenter ($1.5/GB)
E-commerce, SEO: Proxy Residenziali ($2.7/GB)
Social network, banche: Proxy Mobili ($3.8/GB)
Combinazione: 80% datacenter + 20% residenziali per ottimizzare i costi

2. Strumenti

Python requests: per API e pagine semplici
Scrapy: per parsing su larga scala (1M+ pagine)
Puppeteer/Selenium: per siti pesanti in JS
Plugin Stealth: obbligatori per aggirare il rilevamento

3. Strategia di rotazione

Rotante: per la raccolta massiva di dati
Sticky: per la gestione di account e moduli
Ritardi: 2-5 sec randomizzati
Rate limit: massimo 10 req/min per IP

4. Legalità

• Analizza solo dati pubblici
• Rispetta robots.txt
• Evita i dati personali (rischi GDPR)
• Consulta un legale per progetti commerciali

5. ProxyCove — la scelta ideale

• Tutti i tipi di proxy: Mobile, Residenziali, Datacenter
• Entrambe le modalità: Sessioni Rotanti e Sticky
• Geotargeting in 195+ paesi
• Pay-as-you-go senza canone fisso
• Supporto tecnico 24/7 in italiano

🏆 Vantaggi di ProxyCove per il parsing

🌍

195+ Paesi

Copertura globale

99.9% Uptime

Stabilità

🔄

Rotazione Auto

Rotazione integrata

👨‍💼

Supporto 24/7

Sempre disponibili

💰

Pay-as-you-go

Senza canone fisso

🔐

Autenticazione IP/Login

Autenticazione flessibile

Inizia il tuo parsing di successo con ProxyCove!

Registrati in 2 minuti, ricarica il tuo saldo con il codice promozionale ARTHELLO e ricevi un bonus di $1.3. Senza canone fisso — paga solo per il traffico!

Proxy per web scraping — i migliori prezzi 2025:

🎁 Usa il codice promozionale ARTHELLO al primo deposito e ricevi $1.3 aggiuntivi sul tuo conto

Grazie per l'attenzione! Speriamo che questa guida ti aiuti a costruire un sistema di web scraping efficace nel 2025. Buon parsing! 🚀