I dati sono il nuovo petrolio. Che si tratti di investigazioni online, monitoraggio reputazionale, ricerca di mercato o semplice curiosità, la capacità di raccogliere informazioni in modo efficace e discreto è diventata fondamentale. Due discipline che si intrecciano perfettamente in questo contesto sono OSINT (Open Source Intelligence) e Web Scraping.
OSINT si riferisce alla raccolta di dati da fonti pubblicamente accessibili — siti web, social media, registri pubblici, motori di ricerca — mentre il Web Scraping è la tecnica pratica usata per automatizzare questa raccolta. Ma ogni volta che si cerca di automatizzare l'accesso ad un sito web, si corre il rischio di essere rilevati e bannati.
Quindi, come si possono estrarre dati in modo efficace, rispettoso ed "invisibile"? In questo articolo ti guiderò attraverso le strategie tecniche ed etiche per fare scraping a prova di ban, spiegando concetti, strumenti e codice.
Cos'è l'OSINT?
OSINT è l'arte di raccogliere informazioni da fonti pubbliche. È molto usata da:
- Investigatori digitali e giornalisti.
- Hacker etici e professionisti della sicurezza.
- Aziende che fanno analisi di concorrenza o reputazione.
- Agenzie di intelligence.
Le fonti OSINT includono:
- Motori di ricerca.
- Whois e DNS.
- Social media.
- Forum, blog e piattaforme di e-commerce.
- Documenti pubblici (es. visure, registri imprese).
- Siti web e database accessibili pubblicamente.
L'OSINT non è hacking. È legale se le fonti sono pubbliche e non si violano Termini di Servizio.
Il Web Scraping: l'automazione dell'OSINT
Il Web Scraping è una tecnica per estrarre contenuti da siti web. Gli strumenti leggono il codice HTML e selezionano le informazioni desiderate, ad esempio nomi, prezzi, indirizzi, recensioni, post, email. Librerie e strumenti comuni includono:
- Node.js: Puppeteer, Axios, Cheerio.
- Python: Requests, BeautifulSoup, Selenium, Scrapy.
- Browser headless: Playwright, Puppeteer.
- Proxy e rotating IP services: BrightData, ScraperAPI, etc.
Ecco un esempio di base in Node.js con Cheerio:
const axios = require('axios');
const cheerio = require('cheerio');
(async () => {
const res = await axios.get('https://example.com');
const $ = cheerio.load(res.data);
const titles = [];
$('h2.article-title').each((i, el) => {
titles.push($(el).text());
});
console.log(titles);
})();
Questo script estrae i titoli degli articoli da un sito web.
Perché i siti web bannano i bot e scoraggiano il Web Scraping
I siti internet proteggono i loro dati dallo scraping intensivo o non autorizzato per vari motivi:
- Protezione del business model (dati esclusivi o a pagamento).
- Carico del server: lo scraping massivo può rallentare un sito.
- Rispetto della privacy degli utenti.
- Sicurezza: per evitare lo scraping per phishing, spam e furti di contenuto.
I segnali che un bot lascia dietro di sé includono:
- Accessi troppo rapidi e ripetitivi.
- User-Agent sospetto o mancante.
- Assenza di cookie o JavaScript.
- IP riconosciuti come datacenter.
- Nessuna interazione con CAPTCHA o elementi dinamici.
Tecniche per non farsi bloccare
Vediamo come fare scraping in modo discreto e duraturo. La prima strategia prevede di impostare un User-Agent realistico, molti siti bloccano infatti le richieste che non sembrano provenire da un browser.
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64)...');
È poi utile usare dei Proxy Rotanti. Questo perché gli IP sono spesso bannati dopo un certo numero di richieste.
- Usa proxy residenziali o mobile per sembrare un utente reale.
- Servizi come BrightData o ScraperAPI offrono pool dinamici.
Il rate limiting ci ricorda inoltre che non è buona norma martellare i server. Meglio quindi effettuare delle pause tra le varie richieste.
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
await sleep(3000); // 3 secondi di attesa
Framework come Puppeteer o Playwright simulano un vero browser eseguendo JavaScript e caricando cookies.
const browser = await puppeteer.launch({ headless: false });
Ma è altrettanto importante gestire cookie e sessioni. Accedi quindi al sito come un utente reale, salvando i cookie per sessioni successive.
const cookies = await page.cookies();
fs.writeFileSync('cookies.json', JSON.stringify(cookies));
Evita infine reCAPTCHA e blocchi dei bot.
- Fai click e scroll casuali.
- Usa servizi di riconoscimento CAPTCHA.
- Analizza i robots.txt.
Estrarre Tweet da una pagina pubblica
Supponiamo di voler analizzare i tweet pubblici di un profilo, senza API.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 ...');
await page.goto('https://twitter.com/somepublicprofile', { waitUntil: 'networkidle2' });
await page.waitForSelector('article');
const tweets = await page.evaluate(() => {
const nodes = document.querySelectorAll('article div[lang]');
return Array.from(nodes).map(el => el.innerText);
});
console.log(tweets);
await browser.close();
})();
Questo script apre X, attende i contenuti, e raccoglie i tweet visibili. Attenzione: i siti cambiano spesso struttura, quindi bisogna aggiornare frequentemente il selettore.
Quando è legale (e quando no)
Sono legali:
- Raccolta di dati pubblici.
- Scraping etico, con pause e limiti.
- Ricerca, analisi accademica o testing.
Sono illegali o rischiosi:
- Superare barriere di sicurezza (CAPTCHA, login obbligatori).
- Scraping di dati personali senza consenso.
- Clonazione massiva di contenuti protetti.
- Vendita o uso commerciale non autorizzato.
Consiglio: Leggi i TOS del sito. Alcuni vietano esplicitamente lo scraping automatizzato.
OSINT Tools consigliati
Per chi vuole andare oltre il codice, ecco strumenti OSINT efficaci:
- Shodan: scansioni dispositivi esposti.
- SpiderFoot: automazione OSINT.
- Maltego: visualizzazione dati relazionali.
- theHarvester: raccolta email e sottodomini.
- Wayback Machine: pagine archiviate.
Conclusione
Fare scraping in modo efficace, rispettoso e non invasivo è possibile. Le tecniche che abbiamo visto — dalla gestione intelligente degli IP alla simulazione del comportamento utente — sono fondamentali per ogni sviluppatore o analista OSINT. Ma il vero valore non sta solo nel codice: sta nell'etica con cui usiamo queste tecnologie.
L'OSINT è uno strumento potente per raccogliere dati a fini investigativi, aziendali, educativi o di ricerca. Ma ogni volta che interagiamo con una piattaforma online dobbiamo ricordarci che, dall'altra parte, c'è chi quei dati li ha organizzati e resi disponibili, spesso a caro prezzo.
Raccogliere dati pubblici va bene, ma con intelligenza, discrezione e responsabilità.