DataDome Detection: Come Funziona il Rilevamento e Come Passare Puliti con Proxy Residenziali

Analisi tecnica dello stack di rilevamento DataDome — JA3/JA4, fingerprint browser, reputazione IP. Scopri come configurare l'accesso legittimo con proxy residenziali e browser stealth.

DataDome Detection: Come Funziona il Rilevamento e Come Passare Puliti con Proxy Residenziali

Perché DataDome Blocca il Tuo Scraper

Se fai web scraping professionale, prima o poi ti sei scontrato con DataDome. Il risultato è sempre lo stesso: una pagina CAPTCHA, un cookie datadome che cambia ad ogni tentativo, e il tuo scraper che smette di ricevere dati. Non è un caso — DataDome è uno dei sistemi anti-bot più aggressivi sul mercato, e blocca con precisione chirurgica tutto ciò che non sembra un browser reale.

Ma come fa esattamente a riconoscere il tuo script? E, più importante, come puoi configurare l'automazione legittima — ricerca di sicurezza, monitoraggio prezzi autorizzato, QA — per passare pulito senza attivare i controlli?

In questo articolo analizziamo lo stack di rilevamento DataDome a fondo: fingerprint TLS, segnali browser, reputazione IP e analisi comportamentale. Poi ti mostriamo come configurare un setup pulito con proxy residenziali e browser stealth, rispettando i limiti etici.

Lo Stack di Rilevamento DataDome

DataDome non si basa su un singolo segnale. Usa un approccio multi-layer dove ogni livello aggiunge probabilità che la richiesta sia automatizzata. Se anche superi un layer, il successivo ti ferma. Ecco i quattro livelli principali.

1. Reputazione IP e Analisi ASN

La prima cosa che DataDome controlla è il tuo indirizzo IP. Non semplicemente la posizione geografica — analizza:

  • Database IP commerciali: DataDome acquista feed da provider come IP2Proxy, IPQualityScore e altri. Se il tuo IP compare in queste liste come proxy/VPN/datacenter, sei immediatamente flaggato.
  • Analisi ASN: Se il tuo IP appartiene a un ASN noto come hosting provider (Hetzner, DigitalOcean, OVH, AWS), DataDome sa che non è un utente residenziale. Gli ASN vengono classificati automaticamente.
  • Cronologia dell'IP: Se l'IP ha generato traffico bot in passato — anche da altri clienti DataDome — la sua reputazione è già compromessa.

Questo è il motivo principale per cui i proxy datacenter falliscono contro DataDome. L'ASN li tradisce prima ancora che il traffico raggiunga il server.

2. TLS Fingerprinting (JA3/JA4)

Anche prima che il server HTTP riceva la richiesta, il handshake TLS rivela informazioni critiche. DataDome usa il fingerprinting JA3 e il più recente JA4 per profilare il client TLS:

  • JA3: Un hash MD5 calcolato dall'ordine delle cipher suites, delle estensioni TLS e delle elliptic curves. Ogni browser ha un JA3 caratteristico. Un client Python requests ha un JA3 completamente diverso da Chrome.
  • JA4: Evoluzione di JA3 che include ALPN, la versione TLS e altre estensioni. Più resistente alle collisioni e più granulare.

Il punto chiave: l'ordine delle cipher suites è un segnale fortissimo. Chrome su Windows ordina TLS_AES_128_GCM_SHA256 prima di TLS_CHACHA20_POLY1305_SHA256. Se il tuo client HTTP inverte quest'ordine, DataDome lo nota immediatamente.

Un JA3 mismatch è spesso sufficiente per un block immediato. DataDome mantiene un database di fingerprint legittimi per ogni combinazione browser/OS e confronta ogni connessione in tempo reale.

3. Browser Fingerprinting

Una volta superato il TLS, DataDome esegue JavaScript nel browser per raccogliere decine di segnali:

  • Canvas fingerprint: Disegna forme geometriche su un canvas HTML5 e legge i pixel risultanti. Differenze nel rendering tra GPU e driver producono hash unici. Un browser headless spesso restituisce un canvas vuoto o un pattern anomalo.
  • WebGL fingerprint: Estensione del canvas che legge parametri specifici della GPU — vendor string, renderer string, estensioni supportate. I browser headless spesso espongono valori come SwiftShader che li identificano immediatamente.
  • Audio fingerprint: Usa l'API Web Audio per generare un suono e analizzare l'output. L'AudioContext in un headless produce risultati diversi.
  • Navigator properties: navigator.platform, navigator.languages, navigator.plugins. Un browser automatizzato spesso ha valori inconsistenti — per esempio platform: Win32 ma languages: [].
  • Screen e viewport: Dimensioni dello schermo, colorDepth, pixelRatio. Un headless spesso ha screen.width = 0 o valori non coerenti.

