puppeteer-extra-plugin-stealth è il pacchetto anti-rilevamento più diffuso per Puppeteer. Registra ancora oltre 600K download settimanali su npm. Non riceve aggiornamenti da marzo 2023. La versione 2.11.2 è l'ultima release e resterà tale: la manutenzione è inattiva, le issue su GitHub si accumulano e i sistemi anti-bot si sono evoluti.
TL;DR: I plugin stealth correggono i segnali di rilevamento con override JavaScript a livello di pagina. Nel 2026, i sistemi anti-bot come Cloudflare, Akamai e DataDome controllano segnali che JavaScript non può raggiungere: impronte TLS, artefatti del protocollo CDP e differenze di rendering a livello di motore. La soluzione non è un plugin migliore. È un livello diverso: un driver patchato che nasconde le perdite del protocollo o un browser patchato che gestisce le impronte a livello di motore.
Cosa fanno realmente i plugin stealth
puppeteer-extra-plugin-stealth include 11 moduli di evasione eseguiti tramite evaluateOnNewDocument. Ogni modulo corregge una superficie di rilevamento:
| Modulo | Cosa corregge |
|---|---|
webdriver |
Removes navigator.webdriver = true |
chrome.runtime |
Fakes the chrome.runtime object |
chrome.csi / chrome.app |
Adds missing Chrome API stubs |
navigator.plugins |
Spoofs the plugin array |
navigator.languages |
Overrides language settings |
navigator.permissions |
Fixes permission query behavior |
media.codecs |
Spoofs codec support |
sourceurl |
Hides //# sourceURL from injected scripts |
iframe.contentWindow |
Fixes cross-origin iframe detection |
webgl.vendor |
Spoofs WebGL vendor/renderer strings |
user-agent-override |
Sets a realistic User-Agent header |
Queste patch funzionavano nel 2021-2022, quando i sistemi anti-bot controllavano principalmente le proprietà JavaScript a livello di pagina. Non funzionano contro ciò che i sistemi di rilevamento moderni verificano realmente.
Perché i plugin stealth falliscono nel 2026
Il rilevamento anti-bot si è spostato sotto il livello JavaScript. I segnali rilevanti ora sono quelli che evaluateOnNewDocument non può raggiungere.
Perdite del protocollo CDP
Quando Puppeteer si connette a Chrome, invia comandi CDP come Runtime.enable, Page.enable e Network.enable. Questi comandi lasciano artefatti nello stato interno del browser che gli script anti-bot possono rilevare. Il plugin stealth non tocca il CDP perché opera a livello di pagina, non a livello di protocollo.
Il solo comando Runtime.enable basta per identificare una sessione automatizzata. Nessuna patch a livello di pagina nasconde il fatto che sono stati emessi comandi CDP.
Impronta TLS
Cloudflare verifica le impronte TLS (JA3/JA4) prima di servire qualsiasi HTML. Se l'impronta TLS è errata, la sessione riceve un challenge o un blocco prima ancora che le patch JavaScript del plugin stealth vengano caricate. Il plugin opera a livello di pagina e non ha accesso al livello TLS. Per una spiegazione completa di come funziona l'impronta TLS nello stack di rilevamento, consulta la sezione livello di rete in Automazione browser senza blocchi.
Rilevamento degli override JavaScript
Gli script anti-bot non controllano solo il valore di navigator.webdriver. Controllano il property descriptor. Un browser reale ha webdriver definito come getter nativo sul prototipo Navigator. Il plugin stealth lo sovrascrive con Object.defineProperty, modificando il flag configurable del descriptor e l'output toString() della funzione getter. Gli script di rilevamento testano queste discrepanze.
Lo stesso vale per altri override. chrome.runtime, gli array di plugin e le query sui permessi presentano differenze rilevabili quando le loro implementazioni native vengono sostituite con stub JavaScript.
Differenze di rendering headless
Anche con --headless=new (la modalità headless più recente), Chrome esegue il rendering in modo leggermente diverso dal Chrome con interfaccia grafica. Le metriche dei font, l'output canvas accelerato da GPU e le API delle dimensioni dello schermo differiscono. Il plugin stealth corregge alcune proprietà del navigator ma non può modificare il comportamento del motore di rendering.
Cosa ha sostituito i plugin stealth
L'ecosistema si è diviso in due approcci: driver patchati (correggono il livello di protocollo) e browser patchati (correggono il livello del motore). Risolvono problemi diversi.
Driver patchati: Rebrowser e Patchright
Rebrowser fornisce sostituzioni dirette per Puppeteer e Playwright (rebrowser-puppeteer, rebrowser-playwright). Le patch mirano agli artefatti del protocollo CDP: modificano il modo in cui Runtime.enable e altri comandi interagiscono con il browser per evitare di lasciare tracce rilevabili. Si sostituisce il nome del pacchetto nel codice e tutto il resto resta invariato.
// Before: detected
const puppeteer = require('puppeteer');
// After: CDP artifacts patched
const puppeteer = require('rebrowser-puppeteer');Patchright fa lo stesso per Playwright, con focus su Python. Corregge le perdite di Runtime.enable ed è mantenuto attivamente.
Limitazione: I driver patchati correggono il rilevamento del protocollo ma non affrontano il fingerprinting del browser. Se il sito verifica Canvas, WebGL, AudioContext o il rendering dei font, resti esposto. I driver patchati rispondono alla domanda "sei automatizzato?" ma non a "sei un dispositivo reale?".
Browser patchati: motori anti-rilevamento
Un browser patchato modifica Chromium affinché i segnali di impronta siano coerenti a livello di motore. L'output Canvas, il rendering WebGL, i dati AudioContext, le metriche dei font, le dimensioni dello schermo, il fuso orario e la locale riportano valori corrispondenti a un profilo di dispositivo reale.
Questo è ciò che fa Clawbrowser. È un fork di Chromium con patch di impronta a livello di motore su oltre 20 superfici, routing proxy integrato, prevenzione delle perdite WebRTC e supporto CDP nativo. Il codice Puppeteer o Playwright esistente si connette tramite CDP:
from playwright.async_api import async_playwright
async def automate_without_detection():
async with async_playwright() as p:
# Connect to Clawbrowser instead of stock ChromeCosa gestisce che i plugin stealth non possono:
- Coerenza Canvas/WebGL/AudioContext a livello di motore (non stub JavaScript)
- Impronta TLS corrispondente a una sessione Chrome reale
- Connessione CDP senza artefatti
Runtime.enable - Prevenzione delle perdite WebRTC a livello di browser
- Routing proxy con allineamento geografico integrato
Per il dettaglio completo di ciò che viene sottoposto a fingerprinting, consulta Impronta digitale del browser: i 20+ segnali usati dai sistemi anti-bot.
Come scegliere
Lo strumento giusto dipende da cosa ti sta rilevando.
| Tipo di rilevamento | Sintomo | Soluzione |
|---|---|---|
| CDP protocol artifacts | Blocked immediately on page load, no CAPTCHA | Patched driver (Rebrowser, Patchright) |
| Browser fingerprint mismatch | CAPTCHA on every page, or silent data differences | Patched browser (Clawbrowser) |
| TLS fingerprint mismatch | Blocked before page loads (403 on first request) | Patched browser with proxy routing |
| IP reputation | Blocked from datacenter IPs | Residential proxy (any approach) |
| Behavioral detection | Blocked after 5-10 pages | Timing and session management in your code |
Quando i driver patchati bastano
Se automatizzi siti con rilevamento base che controlla artefatti CDP senza fare fingerprinting approfondito del browser, Rebrowser o Patchright funzioneranno. Questo copre molti siti con configurazioni anti-bot più leggere.
Quando serve un browser patchato
Se il sito usa Cloudflare Bot Management, Akamai Bot Manager, DataDome o PerimeterX, serve coerenza di impronta a livello di motore. Le patch a livello di pagina e a livello di driver non bastano quando il rilevamento controlla oltre 20 superfici del browser simultaneamente.
Clawbrowser è un browser anti-rilevamento locale, gratuito, basato su Chromium con impronte gestite, routing proxy, CDP nativo e un server MCP integrato. Gestisce l'identità del browser e i livelli di rete, così il codice si occupa solo del comportamento e della gestione delle sessioni.
Migrare dai plugin stealth
Se attualmente usi puppeteer-extra-plugin-stealth o playwright-stealth, la migrazione a Clawbrowser richiede meno di cinque minuti.
Prima (plugin stealth)
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({ headless: false });Dopo (Clawbrowser)
const puppeteer = require('puppeteer-core');
// Connect to Clawbrowser over CDP
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222'La differenza chiave: rimuovi puppeteer-extra e puppeteer-extra-plugin-stealth dalle dipendenze. Nessuna configurazione di plugin. Nessuna selezione di moduli di evasione. L'anti-rilevamento avviene a livello di browser, non nel codice.
Per pattern specifici di scraping (paginazione, riscaldamento sessione, bypass Cloudflare), consulta Web Scraping senza essere rilevati.
FAQ
puppeteer-extra-stealth è completamente inutile?
Funziona ancora su siti senza sistema anti-bot commerciale. Se il sito target controlla solo navigator.webdriver e proprietà JavaScript base, il plugin stealth basta. Ma qualsiasi sito con Cloudflare, Akamai, DataDome, PerimeterX o piattaforme social come Facebook, Instagram, LinkedIn e X lo rileverà.
playwright-stealth ha gli stessi problemi?
Sì. playwright-stealth usa lo stesso approccio: override JavaScript tramite iniezione a livello di pagina. Non può raggiungere impronte TLS, artefatti CDP o rendering a livello di motore. I limiti di rilevamento sono identici.
Si possono usare Rebrowser e Clawbrowser insieme?
Non è necessario. Clawbrowser gestisce sia il livello protocollo che il livello impronta. Le patch di Rebrowser sono utili quando si usa Chrome standard e non si può passare a un browser anti-rilevamento. Se usi Clawbrowser, gli artefatti CDP sono già gestiti.
Perché stealth ha ancora 600K download a settimana?
Inerzia. La maggior parte dei tutorial e delle risposte su Stack Overflow lo raccomanda ancora. Gli sviluppatori copiano soluzioni che funzionavano nel 2022 senza verificare se il pacchetto è ancora mantenuto. L'alto numero di download non significa che sia efficace contro il rilevamento moderno.
Smetti di patchare, inizia a risolvere
I plugin stealth erano una soluzione ragionevole quando il rilevamento anti-bot si basava su controlli a livello JavaScript. Il rilevamento si è spostato su impronte TLS, analisi del protocollo CDP e differenze di rendering a livello di motore. Patchare a livello di pagina non può raggiungere questi segnali.
Installa Clawbrowser per gestire il rilevamento a livello di browser: copia il prompt di installazione da clawbrowser.ai e incollalo nel tuo agente IA. Rimuovi puppeteer-extra e puppeteer-extra-plugin-stealth dalle dipendenze. Connetti il codice Puppeteer o Playwright esistente tramite CDP. L'anti-rilevamento è nel browser, non nel codice.
Per il modello di rilevamento sottostante, consulta Automazione browser senza blocchi: lo stack di difesa a 4 livelli.
Continue exploring
Ask AI how Clawbrowser helps
Continua a leggere
Articoli correlati

Automazione Browser Senza Blocchi: Le 4 Difese Che Servono Davvero
Perché l'automazione del browser viene bloccata e come risolvere ogni livello: identità del browser, rete, comportamento e gestione delle sessioni. Guida strutturale per sviluppatori.
Leggi l’articolo →
Web scraping senza essere rilevati: tecniche che reggono
Guida pratica al web scraping: ricognizione, HTTP o browser, estrazione dati, paginazione, sessioni e scala con Playwright.
Leggi l’articolo →