11 maggio 2026 · 10 min lettura
Self-HostingVaultwarden self-hosted homelab: setup completo su Proxmox LXC con Caddy HTTPS, admin panel sigillato e backup testato. Sette decisioni motivate.
Self-HostingC'è un momento preciso in cui un homelab smette di essere un hobby e diventa infrastruttura. Per me è stato quando mi sono reso conto che le applicazioni che ci girano sopra le usano persone vere, ogni giorno, e non possono stare ferme.

Iscriviti alla newsletter per ricevere i migliori articoli direttamente nella tua inbox.
DocuSeal self-hosted via Docker manda in pensione DocuSign Plus: audit log, SHA256 e firma digitale documenti self-hosted. Ma attenti al cavillo FES vs FEA.
Headless Chromium di Playwright, su Linux, lascia sei bandierine rosse su bot.sannysoft.com prima ancora che la pagina finisca di caricarsi. UserAgent HeadlessChrome, WebDriver true, oggetto window.chrome assente, plugins zero, WebGL su SwiftShader. Sei macigni che qualunque sito anti-bot a 5 euro al mese intercetta senza sforzo.
Esiste un fix open-source che pareggia Multilogin a costo zero? La risposta breve è no, nessuno fa il 100%. Ma CloakBrowser — drop-in replacement di Playwright con 49–57 patch C++ a livello sorgente su Chromium 146 — è la cosa più vicina che gira oggi in Python. L'ho installato e testato stamattina su quattro siti di detection. Il risultato è meraviglioso e onesto al tempo stesso: passa cinque test su sei e fallisce uno in modo molto educato.

Il duello vero del 2026 in ambito stealth automation Python non è CloakBrowser contro Playwright-stealth — è CloakBrowser contro Playwright stock. La differenza tecnica è una sola, ma cambia tutto: Playwright-stealth applica patch a livello JavaScript (nasconde la flag webdriver, finge plugin, normalizza navigator.languages); CloakBrowser ricompila Chromium con 49–57 patch C++ a livello sorgente, che è una categoria diversa di gioco. Il primo modifica la facciata, il secondo riscrive la casa.
Le alternative concorrenti, per onestà, vanno scartate subito. undetected-chromedriver è ufficialmente morto: ultima release 3.5.5 del 17 febbraio 2024, 1.090 issue aperti, zero commit negli ultimi sei mesi, verdetto Snyk "INACTIVE" — "could be considered as a discontinued project". Camoufox è viva ma è Firefox-based, il dev principale ha ammesso un anno di pausa e "performance has gone down". Quindi il confronto pulito è: cosa cambia se sostituisci sync_playwright() con launch() di CloakBrowser? Solo questo. Senza altri compromessi.
Playwright in modalità headless, installato fresco con pip su Fedora con Python 3.14, fa quello che ha sempre fatto: si presenta come un browser di test e non si vergogna di dirlo. La probe JS che ho lanciato dentro la pagina restituisce un quadro brutale di onestà tecnica. UserAgent HeadlessChrome/147 (con la parola Headless in chiaro), navigator.webdriver su true, lista plugins vuota, window.chrome inesistente, platform Linux, languages ["it"] — senza il sottocodice paese che ogni Chrome reale produce.

Su deviceandbrowserinfo.com il verdetto è lapidario e in inglese: "You are a bot!" con quattro flag rossi acceso — isBot true, hasBotUserAgent true, hasWebdriverTrue, hasWebdriverInFrameTrue. Su CreepJS arriva a 94% like-headless e 100% headless. E la cosa che fa più paura, lato privacy domestica più che lato scraping: WebRTC espone l'IP pubblico in chiaro nel report — nel mio caso un bel 91.255.5.58 stampato a caratteri cubitali. Browserleaks/javascript invece passa, ma il payload del browser fingerprint è radicalmente diverso da un Chrome reale.

