Guide
Automazione Headless del Browser con Nodi Puppeteer/Browserless
Se i tuoi flussi dipendono da pagine che caricano contenuti via JavaScript, l’estrazione con semplici richieste HTTP spesso fallisce. Con l’automazione headless del browser con n8n puoi rendere affidabile scraping, test e generazione di asset (screenshot/PDF) orchestrando un “vero” Chromium in cloud. In questa guida creiamo integrazioni scalabili con Browserless tramite il nodo universale n8n-nodes-base.httpRequest: collegherai l’API con un’API key, eseguirai azioni come /screenshot e /pdf, controllerai sessioni persistenti e userDataDir, e costruirai pipeline robuste con retry, timeout e rate limiting. Vedrai anche come introdurre modalità stealth e anti‑bot, rotazione proxy e fingerprinting, oltre a casi avanzati come audit SEO su HTML renderizzato e agenti LLM per navigazione web (sempre nel rispetto di robots.txt e termini d’uso). Chiudiamo con una checklist di messa in produzione, osservabilità, metriche e controllo costi.
📚 Nuovo a n8n? Parti dalla guida completa: cos’è n8n e come funziona.
[IMG: panoramica pipeline: Trigger → HTTP Request (Browserless) → Post‑process → CRM/DB → Report/Alert]
Perché un “real browser” dentro n8n: vantaggi e limiti
Lato vantaggi:
- browser headless in automazione esegue JS e attende il rendering: utile per app single page, A/B test, lazy load, infinite scroll
- Playwright e rendering lato client permettono di catturare screenshot e DOM “come utente reale”, con viewport, locale, cookie e user agent
- puppeteer via API remota (Browserless) evita manutenzione di Chromium/driver; paghi solo l’uso e ottieni endpoint standardizzati (/scrape, /screenshot, /pdf, /performance, /sessions, /metrics, /unblock, /liveURL, /stealth)
Rispetto a richieste HTTP semplici:
- più affidabile su siti dinamici e anti‑bot, con possibilità di modalità stealth e anti‑bot e rotazione proxy e fingerprinting
- puoi orchestrare login → navigazione → estrazione con selettori CSS e XPath per scraping → invio a CRM/DB
Limiti e considerazioni:
- latenza e costo superiori a una singola GET HTTP
- blocchi anti‑bot e CAPTCHA possibili (serve strategia di evasione lecita o fallback)
- responsabilità legale: conformità a robots.txt e termini d’uso dei siti target; attenzione a privacy e dati sensibili
Insight operativo: separa “ingaggio” (login/sessione) dall’estrazione. Le sessioni persistenti (sessioni persistenti e userDataDir) riducono latenza per scraping ripetuti, abbattendo login multipli e migliorando la resilienza.
[IMG: schema confronto: HTTP-only vs Browserless (con check per SPA, PDF, screenshot, autenticazione)]
Collegare Browserless a n8n con HTTP Request: setup e credenziali
L’integrazione n8n con Browserless è API‑first. Usiamo il nodo n8n-nodes-base.httpRequest con header Authorization: Bearer e payload JSON.
Passi:
-
Crea la credenziale (API Key) sul tuo account Browserless.
-
In n8n, aggiungi al workflow un nodo n8n-nodes-base.httpRequest per ogni operazione (es. /screenshot, /pdf).
-
Imposta Headers con Authorization: Bearer e Body come JSON.
Esempio: Screenshot di una pagina
{
"name": "Screenshot",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"parameters": {
"url": "https://chrome.browserless.io/screenshot",
"method": "POST",
"responseFormat": "json",
"jsonParameters": true,
"bodyParametersJson": {
"url": "https://example.com",
"options": {
"fullPage": true,
"viewport": { "width": 1366, "height": 768 }
}
},
"options": {
"bodyContentType": "json"
},
"headerParametersUi": {
"parameter": [
{ "name": "Authorization", "value": "Bearer {{$env.BROWSERLESS_API_KEY}}" }
]
}
}
}
Esempio: Generazione PDF
{
"name": "PDF",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"parameters": {
"url": "https://chrome.browserless.io/pdf",
"method": "POST",
"responseFormat": "json",
"jsonParameters": true,
"bodyParametersJson": {
"url": "https://example.com",
"options": {
"printBackground": true,
"format": "A4",
"margin": { "top": "10mm", "right": "10mm", "bottom": "10mm", "left": "10mm" }
}
},
"options": { "bodyContentType": "json" },
"headerParametersUi": {
"parameter": [
{ "name": "Authorization", "value": "Bearer {{$env.BROWSERLESS_API_KEY}}" }
]
}
}
}
Suggerimenti:
- usa responseFormat: “json” per gestire risposte JSON; se l’API restituisce base64 dell’immagine/PDF, decodifica a valle
- centralizza la tua API key in variabili d’ambiente e non in chiaro nel nodo
- per molteplici richieste, imposta un nodo per operazione per isolare i problemi e semplificare i retry
[IMG: configurazione HTTP Request con header Authorization e body JSON]
Sessioni, login e scraping selettori: flusso robusto end‑to‑end
Le sessioni aumentano l’affidabilità (meno login ripetuti) e permettono contesti persistenti (cookie, localStorage, userDataDir).
Esempio: creare sessione, navigare e poi estrarre
{
"name": "Create Session",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"parameters": {
"url": "https://chrome.browserless.io/sessions",
"method": "POST",
"responseFormat": "json",
"jsonParameters": true,
"bodyParametersJson": {
"userDataDir": "my-session-001",
"launch": { "headless": true }
},
"options": { "bodyContentType": "json" },
"headerParametersUi": {
"parameter": [
{ "name": "Authorization", "value": "Bearer {{$env.BROWSERLESS_API_KEY}}" }
]
}
}
}
Una volta ottenuto un sessionId, puoi invocare endpoint di navigazione/scrape passando l’identificativo di sessione per:
- caricare la pagina di login
- inviare username/password (campi form con selettori CSS)
- attendere elementi chiave (waitFor)
- navigare su pagine interne
- eseguire selettori CSS e XPath per scraping
Esempio: scraping con selettori (DOM)
{
"name": "Scrape",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"parameters": {
"url": "https://chrome.browserless.io/scrape",
"method": "POST",
"responseFormat": "json",
"jsonParameters": true,
"bodyParametersJson": {
"sessionId": "={{$json.sessionId}}",
"url": "https://example.com/dashboard",
"waitFor": [{ "selector": "#stats" }],
"actions": [
{ "type": "click", "selector": "#expand" }
],
"select": [
{ "selector": "#stats .value", "type": "text", "name": "statValue" },
{ "selector": "img#hero", "type": "attr", "attr": "src", "name": "heroSrc" }
]
},
"options": { "bodyContentType": "json" },
"headerParametersUi": {
"parameter": [
{ "name": "Authorization", "value": "Bearer {{$env.BROWSERLESS_API_KEY}}" }
]
}
}
}
Consigli pratici:
- preferisci selettori robusti (data‑testid, attributi stabili) rispetto a classi generate
- conserva i cookie/sessioni in userDataDir per ridurre login futuri
- usa step “waitFor” per sincronizzarti con JS e SPA (es. attesa di un selettore visibile)
[IMG: canvas con nodi: Create Session → Login → Navigate → Scrape → Output]
Anti‑bot, proxy e stealth: passi concreti per non farti bloccare
Molti siti impiegano sistemi anti‑bot. Strategie:
- modalità stealth e anti‑bot: abilita headless moderno, riduci fingerprinting evidente (UA realistico, timezone/locale coerenti, viewport ragionevole)
- rotazione proxy e fingerprinting: ruota IP e mantiene stabilità per sessioni lunghe; non abusare il crawl rate
- retry, timeout e rate limiting: ritenta con backoff esponenziale i 429/5xx; rispetta finestre di rate limit
- rispetto di robots.txt e termini d’uso: verifica policy, limita path esclusi e non aggirare protezioni illegittimamente
Esempio pattern di richiesta con parametri “stealth” e proxy (decisi a livello API):
{
"name": "Stealth Screenshot",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"parameters": {
"url": "https://chrome.browserless.io/screenshot",
"method": "POST",
"responseFormat": "json",
"jsonParameters": true,
"bodyParametersJson": {
"url": "https://example.com",
"stealth": true,
"gotoOptions": { "waitUntil": "networkidle2" },
"userAgent": "Mozilla/5.0 ...",
"proxy": "http://user:pass@proxy.example:3128"
},
"options": { "bodyContentType": "json" },
"headerParametersUi": {
"parameter": [
{ "name": "Authorization", "value": "Bearer {{$env.BROWSERLESS_API_KEY}}" }
]
}
}
}
Suggerimenti avanzati:
- rallenta intenzionalmente l’azione (piccoli delay) per imitare interazioni umane
- evita pattern ripetuti (sempre le stesse pagine/ore)
- monitora codici 403/429 e adatta la concorrenza
[IMG: tab di configurazione con stealth:on, UA custom e proxy impostato]
PDF, screenshot e performance: asset e misure oggettive
Oltre allo scraping testuale, un caso comune è la generazione PDF e screenshot di pagine web:
- generazione PDF e screenshot di pagine web: crea report periodici di landing, offerte o contratti
- metriche di performance del browser: misura TTFB, DOMContentLoaded, LCP, CLS per audit SEO su HTML renderizzato
- audit SEO su HTML renderizzato: estrai title/description/H1, verifica canonical, hreflang e meta robots lato “rendered DOM”
Esempio: Performance
{
"name": "Performance",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 1,
"parameters": {
"url": "https://chrome.browserless.io/performance",
"method": "POST",
"responseFormat": "json",
"jsonParameters": true,
"bodyParametersJson": {
"url": "https://example.com",
"metrics": ["ttfb", "fcp", "lcp", "cls"]
},
"options": { "bodyContentType": "json" },
"headerParametersUi": {
"parameter": [
{ "name": "Authorization", "value": "Bearer {{$env.BROWSERLESS_API_KEY}}" }
]
}
}
}
Pipeline tipica:
- Cron → /screenshot e /pdf su un set di URL → salva su storage/Drive → invia report via email/Slack
- Per SEO: /performance e /scrape → calcola KPI → alert su regressioni oltre soglia
Tip: conserva l’HTML renderizzato (se supportato dall’endpoint) per analisi differite e debugging.
[IMG: report con metrica LCP/CLS e miniature screenshot]
Orchestrazione, code e controllo costi: eseguire su larga scala
Quando scali:
- orchestrazione workflow e code/queue: serializza per dominio, parallelizza fra domini per ridurre blocchi; usa batch per liste lunghe
- rate limiting: pianifica intervalli fra richieste e riduci concorrenza su target sensibili
- caching: evita di ricaricare pagine identiche (cache HTML per N minuti)
- code vs no‑code: usa n8n-nodes-base.httpRequest per chiamate e appoggia il post‑processing a nodi downstream; conserva i “selettori” in un codebook condiviso per riuso
Controllo costi:
- screenshot solo quando il DOM cambia (etags/checksum sul DOM)
- viewport moderati e fullPage solo se serve
- usa sessioni per ridurre login ripetuti
- monitora durata media per job e percentuale di retry
[IMG: dashboard costi: job/minuto, tempo medio, retry rate, spesa stimata]
Agenti LLM per navigazione web: quando usarli, con guardrail
Gli agenti LLM possono pianificare click e navigazioni complesse (“vai a X, clicca Y, leggi Z”). Per limitarne i rischi:
- “tool” ben definiti: l’agente decide “quando” ma tu definisci “cosa” e “come”, con parametri e validazioni
- validazione deterministica prima dell’esecuzione (schema JSON e whitelisting selettori/URL)
- fallback: se l’agente fallisce due volte, passa a una routine deterministica o apri un task umano
- log a prova di audit: conserva input/azioni/output sintetici (senza PII) per diagnosi
Caso d’uso pratico:
- audit SEO su HTML renderizzato → l’agente propone azioni (es. “cambia H1?”), ma l’esecuzione è gated e richiede conferma umana o passa per un flusso deterministico controllato.
[IMG: ramo AI planner → proposta azioni → validazione → esecuzione o fallback]
Osservabilità e messa in produzione: metriche, alert e sicurezza
Metriche e osservabilità:
- monitora errori (403/429/5xx), tempi medi/p95, dimensione asset, percentuali di retry
- endpoint /metrics e /healthz del tuo ambiente n8n per health check
- dashboard con alert su incremento errori e tempi di rendering
Sicurezza e compliance:
- non memorizzare credenziali nei nodi; usa variabili d’ambiente per la API key
- provider con requisiti di sicurezza adeguati (es. SOC 2)
- rispetto robots.txt e termini d’uso; informa i team legali sui casi d’uso
Checklist di produzione:
- test con URL di staging e pagine “consentite”
- codebook selettori stabile (data‑testid preferiti)
- retry/backoff per 429/5xx; riduzione concorrenza
- sessioni per login; rotazione proxy se necessario
- logging e report automatici (screenshot/PDF e KPI)
[IMG: checklist “Ready for prod” con box spuntati]
Quick Takeaways
- Usa n8n-nodes-base.httpRequest con Authorization: Bearer per integrare Browserless e chiamare /screenshot, /pdf, /scrape, /performance.
- Sfrutta sessioni persistenti (userDataDir) per ridurre login e latenza; sincronizzati con waitFor e selettori robusti.
- Applica stealth, proxy e fingerprinting etici; gestisci retry, timeout e rate limiting per affidabilità.
- Genera asset (PNG/PDF) e metriche di performance per audit SEO su HTML renderizzato.
- Scala con batching, rate limit per dominio e caching; monitora costi, tempi e retry.
- Per agenti LLM di navigazione, imponi tool gating, validazione deterministica e fallback.
Conclusione
Portare un browser reale dentro i tuoi workflow sblocca casi impossibili con semplici GET: login, SPA, asset grafici, audit SEO e test end‑to‑end. Con l’automazione headless del browser con n8n orchestrata via n8n-nodes-base.httpRequest, connetti in modo sicuro Browserless, definisci richieste pulite (header Authorization e JSON), gestisci sessioni e selettori solidi e introduci strategie anti‑bot corrette. Quando il volume cresce, governa concorrenza, rate limit e caching per tenere sotto controllo costi e latenza, mentre metriche e alert ti avvisano di regressioni. Per i marketers che vogliono imparare ad usare n8n per migliorare la produttività, il vantaggio è immediato: screenshot e PDF schedulati, estrazioni affidabili per CRM e analisi SEO ripetibili. Inizia da un MVP (PDF/screenshot di 10 URL), stabilizza i selettori e attiva sessioni; poi estendi a scraping autenticati, performance e notifiche automatiche. È la base per pipeline robuste che riducono lavoro manuale e aumentano la qualità dei tuoi dati.
FAQ
- Come collego Browserless a n8n in pratica?
- Usa n8n-nodes-base.httpRequest con url dell’endpoint Browserless (es. /screenshot), method: POST, jsonParameters: true, bodyParametersJson per i campi richiesti e header Authorization: Bearer .
- Posso gestire login e pagine protette?
- Sì, crea sessioni persistenti (userDataDir) e usa un flusso login → navigazione → waitFor → selettori. Riutilizza la sessione per chiamate successive.
- Come evito blocchi anti‑bot?
- Abilita modalità stealth, ruota proxy con moderazione, imposta user agent realistici e sincronizzati con waitFor. Rispetta robots.txt e i ToS.
- Posso generare PDF e screenshot schedulati?
- Certo: imposta Cron in n8n e chiama /pdf e /screenshot; salva risultati e inviali via email/Slack. Aggiungi metriche /performance per audit SEO.
- Come controllo costi e performance?
- Limita fullPage/viewport e parallelismo, usa caching di pagine stabili, monitora tempi medi e retry. Serializza per dominio e applica rate limiting.
Hai già un caso d’uso concreto per cui vuoi attivare il browser headless? Raccontalo nei commenti e condividi questo articolo con il tuo team: quale pagina o flusso automatizzeresti per primo per ottenere un impatto misurabile in una settimana?
Articoli correlati
- Automate RPA: Guida Completa a Power Automate e all’Iperautomazione per le Aziende
- RPA Process: Guida Completa e Operativa all’Automazione Robotica
- RPA Robotica: guida completa a benefici, costi e roadmap
- Automation RPA: Guida Completa all’Automazione Robotica dei Processi
Vuoi automazioni AI su misura per la tua azienda?
Scopri la consulenza →