
Rilevatore di fughe di privacy nel browser — otto moduli di rilevamento, punteggio di rischio e cronologia per account, tutto nel tuo browser.
Rilevatore di fughe di privacy del browser — otto moduli di rilevamento, punteggio di rischio e cronologia per account, tutto nel tuo browser.
Costruito con Verdent — un assistente di codifica agentico. Ogni modulo di rilevamento, la dashboard di analisi, il flusso di autenticazione con chiave API, l'interfaccia bilingue e l'immagine Docker pronta per Kubernetes sono stati progettati e implementati in sessioni di pair programming guidate da Verdent.
Apri un URL, clicca Esegui tutto, e in pochi secondi Leakish ti dice cosa il tuo browser sta rivelando su di te e la tua rete — tramite WebRTC, API di fingerprinting, DNS e un probe lato server. Otto moduli indipendenti producono ciascuno un risultato tipizzato + segnali di rischio, un punteggio aggregato (0–100) e un livello (safe / warning / critical). Gli utenti autenticati possono salvare le scansioni in MySQL, sfogliare la cronologia e aprire una dashboard analitica che mostra grafici di distribuzione, ripetizione di hash di fingerprint, timeline IP / ASN, scansioni anomale e un confronto a coppie. Tutto il resto (il rilevatore stesso) funziona senza account — chiunque può atterrare su /app ed eseguire una scansione.
| ID | Modulo | Cosa ispeziona |
|---|---|---|
network-probe | Probe di uscita di rete | Indirizzo IP pubblico osservato dal server, ASN, paese/regione/città, flag VPN/proxy/Tor/hosting, TLS/HTTP |
webrtc | WebRTC | IPv4 + IPv6 pubblici tramite STUN, perdite RFC1918, candidati .local offuscati da mDNS |
browser-fingerprint | Fingerprint del browser | UA, schermo, fuso orario, plugin, core CPU, memoria dispositivo, elenco lingue, DNT, cookie |
canvas-fingerprint | Canvas / WebGL | Stringhe renderer/vendor 2D + WebGL, stranezze di rendering del testo, formati immagine supportati |
audio-fingerprint | Audio | Frequenza di campionamento AudioContext, canali, latenza, hash dell'output dell'oscillatore |
font-detection | Caratteri | Oltre 40 probe di font nominati tramite rilevamento della differenza di larghezza Canvas |
dns | DNS | Raggiungibilità DoH, segnale DNSSEC, geolocalizzazione del resolver, euristiche di perdita DNS |
cdp-detection | Automazione / headless | navigator.webdriver, timing CDP, superficie API solo Chromium, probe di porta — confidenza 0–1 |
Ogni modulo è registrato attraverso una singola interfaccia tipizzata DetectionModule<T> e viene eseguito in isolamento — un modulo che genera un'eccezione non influenza gli altri. Lo stato di abilitazione per modulo è persistito in localStorage con una chiave di versione, sopravvive all'aggiornamento e il pulsante Esegui tutto processa solo l'insieme abilitato.
/api/detect/network per leggere il proprio IP osservato dal server, o (c) il modulo DNS parla con https://dns.google/resolve.leakish.locale, guida <html lang>, metadati della pagina, ogni schermata, ogni risposta di errore API e l'email di accesso con magic link.det_… nella pagina Integrations (SHA-256 memorizzato, testo in chiaro mostrato una volta). Ogni endpoint /api/detect/* accetta sia un cookie di sessione che una chiave Bearer, quindi la stessa scansione può essere salvata da un lavoro CLI / CI./scans/analytics — grafici di distribuzione per fuso orario / piattaforma / lingua / schermo / WebGL / ASN / paese / conteggio caratteri, ripetizione di hash di fingerprint con un grado di rischio per tipo, timeline IP / ASN, rilevatore di anomalie multi-asse, confronto a coppie con punteggio di somiglianza 0–100.lib/risk/assess.ts produce RiskSignal tipizzati con ID stabili (es. webrtc.public-ip-leak), riepiloghi per modulo e un singolo punteggio aggregato. Sensibile alla lingua tramite iniezione di Messages.POST /api/detect/scans accetta un header Idempotency-Key, limita ogni utente a 200 scansioni e limita la frequenza di salvataggio a 10/ora.node:22-alpine, output standalone Next.js, distribuito su Kubernetes tramite il workflow in .github/workflows/.Prerequisiti: Node 22+ (qualsiasi 20+ funziona per lo sviluppo locale), Yarn 1.x, un'istanza MySQL in esecuzione e (opzionalmente) un client Google OAuth.
yarn install
cp env.example .env.local # compila DATABASE_URL, NEXTAUTH_SECRET, IP_HASH_SALT come minimo
yarn prisma:generate
yarn db:push # fornisce le tabelle su un DB nuovo
yarn dev # http://localhost:3000
Env minimo per ottenere un accesso funzionante:
DATABASE_URL — es. mysql://root:[email protected]:3306/detectNEXTAUTH_SECRET — openssl rand -base64 32NEXTAUTH_URL — http://localhost:3000 in sviluppoIP_HASH_SALT — openssl rand -base64 32Opzionale:
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET per l'accesso con GoogleMAILGUN_API_KEY / MAILGUN_DOMAIN / EMAIL_FROM per la consegna reale del magic link (senza questi, il link viene stampato nella console del server di sviluppo)IPINFO_TOKEN per arricchire il probe di rete con dati ASN / VPN / proxyVedi env.example per l'elenco completo annotato.
| Percorso | Scopo |
|---|---|
/ | Pagina di atterraggio marketing (hero aurora, schede funzionalità, FAQ, CTA) |
/app | Il rilevatore — elenco moduli + pannello risultati + panoramica |
/login | Pagina di accesso standalone (Google / email / chiave API) |
/scans | Cronologia delle scansioni salvate dell'utente autenticato |
/scans/[id] | Dettaglio di una singola scansione salvata |
/scans/analytics | Distribuzione / ripetizione / timeline / anomalie / confronto |
/integrations | Gestisci chiavi API det_… (crea / revoca / come fare) |