Por qué el modo incógnito no protege contra el fingerprinting
El modo incógnito borra las cookies pero deja tu huella digital del navegador sin cambios. Descubre por qué la navegación privada no es suficiente para una privacidad real.
Prefieres la documentación del producto mantenida?
Este artículo tiene una página equivalente en el centro de documentación. Usa los docs para el flujo canónico, las flags actuales y la referencia duradera.
Introducción
La mayoría de los usuarios asumen que el modo incógnito (o "navegación privada") los hace invisibles en línea. En realidad, el modo incógnito solo evita que el navegador guarde datos locales: el historial, las cookies y las entradas de formularios no se almacenan. Tu huella digital del navegador, que incluye el renderizado Canvas, las características WebGL, el procesamiento de audio, la disponibilidad de fuentes, las dimensiones de pantalla y docenas de otras señales, permanece completamente sin cambios. Peor aún, el modo incógnito cambia ciertos comportamientos del navegador de maneras que hacen que la propia sesión incógnita sea identificable.
BotBrowser adopta un enfoque fundamentalmente diferente. En lugar de ejecutar en un modo de navegación privada con limitaciones detectables, los perfiles de BotBrowser presentan un entorno de navegador completo y normal con señales de huella digital controladas. Este artículo explica qué hace realmente el modo incógnito (y qué no hace), por qué puede hacerte más visible, y cómo BotBrowser proporciona un verdadero control de identidad.
Impacto en la privacidad
La brecha entre lo que los usuarios esperan del modo incógnito y lo que realmente proporciona es significativa:
Lo que hace el modo incógnito:
- No guarda el historial de navegación
- No conserva las cookies después de cerrar la sesión
- No guarda datos de formularios
- Aísla la sesión de los datos de navegación regular
Lo que el modo incógnito NO hace:
- No cambia tu huella digital del navegador
- No cambia tu dirección IP
- No protege contra el rastreo basado en huellas digitales
- No impide que los sitios web te identifiquen durante la sesión
- No cambia tu User-Agent, tamaño de pantalla ni características de hardware
La falsa sensación de seguridad del modo incógnito es en sí misma un riesgo para la privacidad. Los usuarios que creen estar protegidos pueden tomar menos precauciones, mientras que su huella digital es completamente visible para los sistemas de rastreo.
Además, el modo incógnito crea artefactos que lo distinguen de la navegación normal. Los valores de cuota de almacenamiento, la disponibilidad de API y ciertos comportamientos del navegador difieren en las sesiones incógnitas. Estas diferencias significan que estar en modo incógnito es en sí mismo una pieza de información identificativa.
Contexto técnico
Cómo el modo incógnito cambia el comportamiento del navegador
Cuando un navegador entra en modo incógnito, varios comportamientos internos cambian:
Cuota de almacenamiento: En modo incógnito, los navegadores típicamente reportan una cuota de almacenamiento reducida. navigator.storage.estimate() devuelve valores diferentes en comparación con una sesión normal. Los valores específicos de cuota varían según la versión del navegador, pero la reducción es una señal consistente.
FileSystem API: Históricamente, la API window.requestFileSystem (o window.webkitRequestFileSystem) se comportaba de manera diferente en modo incógnito. Aunque Chrome moderno ha abordado algunas de estas diferencias, persisten variaciones de comportamiento sutiles.
Service workers: El modo incógnito tiene un ciclo de vida diferente para los service workers. Los service workers registrados en modo incógnito no se persisten. El comportamiento de registro y la persistencia del almacenamiento difieren del modo normal.
IndexedDB y localStorage: Aunque estas API están disponibles en modo incógnito, sus límites de almacenamiento y comportamiento de errores pueden diferir. Algunos navegadores limitan las operaciones de IndexedDB en modo privado.
Características de rendimiento: La gestión de memoria y el comportamiento de caché difieren en modo incógnito. Estas diferencias pueden afectar las mediciones de tiempo y las métricas de rendimiento.
La huella digital permanece idéntica
A pesar de todos los cambios de comportamiento anteriores, las señales principales de huella digital permanecen iguales en modo incógnito:
- Renderizado Canvas: El mismo hardware produce el mismo hash de Canvas
- WebGL: La misma GPU reporta el mismo fabricante, renderizador y salida de renderizado
- Procesamiento de audio: El mismo hardware de audio produce la misma huella digital de AudioContext
- Dimensiones de pantalla: El mismo monitor reporta la misma resolución
- Propiedades del navigator: Los núcleos de CPU, memoria, plataforma e idioma no cambian
- Fuentes: Las mismas fuentes están instaladas
- Client Hints: Se envían los mismos User-Agent y Client Hints
Esto significa que un usuario que visita un sitio en modo normal y luego lo visita en modo incógnito produce la misma huella digital. El sistema de rastreo puede correlacionar las dos visitas mediante coincidencia de huellas digitales, independientemente de la sesión incógnita.
La "señal incógnita"
Las diferencias de comportamiento mencionadas anteriormente crean lo que puede llamarse una "señal incógnita". Un sistema de rastreo que observa cuota de almacenamiento reducida, comportamiento diferente de FileSystem API u otros artefactos específicos del modo incógnito sabe que el usuario está en modo de navegación privada.
Esta señal tiene dos implicaciones:
-
Segmentación de la población: Los usuarios en modo incógnito son una minoría de todas las sesiones del navegador. Ser identificado como usuario incógnito te coloca en una población más pequeña, lo que hace que tu huella digital sea más distintiva.
-
Señalización de intención: Los usuarios que habilitan el modo incógnito están tratando activamente de proteger su privacidad. Esta intención en sí misma es una señal de comportamiento que los sistemas de rastreo pueden incorporar en sus modelos.
Enfoques comunes y sus limitaciones
Solo modo incógnito
Como se describió anteriormente, el modo incógnito no cambia la huella digital y crea artefactos detectables. Protege contra la persistencia de datos locales (útil para computadoras compartidas) pero no proporciona protección contra el rastreo basado en huellas digitales.
Modo incógnito con extensiones
Agregar extensiones de privacidad al modo incógnito (como bloqueadores de Canvas o aleatorizadores de huellas digitales) introduce artefactos detectables adicionales. La modificación de huellas digitales basada en extensiones es visible a través de la inspección de cadenas de prototipos, anomalías de tiempo y propiedades de API faltantes o alteradas.
Modo incógnito con VPN
Una VPN cambia tu dirección IP, lo que aborda un aspecto del rastreo. Pero la huella digital, incluidos los artefactos específicos del modo incógnito, permanece sin cambios. La combinación protege contra el rastreo basado en IP pero no contra el rastreo basado en huellas digitales.
Tor Browser
Tor Browser adopta un enfoque más agresivo al normalizar muchas señales de huella digital para que coincidan con una línea base común. Sin embargo, la huella digital de Tor Browser es en sí misma distintiva. La combinación específica de configuraciones (letterboxing, WebGL deshabilitado, NoScript, etc.) identifica al usuario como usuario de Tor Browser, que es una población pequeña.
Enfoque basado en perfiles (BotBrowser)
BotBrowser no utiliza el modo incógnito. Cada sesión se ejecuta como una instancia de navegador estándar con acceso completo a la API, cuotas de almacenamiento normales y soporte completo de service workers. La huella digital se controla a través del perfil, no mediante restricciones de modo.
Enfoque de BotBrowser
Modo de navegador normal con identidad controlada
Las sesiones de BotBrowser son sesiones de navegador regulares (no incógnitas). Esta es una decisión de diseño deliberada:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
La sesión tiene:
- Cuota de almacenamiento normal:
navigator.storage.estimate()devuelve valores consistentes con una sesión de navegación regular - Disponibilidad completa de API: Todas las API del navegador funcionan como se espera, incluyendo FileSystem, Service Workers e IndexedDB
- Comportamiento estándar: No hay artefactos específicos del modo incógnito presentes
- Huella digital controlada: Las señales de Canvas, WebGL, audio, navigator, pantalla y fuentes están todas definidas por el perfil
Identidad definida por perfil
Los perfiles de BotBrowser representan entornos de navegador completos y reales capturados de dispositivos reales. Cuando cargas un perfil, el navegador presenta señales consistentes con ese dispositivo:
- El renderizado Canvas produce el hash esperado del perfil
- WebGL reporta el fabricante y renderizador de GPU del perfil
- El procesamiento de audio coincide con las características de audio del perfil
- Las dimensiones de pantalla, la profundidad de color y la proporción de píxeles coinciden con el perfil
- Las propiedades del navigator (núcleos de CPU, memoria, plataforma) son consistentes con el dispositivo del perfil
Esto es fundamentalmente diferente del modo incógnito, que expone tu hardware real a través de una huella digital sin modificar.
Aislamiento de sesión sin modo incógnito
BotBrowser logra el aislamiento de sesión a través de --user-data-dir, no a través del modo incógnito:
# Sesión 1 - directorio de datos aislado
chrome --bot-profile="/profiles/profile-a.enc" \
--user-data-dir="/data/session-1"
# Sesión 2 - directorio de datos separado
chrome --bot-profile="/profiles/profile-b.enc" \
--user-data-dir="/data/session-2"
Cada sesión tiene sus propias cookies, localStorage, IndexedDB y caché sin los artefactos de comportamiento que introduce el modo incógnito.
Para sesiones temporales que no deben persistir datos, usa un directorio temporal:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
El directorio temporal se elimina cuando el sistema limpia los archivos temporales, logrando la misma no persistencia de datos del modo incógnito sin los artefactos detectables.
Configuración y uso
Configuración básica sin modo incógnito
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)" \
--proxy-server=socks5://user:pass@proxy:1080
Integración con Playwright
const { chromium } = require('playwright-core');
(async () => {
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--proxy-server=socks5://user:pass@proxy:1080',
],
headless: true,
});
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://example.com');
// Verificar comportamiento normal (no incógnito)
const quota = await page.evaluate(async () => {
const est = await navigator.storage.estimate();
return est.quota;
});
console.log('Storage quota:', quota);
// Devuelve un valor de cuota normal, no el valor reducido del modo incógnito
await browser.close();
})();
Integración con Puppeteer
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Todas las API funcionan normalmente
const swSupport = await page.evaluate(() => 'serviceWorker' in navigator);
console.log('Service Worker support:', swSupport); // true
const storageEstimate = await page.evaluate(async () => {
const est = await navigator.storage.estimate();
return { quota: est.quota, usage: est.usage };
});
console.log('Storage:', storageEstimate);
await browser.close();
})();
Sesiones persistentes
Para sesiones que necesitan persistir datos entre reinicios:
# Primera ejecución - crea datos de sesión
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="/data/persistent-session"
# Segunda ejecución - retiene cookies, localStorage, etc.
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="/data/persistent-session"
Combinación con gestión de cookies
La flag --bot-cookies de BotBrowser proporciona gestión de cookies sin modo incógnito:
chrome --bot-profile="/path/to/profile.enc" \
--bot-cookies='[{"name":"session","value":"abc123","domain":".example.com"}]' \
--user-data-dir="$(mktemp -d)"
Esto restaura el estado de sesión en una instancia de navegador limpia, sin los artefactos del modo incógnito.
Verificación
Después de iniciar BotBrowser, verifica que la sesión se comporta como una sesión normal (no incógnita):
const page = await context.newPage();
// 1. Verificar cuota de almacenamiento (debe ser normal, no reducida)
const quota = await page.evaluate(async () => {
const est = await navigator.storage.estimate();
return est.quota;
});
console.log('Storage quota:', quota);
// 2. Verificar disponibilidad de Service Worker
const swAvailable = await page.evaluate(() => 'serviceWorker' in navigator);
console.log('Service Worker available:', swAvailable);
// 3. Verificar IndexedDB
const idbAvailable = await page.evaluate(() => {
return new Promise((resolve) => {
const req = indexedDB.open('test', 1);
req.onsuccess = () => { req.result.close(); resolve(true); };
req.onerror = () => resolve(false);
});
});
console.log('IndexedDB available:', idbAvailable);
// 4. Verificar que la huella digital está controlada (no tu hardware real)
const canvas = await page.evaluate(() => {
const c = document.createElement('canvas');
const ctx = c.getContext('2d');
ctx.fillText('test', 10, 10);
return c.toDataURL().slice(-20);
});
console.log('Canvas hash suffix:', canvas);
Confirma que:
- La cuota de almacenamiento es un valor normal (no el valor reducido del modo incógnito)
- Todas las API están disponibles y funcionales
- Las señales de Canvas y otras huellas digitales provienen del perfil, no de tu hardware real
- No hay artefactos específicos del modo incógnito presentes
Mejores prácticas
-
Nunca uses el modo incógnito con BotBrowser. Los perfiles de BotBrowser están diseñados para sesiones de navegador normales. El modo incógnito agrega artefactos innecesarios.
-
Usa --user-data-dir para el aislamiento de sesión. Los directorios de datos de usuario separados proporcionan un aislamiento limpio sin artefactos de comportamiento.
-
Usa directorios temporales para sesiones no persistentes.
mktemp -dcrea un directorio temporal único que el sistema operativo limpia. -
Siempre carga un perfil. Ejecutar BotBrowser sin
--bot-profilesignifica no tener protección de huellas digitales. El perfil es la base. -
Combina con proxy para una identidad completa. Un perfil controla la huella digital. Un proxy controla la identidad de red. Ambos son necesarios para una identidad consistente.
-
Usa --bot-cookies para restauración de sesión. En lugar de depender de cookies persistentes en un directorio de datos, gestiona las cookies explícitamente con la flag
--bot-cookiespara sesiones reproducibles.
Preguntas frecuentes
¿Puedo usar BotBrowser en modo incógnito? Puedes, pero no deberías. El modo incógnito agrega artefactos detectables sin proporcionar protección adicional de huellas digitales. El enfoque basado en perfiles de BotBrowser proporciona mejor privacidad en modo normal.
¿BotBrowser previene la persistencia de datos locales?
Al usar un --user-data-dir temporal, los datos de sesión no se persisten. Esto logra el mismo objetivo de no persistencia de datos del modo incógnito sin los artefactos asociados.
¿Qué pasa con la navegación privada en Firefox o Safari? Los mismos principios aplican. Los modos de navegación privada en todos los navegadores crean artefactos detectables mientras dejan la huella digital principal sin cambios. El control de huellas digitales basado en perfiles es un enfoque más efectivo.
¿Pueden los sitios web detectar si NO estoy en modo incógnito? En una sesión normal de BotBrowser, el navegador se comporta exactamente como una sesión estándar de Chrome. No hay nada inusual que detectar. Esta es la ventaja de no usar el modo incógnito.
¿El modo incógnito protege contra el rastreo por IP? No. El modo incógnito no cambia tu dirección IP. Para protección de IP, usa un proxy con BotBrowser.
¿Qué pasa con la "protección mejorada contra rastreo" en Firefox? La protección mejorada contra rastreo de Firefox bloquea rastreadores conocidos y limita algo del fingerprinting. Sin embargo, no controla las señales de huella digital subyacentes de la manera en que lo hacen los perfiles de BotBrowser. La protección también es detectable a través de la ausencia de solicitudes bloqueadas.
¿Puedo ejecutar múltiples sesiones sin modo incógnito?
Sí. Usa rutas separadas de --user-data-dir para cada sesión. Cada directorio proporciona aislamiento completo: cookies, caché, localStorage e IndexedDB separados, sin artefactos de modo incógnito.
¿El enfoque de BotBrowser funciona para todos los sitios web? Sí. Debido a que las sesiones de BotBrowser son sesiones de navegador estándar, son compatibles con todos los sitios web. No hay restricciones de API ni diferencias de comportamiento que puedan causar problemas de compatibilidad.
Resumen
El modo incógnito proporciona no persistencia de datos locales pero no protege tu huella digital del navegador. Peor aún, introduce artefactos detectables que hacen tu sesión más distintiva. BotBrowser adopta un enfoque diferente: sesiones de navegador normales con señales de huella digital controladas por perfil. Esto proporciona un verdadero control de identidad sin las limitaciones y artefactos de los modos de navegación privada.
Para la configuración completa de identidad, consulta Cambio de marca del navegador, Control de User Agent y Client Hints y Configuración de zona horaria, idioma regional e idioma. Para identidad de red, consulta Configuración de proxy y Aislamiento de navegador para múltiples cuentas.
Artículos Relacionados
Lleva BotBrowser de la investigación a producción
Usa estas guías para entender el modelo y después avanzar hacia validación multiplataforma, contextos aislados y despliegue de navegador preparado para escalar.