Il parsing dei dati dei concorrenti è una pratica comune per marketer, venditori di marketplace e agenzie. Monitorate i prezzi su Wildberries, raccogliete annunci da Avito, analizzate l'assortimento dei concorrenti. Ma la maggior parte dei siti blocca le richieste massicce e ignorare il file robots.txt può portare a problemi legali. In questo articolo vedremo come utilizzare i proxy per fare scraping in modo etico: rispettare le regole dei siti, evitare blocchi e raccogliere dati senza rischi per il business.
Cos'è robots.txt e a cosa serve ai siti
Il file robots.txt è un documento di testo nella radice del sito che informa i robot dei motori di ricerca e i parser su quali sezioni possono essere scansionate e quali sono vietate. Ad esempio, un negozio online può vietare l'indicizzazione del carrello o dell'area personale, affinché queste pagine non vengano incluse in Google.
Un tipico file robots.txt appare così:
User-agent: * Disallow: /admin/ Disallow: /cart/ Disallow: /api/ Crawl-delay: 10 User-agent: Googlebot Allow: / Sitemap: https://example.com/sitemap.xml
Analisi delle direttive:
User-agent: *— regole per tutti i bot (l'asterisco significa "qualsiasi bot")Disallow: /admin/— vietato scansionare la sezione /admin/Crawl-delay: 10— ritardo di 10 secondi tra le richiesteUser-agent: Googlebot— regole speciali per Google (tutto è consentito)
Perché i siti utilizzano robots.txt:
- Protezione dal sovraccarico del server — il parsing massivo crea un carico sul server, rallentando il lavoro per gli utenti reali
- Nascondere pagine tecniche — carrelli, moduli di pagamento, endpoint API non devono essere indicizzati
- Protezione dei dati commerciali — i marketplace non vogliono che i concorrenti possano facilmente scaricare l'intero catalogo prodotti
- Risparmio di traffico — ogni richiesta del bot costa denaro al proprietario del sito
Importante: robots.txt è una raccomandazione, non una barriera tecnica. Il file non blocca fisicamente l'accesso, ma ignorare le regole può portare al blocco del tuo IP o a cause legali (soprattutto negli Stati Uniti e in Europa).
Rischi legali del parsing: cosa dice la legge
Il parsing dei dati si trova in una zona grigia della legislazione. In diversi paesi ci sono regole diverse, ma ci sono principi comuni che è importante conoscere per non ricevere una causa legale.
Legislazione russa
In Russia non esiste una legge specifica sul parsing, ma si applicano norme generali:
- Copyright (Codice Civile della Federazione Russa, articolo 1259) — non è possibile copiare testi unici, fotografie, descrizioni di prodotti senza il permesso del titolare dei diritti. Il parsing dei prezzi e delle caratteristiche è generalmente sicuro, poiché si tratta di dati fattuali.
- Dati personali (152-FZ) — è vietato raccogliere dati personali degli utenti (nome, telefono, email) senza consenso. Questo riguarda il parsing dei profili dei social media o delle banche dati di contatti.
- Concorrenza sleale (articolo 14.33 del Codice Amministrativo della Federazione Russa) — se il parsing viene utilizzato per copiare un modello di business o ingannare i clienti, si può ricevere una multa fino a 500.000 rubli.
Legislazione degli Stati Uniti e dell'Europa
Negli Stati Uniti e nell'UE le leggi sono più severe:
- CFAA (Computer Fraud and Abuse Act, USA) — l'accesso non autorizzato ai sistemi informatici è considerato un crimine. La violazione di robots.txt può essere interpretata come "accesso non autorizzato". Un caso noto: LinkedIn contro hiQ Labs (2022) — il tribunale ha stabilito che il parsing dei dati pubblici è legale, ma ignorare le barriere tecniche (ad esempio, CAPTCHA) non lo è.
- GDPR (Regolamento Generale sulla Protezione dei Dati, UE) — è vietata la raccolta di dati personali dei cittadini dell'UE senza esplicito consenso. Sanzioni fino a 20 milioni di euro o il 4% del fatturato annuo dell'azienda.
- Terms of Service (Contratti di Servizio) — molti siti vietano esplicitamente il parsing nelle loro regole. La violazione può portare a una causa legale per violazione del contratto.
Consiglio pratico: Prima di fare scraping, controlla tre documenti: robots.txt, Terms of Service e Privacy Policy del sito target. Se il parsing è esplicitamente vietato, cerca fonti alternative di dati (API pubbliche, programmi di affiliazione, dataset pronti).
Cosa è sicuro fare scraping
| Tipo di dati | Rischio | Commento |
|---|---|---|
| Prezzi dei prodotti | Basso | Dati fattuali, non protetti da copyright |
| Caratteristiche dei prodotti | Basso | Dati tecnici sono sicuri |
| Descrizioni uniche | Alto | Protetti da copyright |
| Foto dei prodotti | Alto | Necessita del permesso del titolare dei diritti |
| Contatti degli utenti | Critico | Violazione del 152-FZ e GDPR |
| Statistiche pubbliche | Basso | Dati aperti sono sicuri |
Parsing etico: come raccogliere dati senza violazioni
Il parsing etico è un equilibrio tra obiettivi aziendali e rispetto per i proprietari dei siti. Puoi raccogliere i dati necessari senza creare problemi alla risorsa target e senza violare le leggi.
Principi fondamentali del parsing etico
- Rispetta robots.txt — se una sezione è vietata per il parsing, non cercare di aggirarla. Cerca fonti alternative di dati.
- Limita la velocità delle richieste — non inviare 1000 richieste al secondo. Fai pause di 2-10 secondi tra le richieste per non sovraccaricare il server.
- Utilizza l'User-Agent del tuo parser — non mascherarti da utente normale. Indica un User-Agent onesto, ad esempio: "MyCompanyParser/1.0 (contact@mycompany.com)". Questo consente agli amministratori del sito di contattarti in caso di problemi.
- Fai scraping solo di dati pubblici — non cercare di accedere a sezioni chiuse, API o database.
- Non rivendere i dati copiati — utilizza le informazioni raccolte per scopi interni (analisi dei concorrenti, monitoraggio dei prezzi), non per creare un servizio concorrente.
- Cache i dati — non richiedere la stessa pagina più volte. Salva i risultati localmente e aggiornali secondo un programma (una volta al giorno, una volta alla settimana).
Quando NON fare scraping
Ci sono situazioni in cui il parsing crea più problemi che benefici:
- Il sito fornisce API — molti marketplace (Wildberries, Ozon, Yandex.Market) hanno API ufficiali per i partner. Utilizzale invece del parsing — è più veloce, legale e affidabile.
- I dati sono protetti da CAPTCHA o autenticazione — aggirare la protezione può essere considerato un hacking del sistema.
- Il sito vieta esplicitamente il parsing nei Terms of Service — il rischio di una causa legale è troppo alto.
- Stai raccogliendo dati personali — questo viola il GDPR e il 152-FZ con enormi multe.
Come leggere e rispettare correttamente robots.txt
Il file robots.txt si trova nella radice del dominio: https://example.com/robots.txt. Prima di iniziare il parsing, controlla sempre questo file.
Direttive principali di robots.txt
| Direttiva | Significato | Esempio |
|---|---|---|
User-agent |
Per quale bot si applicano le regole | User-agent: * (tutti i bot) |
Disallow |
Sezioni vietate per il parsing | Disallow: /admin/ |
Allow |
Sezioni consentite (eccezione a Disallow) | Allow: /public/ |
Crawl-delay |
Ritardo minimo tra le richieste (in secondi) | Crawl-delay: 10 |
Sitemap |
Link alla mappa del sito (elenco di tutte le pagine) | Sitemap: /sitemap.xml |
Esempi di robots.txt e come interpretarli
Esempio 1: Divieto totale di scraping
User-agent: * Disallow: /
Questo significa: "A tutti i bot è vietato scansionare l'intero sito". Fare scraping di un tale sito è una violazione delle regole del proprietario. Cerca fonti alternative di dati.
Esempio 2: Limitazioni selettive
User-agent: * Disallow: /admin/ Disallow: /api/ Disallow: /cart/ Allow: /products/ Crawl-delay: 5
Questo significa: "È possibile fare scraping della sezione /products/ (prodotti), ma sono vietati /admin/, /api/ e /cart/. Fai una pausa di 5 secondi tra le richieste". Queste sono condizioni normali — è possibile fare scraping dei prodotti rispettando i limiti.
Esempio 3: Regole per bot specifici
User-agent: Googlebot Allow: / User-agent: * Disallow: / Crawl-delay: 10
Questo significa: "Google può scansionare l'intero sito, ma tutti gli altri bot no". Se non sei Google, il parsing è vietato.
Come controllare robots.txt prima del parsing
La maggior parte dei linguaggi di programmazione ha librerie per controllare automaticamente robots.txt. Ecco un esempio in Python:
from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
# Controlliamo se è possibile fare scraping della pagina
url = "https://example.com/products/item123"
user_agent = "MyParser/1.0"
if rp.can_fetch(user_agent, url):
print("Scraping consentito")
else:
print("Scraping vietato da robots.txt")
Questo controllerà automaticamente le regole e indicherà se è possibile fare scraping di un URL specifico.
Rate Limiting e ritardi tra le richieste
Il Rate Limiting (limitazione della velocità delle richieste) è una protezione dei siti contro il sovraccarico. Se invii troppe richieste in un breve periodo, il server può bloccare il tuo IP o mostrare CAPTCHA.
Perché è importante rispettare i ritardi
- Evita il blocco dell'IP — i siti monitorano la frequenza delle richieste da un singolo IP. Se invii 100 richieste al minuto, verrai bloccato come bot.
- Riduci il carico sul server — il parsing massivo può "far crollare" il sito, soprattutto se si tratta di una piccola risorsa su un hosting economico.
- Rispetta il Crawl-delay di robots.txt — se il sito ha indicato un ritardo di 10 secondi, ignorare questa regola è non etico.
- Comportamento più naturale — gli utenti normali non aprono 10 pagine al secondo. I ritardi fanno sembrare il tuo parser un vero essere umano.
Ritardi raccomandati per diversi compiti
| Tipo di scraping | Ritardo tra le richieste | Commento |
|---|---|---|
| Sito piccolo (fino a 1000 pagine) | 5-10 secondi | Bassa potenza del server |
| Sito medio (negozio online) | 2-5 secondi | Equilibrio ottimale |
| Marketplace grande (Wildberries, Ozon) | 1-3 secondi | Infrastruttura potente, ma forte protezione |
| API-endpoint | Secondo i limiti API (di solito 10-100 richieste/min) | Controlla la documentazione API |
| Social media (Instagram, VK) | 10-30 secondi | Limiti molto severi, alto rischio di ban |
Come implementare i ritardi nel codice
Ecco un esempio in Python utilizzando la libreria time:
import time
import requests
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
response = requests.get(url)
print(f"Scraping: {url}")
# Ritardo di 3 secondi prima della prossima richiesta
time.sleep(3)
Per scenari più complessi, utilizza ritardi casuali (random delay) per rendere il comportamento ancora più naturale:
import time
import random
for url in urls:
response = requests.get(url)
# Ritardo casuale da 2 a 5 secondi
delay = random.uniform(2, 5)
time.sleep(delay)
Rotazione dei proxy per un parsing etico
Anche se rispetti robots.txt e fai ritardi, il parsing di un grande volume di dati da un singolo IP può suscitare sospetti. La rotazione dei proxy aiuta a distribuire le richieste tra diversi indirizzi IP, simulando il comportamento di molti utenti reali.
Perché è necessaria la rotazione dei proxy
- Superare il Rate Limiting — se il limite è di 100 richieste/ora da un singolo IP, 10 proxy ti daranno 1000 richieste/ora.
- Distribuzione geografica — per fare scraping di dati regionali (prezzi su Wildberries a Mosca e Vladivostok) hai bisogno di proxy da diverse città.
- Ridurre i sospetti — le richieste da diversi IP sembrano traffico di utenti reali.
- Riserva — se un proxy viene bloccato, il parser passa automaticamente a un altro.
Quali proxy utilizzare per un parsing etico
| Tipo di proxy | Vantaggi | Svantaggi | Quando utilizzare |
|---|---|---|---|
| Residenziali | IP reali di utenti domestici, basso rischio di ban | Più costosi rispetto ad altri tipi | Scraping di social media, marketplace con forte protezione |
| Mobili | IP di operatori mobili, massima fiducia | I più costosi, meno IP disponibili | Scraping di Instagram, TikTok, applicazioni mobili |
| Data Center | Economici, alta velocità | Facilmente rilevabili, spesso nelle liste nere | Scraping di siti semplici, test |
Raccomandazione per un parsing etico: Utilizza proxy residenziali con rotazione automatica. Offrono un equilibrio tra costo e affidabilità, e i loro IP sembrano utenti normali.
Strategie di rotazione dei proxy
- Rotazione per ogni richiesta — ogni richiesta viene effettuata con un nuovo IP. Adatto per scraping di siti con limiti severi (social media, marketplace).
- Rotazione temporale (ogni 5-10 minuti) — un IP viene utilizzato per diverse richieste, poi cambia. Comportamento più naturale.
- Sticky sessions (sessioni sticky) — un IP viene utilizzato per l'intera sessione dell'utente (ad esempio, autenticazione + scraping dell'area personale). Essenziale per siti con autenticazione.
- Rotazione geografica — per ogni regione viene utilizzato un proxy di quella regione. Esempio: scraping dei prezzi su Wildberries a Mosca — proxy da Mosca.
Esempio di rotazione dei proxy in Python
import requests
import random
import time
# Lista dei proxy (sostituisci con quelli reali)
proxies_list = [
{"http": "http://user:pass@proxy1.example.com:8080"},
{"http": "http://user:pass@proxy2.example.com:8080"},
{"http": "http://user:pass@proxy3.example.com:8080"}
]
urls = [
"https://example.com/product1",
"https://example.com/product2",
"https://example.com/product3"
]
for url in urls:
# Scegli un proxy casuale
proxy = random.choice(proxies_list)
try:
response = requests.get(url, proxies=proxy, timeout=10)
print(f"Scraping {url} tramite {proxy}")
except Exception as e:
print(f"Errore con il proxy {proxy}: {e}")
# Ritardo di 3 secondi
time.sleep(3)
Casi pratici: scraping di marketplace e concorrenti
Esaminiamo scenari reali di parsing etico per il business.
Caso 1: Monitoraggio dei prezzi su Wildberries
Obiettivo: Vendi prodotti su Wildberries e desideri monitorare i prezzi dei concorrenti per adeguare i tuoi.
Problemi:
- Wildberries blocca l'IP per richieste frequenti
- I prezzi dipendono dalla regione di consegna
- È necessario fare scraping di 100-500 prodotti quotidianamente
Soluzione etica:
- Controlla robots.txt — Wildberries consente il parsing delle schede prodotto, ma vieta gli endpoint API.
- Utilizza proxy residenziali — per ogni regione (Mosca, San Pietroburgo, Novosibirsk) prendi proxy da quella regione.
- Rotazione per ogni richiesta — ogni prodotto viene parsato con un nuovo IP.
- Ritardo di 2-3 secondi — fai una pausa tra le richieste.
- Fai scraping una volta al giorno — non aggiornare i prezzi ogni ora, è sufficiente un monitoraggio quotidiano.
Risultato: Ottieni i prezzi attuali dei concorrenti senza blocchi. Wildberries non rileva un carico anomalo, poiché le richieste sono distribuite nel tempo e tra gli IP.
Caso 2: Scraping di annunci su Avito
Obiettivo: Sei un agente immobiliare e desideri raccogliere tutti gli annunci di vendita di appartamenti nella tua città per analizzare il mercato.
Problemi:
- Avito mostra CAPTCHA in caso di attività sospetta
- È necessario fare scraping di 5000+ annunci
- I dati vengono aggiornati ogni giorno
Soluzione etica:
- Controlla robots.txt — Avito consente il parsing delle pagine degli annunci, ma con un limite di Crawl-delay: 5 secondi.
- Utilizza proxy residenziali — rotazione ogni 10 richieste (non per ogni richiesta, per non sembrare sospetto).
- Ritardo di 5-7 secondi — rispetta il Crawl-delay di robots.txt.
- Fai scraping durante la notte — quando il carico sul sito è minimo (2-6 del mattino).
- Cache i dati — non fare scraping dello stesso annuncio due volte, salva i risultati in un database.
Risultato: Durante la notte raccogli tutti i nuovi annunci senza CAPTCHA e blocchi. Avito non subisce sovraccarico e ottieni i dati necessari.
Caso 3: Analisi dell'assortimento di un concorrente
Obiettivo: Sei il proprietario di un negozio online di elettronica e desideri sapere quali nuovi prodotti sono stati aggiunti dal concorrente.
Problemi:
- Il sito del concorrente è su un hosting protetto con un sistema anti-bot
- È necessario fare scraping di un catalogo di 10.000 prodotti
- Vuoi farlo settimanalmente
Soluzione etica:
- Controlla robots.txt — è consentito il parsing di /catalog/, vietato /admin/ e /api/.
- Utilizza Sitemap — invece di visitare manualmente tutte le pagine, prendi l'elenco degli URL da sitemap.xml (è più veloce e non crea carico aggiuntivo).
- Proxy residenziali con rotazione ogni 5 minuti — un IP fa 20-30 richieste, poi cambia.
- Ritardo di 3-5 secondi — imita il comportamento di un normale utente.
- Fai scraping solo dei nuovi prodotti — confronta l'attuale catalogo con quello precedente e fai scraping solo delle modifiche.
Risultato: Ricevi settimanalmente un elenco delle novità del concorrente senza blocchi. Il sito del concorrente non ha problemi e ottieni un vantaggio competitivo.
Strumenti per l'automazione nel rispetto delle regole
Esistono strumenti pronti che semplificano il parsing etico e rispettano automaticamente robots.txt.
Scrapy (Python)
Scrapy è un framework popolare per il parsing in Python. Controlla automaticamente robots.txt e rispetta le regole.
Impostazione del rispetto di robots.txt in Scrapy:
# settings.py # Abilitare il rispetto di robots.txt ROBOTSTXT_OBEY = True # Ritardo tra le richieste (in secondi) DOWNLOAD_DELAY = 3 # Ritardo casuale (da 0.5 a 1.5 * DOWNLOAD_DELAY) RANDOMIZE_DOWNLOAD_DELAY = True # Limite di richieste simultanee a un dominio CONCURRENT_REQUESTS_PER_DOMAIN = 1 # User-Agent del tuo parser USER_AGENT = 'MyCompanyParser/1.0 (+http://mycompany.com/bot)'
Con queste impostazioni, Scrapy controllerà automaticamente robots.txt prima del parsing e rispetterà tutte le regole.
Apify (piattaforma cloud)
Apify è una piattaforma cloud per il web scraping senza codice. Crei il parser tramite un'interfaccia visiva, e Apify gestisce automaticamente i proxy e il rispetto dei limiti.
Vantaggi per il parsing etico:
- Rotazione proxy integrata (residenziali e data center)
- Rispetto automatico di robots.txt
- Impostazione dei ritardi tramite interfaccia
- Pianificazione dell'avvio (scraping una volta al giorno/settimana)
Octoparse (parser senza codice)
Octoparse è un'app desktop per il parsing senza programmazione. Adatta per marketer e venditori che non sanno scrivere codice.
Come impostare il parsing etico in Octoparse:
- Apri le impostazioni del task (Task Settings)
- Attiva "Respect robots.txt"
- Imposta un ritardo (Delay) di 3-5 secondi
- Collega i proxy nella sezione "Proxy Settings"
- Imposta la pianificazione dell'avvio (Schedule)
Puppeteer/Playwright (JavaScript)
Puppeteer e Playwright sono librerie per l'automazione del browser. Sono adatte per il parsing di siti con rendering JavaScript.
Esempio di parsing etico con Puppeteer:
const puppeteer = require('puppeteer');
const robotsParser = require('robots-parser');
async function ethicalScrape(url) {
// Controlliamo robots.txt
const robots = robotsParser('https://example.com/robots.txt',
'MyParser/1.0');
if (!robots.isAllowed(url)) {
console.log('Scraping vietato da robots.txt');
return;
}
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Ritardo prima di caricare la pagina
await new Promise(resolve => setTimeout(resolve, 3000));
await page.goto(url);
const data = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log(data);
await browser.close();
}
ethicalScrape('https://example.com/product1');
Conclusione
Il parsing etico tramite proxy è un equilibrio tra obiettivi aziendali e rispetto per i proprietari dei siti. Rispettando robots.txt, facendo ritardi tra le richieste e utilizzando la rotazione dei proxy, puoi raccogliere i dati necessari senza rischi legali e blocchi. Principi principali: controlla robots.txt prima del parsing, limita la velocità delle richieste, utilizza un User-Agent onesto e fai scraping solo di dati pubblici. Questo proteggerà il tuo business da cause legali e garantirà un funzionamento stabile dei parser.
Se intendi fare scraping di marketplace, siti concorrenti o raccogliere dati per analisi di mercato, ti consigliamo di utilizzare proxy residenziali con rotazione automatica. Essi garantiscono...