La diagnosi è semplice: Playwright stock è uno strumento di test ottimo per chi controlla entrambi i lati del browser (frontend QA, end-to-end interni, regression test). Diventa inutile nel momento in cui dall'altra parte c'è qualcuno che ti vuole identificare. E nel 2026, dall'altra parte, c'è quasi sempre qualcuno.
CloakBrowser — progetto di CloakHQ su GitHub, 5.700 stelle, licenza MIT, ultimo rilascio Chromium 146.0.7680.177.4 del 28 aprile 2026 — è la prima cosa che vedo in cinque anni di tinkering che meriti la parola "drop-in" senza ironia. L'installazione è pip install cloakbrowser dentro un venv: trenta secondi netti. Al primo launch scarica circa 200 MB compressi che diventano circa 700 MB estratti in ~/.cloakbrowser di Chromium 146 patchato — il binario pesa quanto un Chrome qualsiasi, perché è praticamente un Chrome qualsiasi, solo ricompilato. Python 3.14 supportato senza tweak, Playwright 1.59.0 sotto al cofano come dependency dichiarata.
L'API è la cosa più disorientante: non c'è API. Si sostituisce una riga.
# Prima
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
# Dopo
from cloakbrowser import launch
with launch(headless=True) as browser:
...Tutto il resto — page, context, locator, expect, async/await — è Playwright canonico. Nessun re-learning. E adesso arriva la parte che mi ha lasciato a bocca aperta. Ho lanciato la stessa probe JS dentro CloakBrowser e l'ho confrontata con quella stock.
L'ultima riga merita una pausa. Stiamo girando su Linux Fedora, dentro un Chromium headless, e WebGL dichiara di essere una scheda video RTX 4070 Laptop attraverso Direct3D11 su Windows. È un'illusione costruita a livello driver virtuale, non un parametro stringa. Su bot.sannysoft.com tutti e sei i marker rossi diventano verdi al primo tentativo, senza configurazione extra. "You are a bot!" diventa "You are human!" — quattro flag false su quattro. Non è un retouch JavaScript, è una bugia ben tessuta.

