Scarnox · Blog

Browser headless rilevato: cause e soluzioni (2026)

Un sito mostra "headless browser detected", oppure serve in silenzio una pagina diversa al tuo browser automatizzato. I siti lo fanno perché un browser headless gira senza finestra e spesso differisce da un normale browser desktop in piccoli dettagli misurabili. Questa guida spiega quali segnali osservano i siti, come capire cosa espone il tuo browser e che aspetto ha una correzione sensata. Tratta anche il punto in cui la risposta giusta è fermarsi, oppure trattare il controllo come un passaggio captcha.

Perché i siti controllano i browser headless

Gli strumenti di automazione pilotano un vero motore di browser, quindi gran parte della pagina funziona allo stesso modo. Le differenze emergono ai margini:

I siti combinano questi segnali in un punteggio. Un punteggio basso può significare un declassamento silenzioso, una serie di controlli aggiuntivi o un blocco.

Passo 1: verifica cosa espone il tuo browser

Prima di cambiare qualsiasi cosa, guarda cosa può leggere una pagina dalla tua automazione. Lo script qui sotto apre una pagina che controlli e stampa i segnali che contano. È una diagnostica: usala sulle tue pagine di test, non per sondare sistemi altrui.

from playwright.sync_api import sync_playwright

CHECK = """() => ({
    webdriver: navigator.webdriver,
    languages: navigator.languages,
    plugins: navigator.plugins.length,
    userAgent: navigator.userAgent,
    screen: [screen.width, screen.height],
    viewport: [window.innerWidth, window.innerHeight],
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
})"""

with sync_playwright() as p:
    browser = p.chromium.launch(headless=True)
    page = browser.new_page()
    page.goto("https://example.com")  # sostituisci con una pagina di tua proprietà
    print(page.evaluate(CHECK))
    browser.close()

Esegui lo stesso script con headless=False, poi confronta i due output. Le differenze sono ciò che un sito potrebbe notare.

Passo 2: correggi le incoerenze, non solo i flag

Nascondere un solo flag lasciando invariati gli altri è l'errore più comune. Un user agent che dichiara Windows, mentre i font, il fuso orario e le dimensioni dello schermo descrivono un server Linux, è un segnale più forte di una singola proprietà. Punta a un ambiente internamente coerente:

Playwright ti permette di impostarne diversi in un solo punto:

context = browser.new_context(
    locale="en-US",
    timezone_id="America/New_York",
    viewport={"width": 1366, "height": 768},
)
page = context.new_page()

Passo 3: rallenta e comportati come un visitatore

L'automazione diventa evidente quando è più veloce di quanto una persona possa essere. Aggiungi pause realistiche tra un caricamento di pagina e l'altro, evita di cliccare lo stesso elemento con un ritmo perfetto e non aprire centinaia di pagine in parallelo dallo stesso indirizzo. Fare meno richieste, più lente, riduce anche il carico sul sito, che è la cosa giusta da fare comunque.

Passo 4: riconosci quando il controllo è un captcha

Alcuni flussi di rilevamento finiscono in una sfida anziché in un blocco. Vedrai un widget captcha, e quel passaggio richiede un token da un solver. Il tipo di captcha attivo oggi su Scarnox è PopularCaptcha. La guida Python per PopularCaptcha mostra come il token viene richiesto e inviato. Altri widget, come Cloudflare Turnstile, sono nella roadmap ma non ancora attivi, quindi verifica i tipi di captcha spiegati prima di pianificare su uno di essi.

Un passaggio captcha non significa che il resto della configurazione sia corretta. Se lo stesso sito blocca ogni sessione headless qualunque sia la configurazione, è un segnale chiaro che il titolare non vuole accesso automatizzato. Rispettalo.

Cosa non fare

Non cercare di nascondere l'automazione a un sito che la vieta, e non usare strumenti di evasione del rilevamento per superare controlli di accesso. È un progetto diverso dai test e dalla raccolta di dati pubblici trattati in questa guida. Se il tuo progetto richiede un accesso che non ti è stato concesso, chiedi al titolare del sito oppure cerca un'API ufficiale o un feed di dati.

Scraping responsabile

Dove andare da qui

Se la tua automazione serve per test end-to-end, l'approccio è diverso: vedi captcha nei test automatizzati. Se usi una configurazione Playwright o Puppeteer, gestione dei captcha con Playwright e Puppeteer spiega dove va il token.

Inizia con il credito di prova gratuito, senza carta: crea un account e testa il flusso PopularCaptcha su una tua pagina. Per le tariffe attuali, consulta la pagina dei prezzi.

Passi successivi