DataDome non guarda un singolo segnale — combina tutto in un composite score. Un canvas leggermente anomalo combinato con un navigator sospetto è sufficiente per un blocco.

4. Segnali Comportamentali

L'ultimo layer è il più sottile: DataDome analizza come interagisci con la pagina:

  • Dinamica del mouse: Movimenti curvi e naturali vs linee rette perfette. Un bot si muove dal punto A al punto B in linea retta con velocità costante.
  • Pattern di scroll: Scroll fluido con accelerazione/decelerazione vs salti improvvisi.
  • Timing tra azioni: Un utente reale impiega 200-800ms per leggere un elemento e cliccare. Uno script impiega 5ms.
  • Event order: mousedownmouseupclick. Se manca uno di questi, è sospetto.

Il Cookie datadome e il Flusso CAPTCHA

Quando DataDome decide che una richiesta è sospetta, non blocca immediatamente — lancia una challenge:

  1. La prima richiesta riceve un cookie datadome con un session ID.
  2. Se il composite score è borderline, DataDome serve una CAPTCHA challenge (tipicamente hCaptcha).
  3. Se il supera, il cookie viene aggiornato con un token di validazione.
  4. Le richieste successive portano il cookie e vengono valutate di nuovo — il punteggio si aggiorna continuamente.

Questo significa che non puoi semplicemente risolvere una CAPTCHA e continuare. DataDome rivaluta ogni richiesta. Se il tuo comportamento successivo è ancora bot-like, il cookie viene invalidato.

Il cookie datadome è crittografato e legato al fingerprint originale. Non puoi copiarlo tra sessioni o browser — è vincolato al contesto in cui è stato generato.

Perché i Proxy Residenziali e Mobile Contano

Il layer IP è il primo filtro di DataDome. Se il tuo IP è già flaggato, tutto il resto non importa — sei bloccato prima ancora di arrivare al fingerprinting.

Tipo di ProxyASNRischio DataDomeCasi d'Uso
DatacenterHosting provider (OVH, AWS, ecc.)Alto — blocco immediato nella maggior parte dei casiTesting interno, API non protette
ResidenzialiISP reali (Comcast, Vodafone, Telecom)Basso — IP associato a utenti realiScraping SERP, monitoraggio prezzi, ricerca
MobileOperatori mobili (Vodafone, T-Mobile, AT&T)Molto basso — IP altamente affidabileSocial media, app mobile, casi ad alta restrizione

I proxy residenziali usano IP assegnati a ISP reali. Quando DataDome controlla l'ASN, vede AS7922 Comcast invece di AS16509 Amazon. Questo fa una differenza enorme nel composite score.

I proxy mobile sono ancora più affidabili perché gli IP mobili hanno rotazione naturale — i carrier riutilizzano gli IP frequentamente, quindi DataDome non può bloccarli aggressivamente senza colpire utenti reali.

Con ProxyHat, puoi geo-targettare i proxy per corrispondere al pubblico del sito:

  • user-country-US — IP residenziale americano
  • user-country-DE-city-berlin — IP residenziale tedesco, specifico per Berlino
  • user-country-FR — IP residenziale francese

Accesso Legittimo: Setup Tecnico

Ora vediamo come configurare un setup pulito. L'obiettivo è far sembrare il traffico come quello di un utente reale — perché è un utente reale che usa un browser reale, solo automatizzato.

Python: Playwright Stealth + Proxy Residenziali

Playwright con il plugin stealth è la scelta migliore per l'automazione legittima. Il plugin patcha le detection note del browser headless:

from playwright.sync_api import sync_playwright
from playwright_stealth import stealth_sync
import time
import random

PROXY = {
    "server": "http://gate.proxyhat.com:8080",
    "username": "user-country-US",
    "password": "PASSWORD"
}

def human_delay(min_s=0.5, max_s=2.0):
    """Simula un ritardo umano variabile."""
    time.sleep(random.uniform(min_s, max_s))

def human_scroll(page, iterations=3):
    """Scroll naturale con accelerazione e decelerazione."""
    for i in range(iterations):
        scroll_y = random.randint(200, 600)
        page.mouse.wheel(0, scroll_y)
        human_delay(0.3, 1.0)