Poi però sono arrivato su CreepJS, che è il banco di prova più cattivo del settore. Stock Playwright lì sopra prendeva 94% like-headless, 100% headless, e firma fingerprint trust-score basso. CloakBrowser scende a 25% like-headless, 0% headless. È un crollo enorme. Ma non è zero. È venticinque.
L'arms race detection vs evasion è strutturalmente perdente per qualsiasi tool singolo a lungo termine. — ZenRows blog, 2026
Il residuo 25% è la parte che nessuno racconta nei post tutorial e nei thread Reddit. CreepJS aggrega segnali comportamentali — paint timing, mouse trajectory che non c'è, focus events che non arrivano, sequenze di interrupt JS impossibili in un browser veramente usato da un umano davanti a uno schermo. Nessuna patch C++ può inventarsi un movimento del mouse che non esiste. Per chiudere quel 25% servirebbe Xvfb con interazione simulata realistica oppure human-in-the-loop puro. Ma il bypass al 75% è già uno scarto enorme rispetto al 100% di Playwright stock.
Un dettaglio collaterale che ho scoperto per caso: WebRTC è bloccato di default — il leak dell'IP pubblico che Playwright stock espone in chiaro su deviceandbrowserinfo non si verifica. Se anche non vi interessa lo scraping, anche solo come browser di privacy CloakBrowser fa cose che Chrome standard non fa senza estensioni. È un effetto collaterale gentile di una libreria pensata per altro.
Riassumere il confronto tra Playwright stock e CloakBrowser in una tabella è un esercizio utile, ma fuorviante se non si guardano le righe nell'ordine giusto. Le prime cinque misurano la capacità di mascheramento e sono il motivo per cui state leggendo questo post. Le ultime due — manutenzione del progetto e profilo legale — sono il motivo per cui dovreste fermarvi a pensare prima di metterlo in produzione domani mattina.
Una nota sul positioning di mercato che mi ha colto di sorpresa. Esiste un progetto fratello, CloakBrowser-Manager (MIT, 192 stelle, marcato early-alpha), che si presenta esplicitamente come alternativa OSS a Multilogin, GoLogin e AdsPower — i tool commerciali per la gestione multi-profilo browser che partono da 9 euro al mese (Multilogin), passano per AdsPower Base a 5,40 dollari e arrivano a 30 dollari per il piano Pro con 100 profili. Per chi gestisce meno di una ventina di profili e non vuole pagare in eterno, è il primo punto di partenza self-hosted credibile. Resta early alpha, quindi non in produzione — ma il segnale di un mercato finora chiuso che si apre è interessante.
L'integrazione con AI agent merita una menzione di passaggio: CloakBrowser documenta hook espliciti per browser-use, Crawl4AI, Stagehand, Scrapling, LangChain e Selenium, sia via launch diretto del binary sia via CDP sulla porta 9242. Per chi sta costruendo agent autonomi e si è scontrato con il rate-limit aggressive di siti che intercettano navigator.webdriver in due millisecondi, è l'oggetto che potrebbe sbloccare il workflow. Ne avevamo parlato analizzando le sfide privacy degli LLM locali in homelab — la stessa logica vale qui: meno superficie esposta, più controllo.
CloakBrowser non è uno strumento neutro. È un attrezzo specifico per situazioni specifiche e — fuori da quelle — è inutile o dannoso. La prima situazione legittima dove brilla è il test E2E della propria infrastruttura anti-bot: se gestite un e-commerce e volete verificare che il vostro Cloudflare/DataDome/PerimeterX scarti correttamente bot di livello professionale, non c'è modo migliore di provarci con il bot di livello professionale. La seconda è l'AI agent su siti propri o autorizzati: browser-use o Stagehand su un dashboard interno richiede credibilità di rendering, non rilevazione comportamentale.
La terza è il test di privacy del proprio fingerprint browser: girare browserleaks o CreepJS dentro CloakBrowser su vari profili è una palestra per capire cosa il proprio Chrome quotidiano lascia in chiaro. Per accessi protetti dietro firewall, CloakBrowser tramite VPN come NetBird sul proprio homelab chiude anche il cerchio sull'IP di provenienza, non solo sul fingerprint del browser.
Dove non va usato è altrettanto netto. Scraping di dati personali in EU è GDPR, senza scappatoie. Il Garante Privacy ha multato Clearview AI 20 milioni di euro nel 2022 per aver costruito un database di 10 miliardi di volti raccolti via scraping da fonti pubbliche — la difesa "sono dati pubblici" non ha tenuto un secondo perché contenevano dati personali e mancava base giuridica art. 6. Vale anche se gestite l'operazione da casa, con CloakBrowser su Proxmox, attraverso una VPN: il framework normativo si applica al trattamento, non all'infrastruttura. E negli USA, il caso hiQ vs LinkedIn — vinto sul CFAA dal 9th Circuit nel 2022 — è finito a dicembre dello stesso anno con un settlement da 500.000 dollari contro hiQ per trespass to chattels: legale federale non significa immune da tort statale.
Il verdetto finale è una sola cifra, ed è la cifra che ha più peso di tutto il resto messo insieme.
25%.
Quello che CreepJS continua a rilevare anche con il browser meglio mascherato dell'open source 2026. È il numero che separa il marketing dalla realtà, e l'unico onesto da scrivere in fondo a un post come questo.
Fonti: CloakBrowser GitHub, CloakBrowser releases, CloakBrowser-Manager, Camoufox repo upstream, Snyk verdict undetected-chromedriver, Garante Privacy decisione Clearview AI, Jenner & Block alert hiQ vs LinkedIn, Scrapfly Playwright Stealth analysis, ZenRows undetected-chromedriver alternatives 2026, Cloudflare JA4 signals.
| Probe JS | Playwright stock | CloakBrowser |
|---|---|---|
| navigator.webdriver | true | false |
| UserAgent | HeadlessChrome/147 | Chrome/146 Windows NT 10.0 Win64 |
| window.chrome | undefined | object |
| navigator.platform | Linux | Win32 |
| navigator.plugins.length | 0 | 5 |
| navigator.languages | ["it"] | ["it-IT"] |
| WebGL renderer | SwiftShader | ANGLE NVIDIA GeForce RTX 4070 Laptop GPU Direct3D11 |
| Parametro | Playwright stock | CloakBrowser 0.3.27 |
|---|---|---|
| bot.sannysoft.com | 6 marker rossi | Tutti verdi |
| deviceandbrowserinfo.com | "You are a bot!" | "You are human!" |
| CreepJS like-headless | 94% | 25% |
| WebRTC IP leak | Esposto | Bloccato |
| WebGL renderer | SwiftShader (Linux) | ANGLE NVIDIA RTX 4070 (Win) |
| Drop-in API | — | Sostituire 1 import |
| Manutenzione | Microsoft, settimanale | Settimanale, MIT |
| Patch C++ sorgente | Nessuna | 49–57 (release aprile) |
| Footprint disco | ~370 MB | ~700 MB |
| RAM (test headless) | Simile Chrome | Simile Chrome |