
Détecteur de fuites de confidentialité dans le navigateur — huit modules de détection, évaluation des risques et historique par compte, le tout dans votre navigateur.
Détecteur de fuites de vie privée dans le navigateur — huit modules de détection, score de risque et historique par compte, le tout dans votre navigateur.
Construit avec Verdent — un assistant de codage agentique. Chaque module de détection, le tableau de bord analytique, le flux d'authentification par clé API, l'interface bilingue et l'image Docker prête pour Kubernetes ont été conçus et implémentés lors de sessions de programmation en binôme pilotées par Verdent.
Ouvrez une URL, cliquez sur Run all, et en quelques secondes Leakish vous indique ce que
votre navigateur divulgue à votre sujet et sur votre réseau — via WebRTC, les API
d'empreinte numérique, DNS, et une sonde côté serveur. Huit modules indépendants produisent chacun un
résultat typé + des signaux de risque, un score agrégé (0–100) et un niveau
(safe / warning / critical).
Les utilisateurs connectés peuvent enregistrer les analyses dans MySQL, parcourir l'historique,
et ouvrir un tableau de bord analytique qui affiche des graphiques de distribution, la répétition
d'empreintes de hachage, la chronologie IP / ASN, les analyses aberrantes, et une comparaison
par paire. Tout le reste (le détecteur lui-même) fonctionne sans compte — n'importe qui peut
accéder à /app et lancer une analyse.
| ID | Module | Ce qu'il inspecte |
|---|---|---|
network-probe | Sonde de trafic réseau | IP publique observée par le serveur, ASN, pays/région/ville, indicateurs VPN/proxy/Tor/hébergement, TLS/HTTP |
webrtc | WebRTC | IPv4 + IPv6 publique via STUN, fuites RFC1918, candidats .local obfusqués par mDNS |
browser-fingerprint | Empreinte navigateur | UA, écran, fuseau horaire, plugins, cœurs CPU, mémoire appareil, liste de langues, DNT, cookies |
canvas-fingerprint | Canvas / WebGL | Chaînes renderer/vendor 2D + WebGL, bizarreries de rendu de texte, formats d'image supportés |
audio-fingerprint | Audio | Fréquence d'échantillonnage AudioContext, canaux, latence, hachage de sortie d'oscillateur |
font-detection | Polices | 40+ sondes de polices nommées via détection de différence de largeur Canvas |
dns | DNS | Accessibilité DoH, signal DNSSEC, géolocalisation du résolveur, heuristiques de fuite DNS |
cdp-detection | Automatisation / headless | navigator.webdriver, chronométrage CDP, surface d'API propre à Chromium, sondes de ports — confiance 0–1 |
Chaque module est enregistré via une interface DetectionModule<T> typée unique
et s'exécute isolément — un module qui échoue n'affecte pas les autres. L'état
d'activation par module est conservé dans localStorage avec une clé de version,
survit à un rafraîchissement, et le bouton Run all ne parcourt que l'ensemble activé.
/api/detect/network pour lire sa propre IP observée par le serveur,
ou (c) le module DNS communique avec https://dns.google/resolve.leakish.locale, pilote <html lang>, les métadonnées de page, chaque écran,
chaque réponse d'erreur API, et l'email de connexion par lien magique.det_… sur la page
Intégrations (SHA-256 stocké, texte brut affiché une seule fois). Chaque
point de terminaison /api/detect/* accepte soit un cookie de session, soit une clé Bearer, donc
la même analyse peut être enregistrée depuis un CLI / job CI./scans/analytics — graphiques de distribution par
fuseau horaire / plateforme / langue / écran / WebGL / ASN / pays / nombre de polices,
répétition d'empreintes de hachage avec un grade de risque par type, chronologie IP / ASN,
détecteur d'aberrations multi-axes, comparaison par paire avec score de similarité 0–100.lib/risk/assess.ts produit des
RiskSignal typés avec des identifiants stables (par ex. webrtc.public-ip-leak), des résumés
par module, et un score agrégé unique. Sensible à la locale via l'injection de Messages.POST /api/detect/scans accepte un
en-tête Idempotency-Key, limite chaque utilisateur à 200 analyses, et limite le taux
d'enregistrement à 10/heure.node:22-alpine,
sortie standalone Next.js, déploiement sur Kubernetes via le workflow dans
.github/workflows/.Prérequis : Node 22+ (tout ce qui est 20+ fonctionne pour le développement local), Yarn 1.x, une instance MySQL en cours d'exécution, et (optionnellement) un client OAuth Google.
yarn install
cp env.example .env.local # remplir DATABASE_URL, NEXTAUTH_SECRET, IP_HASH_SALT au minimum
yarn prisma:generate
yarn db:push # provisionner les tables sur une nouvelle base de données
yarn dev # http://localhost:3000
Variables d'environnement minimales pour une connexion fonctionnelle :
DATABASE_URL — ex. mysql://root:[email protected]:3306/detectNEXTAUTH_SECRET — openssl rand -base64 32NEXTAUTH_URL — http://localhost:3000 en développementIP_HASH_SALT — openssl rand -base64 32Optionnelles :
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET pour la connexion GoogleMAILGUN_API_KEY / MAILGUN_DOMAIN / EMAIL_FROM pour la livraison réelle de liens magiques
(sans cela, le lien est imprimé dans la console du serveur de développement)IPINFO_TOKEN pour enrichir la sonde réseau avec les données ASN / VPN / proxyVoir env.example pour la liste complète annotée.