with sync_playwright() as p:
    browser = p.chromium.launch(
        headless=False,  # Headed è più naturale per DataDome
        proxy=PROXY
    )
    context = browser.new_context(
        viewport={"width": 1920, "height": 1080},
        locale="en-US",
        timezone_id="America/New_York",
        user_agent=(
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
            "AppleWebKit/537.36 (KHTML, like Gecko) "
            "Chrome/125.0.0.0 Safari/537.36"
        ),
    )
    page = context.new_page()
    stealth_sync(page)

    page.goto("https://example.com", wait_until="networkidle")
    human_delay(1.0, 3.0)
    human_scroll(page)
    human_delay(0.5, 1.5)

    # Interazione umana prima di estrarre dati
    content = page.content()
    print(f"Pagina caricata: {len(content)} caratteri")

    browser.close()

Note importanti:

  • headless=False — Un browser headed ha un fingerprint più pulito perché il rendering è identico a quello visibile.
  • Il proxy è geo-targettato — se lo scraper è per un sito americano, usi un IP americano.
  • Le interazioni sono umane — scroll e delay variabili, non timing meccanico.

Node.js: Puppeteer-extra Stealth + Proxy Residenziali

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

puppeteer.use(StealthPlugin());

async function humanScroll(page) {
  const scrollY = random.int(200, 600);
  await page.mouse.wheel(0, scrollY);
  await new Promise(r => setTimeout(r, random.int(300, 1000)));
}

(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    args: [
      '--proxy-server=http://gate.proxyhat.com:8080',
      '--disable-blink-features=AutomationControlled',
    ],
  });

  const page = await browser.newPage();
  await page.authenticate({
    username: 'user-country-US',
    password: 'PASSWORD',
  });

  // Viewport e UA coerenti
  await page.setViewport({ width: 1920, height: 1080 });
  await page.setUserAgent(
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' +
    'AppleWebKit/537.36 (KHTML, like Gecko) ' +
    'Chrome/125.0.0.0 Safari/537.36'
  );

  await page.goto('https://example.com', {
    waitUntil: 'networkidle2',
  });

  // Ritardo umano
  await new Promise(r => setTimeout(r, random.int(1000, 3000)));
  await humanScroll(page);
  await new Promise(r => setTimeout(r, random.int(500, 1500)));

  const title = await page.title();
  console.log('Titolo:', title);

  await browser.close();
})();

curl: Verifica TLS e Reputazione IP

Per test rapidi, puoi usare curl per verificare che il proxy residenziale risponda correttamente e che il TLS sia pulito:

# Test con proxy residenziale USA tramite ProxyHat
curl -x "http://user-country-US:PASSWORD@gate.proxyhat.com:8080" \
     -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" \
     -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
     -H "Accept-Language: en-US,en;q=0.9" \
     -v \
     "https://httpbin.org/ip"

# Verifica il JA3 del tuo client (usa un tool esterno come ja3er.com)
# Se il JA3 non corrisponde a un browser reale, DataDome lo rileverà.

Nota: curl da solo non supererà DataDome perché il suo TLS fingerprint non corrisponde a nessun browser. Usa curl solo per verificare che il proxy funziona e che l'IP è residenziale.

Configurazioni Avanzate per Passare Puliti

Rotazione IP e Sessioni Sticky

DataDome traccia le sessioni. Se il tuo IP cambia ad ogni richiesta ma il fingerprint browser rimane lo stesso, è sospetto. La strategia migliore è usare sessioni sticky — mantieni lo stesso IP per l'intera sessione di browsing, poi ruoti:

# Sessione sticky con ProxyHat — mantieni lo stesso IP per 10 minuti
PROXY = {
    "server": "http://gate.proxyhat.com:8080",
    "username": "user-country-US-session-myresearch123",
    "password": "PASSWORD"
}

Il flag session-myresearch123 garantisce che tutte le richieste con quello username usino lo stesso IP per la durata della sessione. Quando vuoi un IP nuovo, cambia l'ID sessione.

Coerenza del Fingerprint

Uno degli errori più comuni: User-Agent Windows con navigator.platform = MacIntel, o Accept-Language: it con IP americano. DataDome incrocia tutti questi segnali. Regole d'oro:

  • Geo-coerenza: Se il tuo IP è americano, usa Accept-Language: en-US e timezone: America/New_York.
  • UA-coerenza: Se dichiari Chrome su Windows, assicurati che navigator.platform sia Win32 e che navigator.plugins sia coerente.
  • Screen-coerenza: Non dichiarare un viewport 1920x1080 su un device che dovrebbe avere 375x812.

Gestione del TLS Fingerprint

