
Detector de fugas de privacidad del navegador — ocho módulos de detección, puntuación de riesgo e historial por cuenta, todo en tu navegador.
Detector de fugas de privacidad del navegador — ocho módulos de detección, puntuación de riesgo e historial por cuenta, todo en tu navegador.
Construido con Verdent — un asistente de codificación agéntico. Cada módulo de detección, el panel de análisis, el flujo de autenticación por clave API, la interfaz bilingüe y la imagen Docker lista para Kubernetes fueron diseñados e implementados en sesiones de programación por pares impulsadas por Verdent.
Abre una URL, haz clic en Run all y, en pocos segundos, Leakish te dice qué
está filtrando tu navegador sobre ti y tu red — a través de WebRTC, APIs de huella
digital, DNS y una sonda del lado del servidor. Ocho módulos independientes producen cada uno un
resultado tipado + señales de riesgo, una puntuación agregada (0–100) y un nivel
(safe / warning / critical).
Los usuarios con sesión iniciada pueden guardar escaneos en MySQL, consultar el historial y abrir un
panel de análisis que muestra gráficos de distribución, repetición de hashes de huella, línea temporal
de IP / ASN, escaneos atípicos y una comparación por pares. Todo lo demás (el propio detector)
funciona sin cuenta: cualquiera puede entrar en /app y ejecutar un escaneo.
| ID | Módulo | Qué inspecciona |
|---|---|---|
network-probe | Sonda de salida de red | IP pública observada por el servidor, ASN, país/región/ciudad, indicadores de VPN/proxy/Tor/hosting, TLS/HTTP |
webrtc | WebRTC | IPv4 + IPv6 públicas vía STUN, fugas RFC1918, candidatos .local ofuscados con mDNS |
browser-fingerprint | Huella del navegador | UA, pantalla, zona horaria, plugins, núcleos de CPU, memoria del dispositivo, lista de idiomas, DNT, cookies |
canvas-fingerprint | Canvas / WebGL | Cadenas de renderizador/fabricante 2D + WebGL, peculiaridades de renderizado de texto, formatos de imagen compatibles |
audio-fingerprint | Audio | Frecuencia de muestreo de AudioContext, canales, latencia, hash de salida del oscilador |
font-detection | Fuentes | Más de 40 sondas de fuentes nombradas mediante detección de diferencia de anchura en Canvas |
dns | DNS | Accesibilidad de DoH, señal DNSSEC, geolocalización del resolutor, heurísticas de fuga DNS |
cdp-detection | Automatización / headless | navigator.webdriver, temporización CDP, superficie de API solo Chromium, sondas de puerto — confianza 0–1 |
Cada módulo se registra a través de una única interfaz tipada DetectionModule<T>
y se ejecuta de forma aislada: que un módulo lance una excepción no afecta a los demás. El estado
de activación de cada módulo se conserva en localStorage con una clave de versión, sobrevive a la
recarga, y el botón Run all solo recorre el conjunto habilitado.
/api/detect/network para leer su propia IP
observada por el servidor, o (c) el módulo DNS se comunica con https://dns.google/resolve.leakish.locale, controla <html lang>, los metadatos de la página, cada pantalla,
cada respuesta de error de la API y el correo de inicio de sesión por magic-link.det_… en la
página Integrations (SHA-256 almacenado, texto plano mostrado una sola vez). Cada
endpoint /api/detect/* acepta una cookie de sesión o una clave Bearer, por lo
que el mismo escaneo puede guardarse desde un trabajo CLI / CI./scans/analytics — gráficos de distribución por
zona horaria / plataforma / idioma / pantalla / WebGL / ASN / país / número de fuentes,
repetición de hashes de huella con una calificación de riesgo por tipo, línea temporal de IP / ASN,
detector de valores atípicos multiejes, comparación por pares con puntuación de similitud 0–100.lib/risk/assess.ts produce
RiskSignals tipados con IDs estables (p. ej. webrtc.public-ip-leak), resúmenes
por módulo y una única puntuación agregada. Adaptado a la configuración regional
mediante inyección de Messages.POST /api/detect/scans acepta una
cabecera Idempotency-Key, limita a cada usuario a 200 escaneos y limita la tasa de
guardados a 10/hora.node:22-alpine,
salida standalone de Next.js, despliegue en Kubernetes mediante el workflow en
.github/workflows/.Requisitos previos: Node 22+ (cualquier versión 20+ sirve para desarrollo local), Yarn 1.x, una instancia de MySQL en ejecución y (opcionalmente) un cliente de Google OAuth.
yarn install
cp env.example .env.local # fill in DATABASE_URL, NEXTAUTH_SECRET, IP_HASH_SALT at minimum
yarn prisma:generate
yarn db:push # provision tables on a fresh DB
yarn dev # http://localhost:3000
Variables de entorno mínimas para que el inicio de sesión funcione:
DATABASE_URL — p. ej. mysql://root:[email protected]:3306/detectNEXTAUTH_SECRET — openssl rand -base64 32NEXTAUTH_URL — http://localhost:3000 en desarrolloIP_HASH_SALT — openssl rand -base64 32Opcional:
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET para el inicio de sesión con GoogleMAILGUN_API_KEY / MAILGUN_DOMAIN / EMAIL_FROM para el envío real de magic-links
(sin estos, el enlace se imprime en la consola del servidor de desarrollo)IPINFO_TOKEN para enriquecer la sonda de red con datos de ASN / VPN / proxyConsulta env.example para la lista completa anotada.