Il modo più pulito per gestire il JA3/JA4 è usare un browser reale (Playwright/Puppeteer) che genera automaticamente un fingerprint legittimo. Se devi usare un client HTTP lower-level, strumenti come curl-impersonate o tls-client possono emulare il TLS fingerprint di browser specifici:

# curl-impersonate emula il JA3 di Chrome
curl-impersonate-chrome \
  -x "http://user-country-US:PASSWORD@gate.proxyhat.com:8080" \
  "https://example.com"

Ma attenzione: curl-impersonate risolve il TLS ma non il browser fingerprinting. Se DataDome serve JavaScript, hai ancora bisogno di un browser reale.

Considerazioni Etiche

DataDome esiste per proteggere siti da abuso reale — credential stuffing, scalping aggressivo, DDoS applicativo. Quando automatizzi l'accesso a un sito protetto, la tua responsabilità è:

  • Rispettare i rate limits: Non bombardare il server. Usa ritardi tra le richieste che rispecchiano il comportamento umano.
  • Non usare CAPTCHA solver: Se DataDome ti serve una CAPTCHA, significa che il sito non vuole traffico automatizzato. Risolverla con servizi di terze parti è una violazione dei termini del sito.
  • Verificare robots.txt: Prima di fare scraping, controlla se il sito lo permette.
  • Considerare le API ufficiali: Molti siti offrono API pubbliche per i dati che ti servono.

L'automazione legittima — ricerca di sicurezza, testing autorizzato, monitoraggio di dati pubblici — ha tutto il diritto di usare proxy residenziali per accedere a contenuti pubblici. Ma il modo in cui lo fai deve essere pulito e rispettoso.

Quando DataDome Significa "Usa l'API Ufficiale"

Non tutti i siti protetti da DataDome sono appropriati per lo scraping. Alcuni casi in cui dovresti cercare alternative:

  • Publisher di notizie major: Molti offrono API ufficiali tramite programmi partner. Lo scraping diretto viola i termini e rischia azioni legali.
  • Piattaforme e-commerce chiuse: Alcuni marketplace (es. Amazon) hanno API ufficiali per venditori e affiliate. Usale.
  • Siti con dati personali sensibili: Se i dati sono protetti da GDPR o CCPA, lo scraping senza consenso è illegale, indipendentemente dalla tecnica.

La regola è semplice: se un sito offre un'API ufficiale per i dati che ti servono, usala. Se non la offre e i dati sono pubblici, l'automazione legittima con proxy residenziali è un approccio ragionevole — ma sempre nel rispetto dei limiti del sito.

Key Takeaways

  • DataDome usa un approccio multi-layer: reputazione IP, TLS fingerprint (JA3/JA4), browser fingerprint (canvas, WebGL, audio, navigator), e segnali comportamentali. Superare un solo layer non basta.
  • I proxy datacenter sono immediatamente bloccati: l'ASN li tradisce. Usa proxy residenziali o mobile con geo-targetting coerente.
  • Il TLS fingerprint è il primo ostacolo: usa un browser reale (Playwright/Puppeteer stealth) per avere un JA3 legittimo, o curl-impersonate per client HTTP.
  • La coerenza del fingerprint è critica: UA, lingua, timezone, viewport e posizione IP devono essere coerenti tra loro.
  • Le sessioni sticky sono migliori della rotazione per-request: mantieni lo stesso IP per una sessione completa, poi ruota.
  • Non usare CAPTCHA solver: se DataDome ti serve una CAPTCHA, fermati e rivaluta il tuo approccio.
  • Quando esiste un'API ufficiale, usala: non tutti i siti DataDome-protetti sono appropriati per lo scraping.

Configurare ProxyHat per l'Accesso Legittimo

ProxyHat offre proxy residenziali e mobile in oltre 190 paesi, con geo-targetting a livello di città e sessioni sticky. Questo è esattamente ciò che serve per passare pulito attraverso DataDome:

  • IP residenziali reali — ASN di ISP veri, non datacenter
  • Geo-targetting — corrispondenza perfetta tra IP e contesto browser
  • Sessioni sticky — lo stesso IP per l'intera sessione di browsing
  • Rotazione intelligente — un nuovo IP quando serve, senza pattern sospetti

Scopri i piani su ProxyHat Pricing o esplora le locations disponibili.

Per approfondire le strategie di web scraping legittimo, consulta la nostra guida su web scraping con proxy residenziali e il caso d'uso SERP tracking.

Pronto per iniziare?

Accedi a oltre 50M di IP residenziali in oltre 148 paesi con filtraggio AI.

Vedi i prezziProxy residenziali
← Torna al Blog