Cómo funciona la huella digital del navegador: un desglose completo de los parámetros

Cómo funciona la huella digital del navegador: un desglose completo de los parámetros
Markus_automation
Markus_automation

Expert in data parsing and automation

La huella digital del navegador es un método para identificar a un usuario mediante la combinación de características y parámetros de su navegador y dispositivo sin utilizar cookies u otros datos almacenados. Cuando visitas un sitio, un script especial recopila información sobre tu entorno (sistema operativo, versión del navegador, configuración de idioma, zona horaria, resolución de pantalla, lista de fuentes, etc.) y crea un identificador único, la huella digital del navegador. Este identificador persiste más tiempo que las cookies ordinarias y ayuda a los sitios a reconocer tu navegador en visitas repetidas, incluso si el usuario borra las cookies o abre el sitio en modo incógnito. Debido a eso, los sitios pueden rastrear las acciones de un usuario en diferentes sesiones y recursos, vinculándolas a un solo perfil.

Una huella digital del navegador es similar a una huella digital humana, pero la singularidad aquí no es exactamente del 100% y es de aproximadamente 85–90%, lo cual es suficiente para que los sitios identifiquen un perfil. Es importante entender que una huella digital es un conjunto de parámetros. Cambiar uno o dos de ellos no produce un efecto de suplantación significativo: la singularidad disminuye solo en fracciones de un porcentaje, por lo que es importante trabajar en la huella digital de manera integral.

Browser fingerprinting

Analicemos qué parámetros componen una huella digital del navegador, cómo se recopila cada parámetro y qué tanto afecta a la singularidad.

La huella digital del navegador es un método para identificar a un usuario mediante la combinación de características y parámetros de su navegador y dispositivo sin utilizar cookies u otros datos almacenados. Cuando visitas un sitio, un script especial recopila información sobre tu entorno (sistema operativo, versión del navegador, configuración de idioma, zona horaria, resolución de pantalla, lista de fuentes, etc.) y crea un identificador único, la huella digital del navegador. Este identificador persiste más tiempo que las cookies ordinarias y ayuda a los sitios a reconocer tu navegador en visitas repetidas, incluso si el usuario borra las cookies o abre el sitio en modo incógnito. Debido a eso, los sitios pueden rastrear las acciones de un usuario en diferentes sesiones y recursos, vinculándolas a un solo perfil.

Una huella digital del navegador es similar a una huella digital humana, pero la singularidad aquí no es exactamente del 100% y es de aproximadamente 85–90%, lo cual es suficiente para que los sitios identifiquen un perfil. Es importante entender que una huella digital es un conjunto de parámetros. Cambiar uno o dos de ellos no produce un efecto de suplantación significativo: la singularidad disminuye solo en fracciones de un porcentaje, por lo que es importante trabajar en la huella digital de manera integral.

Browser fingerprinting

Analicemos qué parámetros componen una huella digital del navegador, cómo se recopila cada parámetro y qué tanto afecta a la singularidad.

Manténgase en el anonimato, aproveche las ventajas de tener múltiples cuentas y logre sus objetivos con el navegador antidetección de mayor calidad del mercado.

Huellas digitales frente a otros métodos de seguimiento

La tecnología de huellas digitales de los navegadores surgió como respuesta a las limitaciones de los métodos tradicionales de seguimiento de usuarios.

Cookies HTTP

La forma más conocida de reconocer a los usuarios es almacenar un identificador único en el navegador (en un archivo de cookie) y leerlo en cada visita. El inconveniente es que el usuario puede borrar las cookies, con lo que el sitio pierde el ID previamente emitido. Además, este método no funciona en modo de navegación incógnito o cuando el navegador bloquea las cookies de terceros. Los navegadores y extensiones modernos ofrecen más herramientas para bloquear o eliminar automáticamente las cookies, lo que reduce la eficacia de este enfoque. Las huellas digitales, por otro lado, no requieren almacenar datos en el lado del cliente, por lo que funcionan incluso con las cookies desactivadas y en modo incógnito; basta con que el navegador proporcione la información del sistema necesaria.

HTTP cookies

LocalStorage, SessionStorage y otros almacenamientos web

Al igual que las cookies, estas tecnologías almacenan datos localmente en el navegador. Los scripts pueden leerlos en visitas sucesivas. Sin embargo, el usuario puede borrarlos manualmente, y el almacenamiento está aislado por dominio; además, SessionStorage solo está disponible para una pestaña/sesión única.

También existe Evercookie, una técnica que intenta crear cookies "indelebles" al duplicar el identificador en todos los almacenamientos disponibles (cookie HTTP, Flash LSO, Silverlight Isolated Storage, IndexedDB, etc.) y mediante el uso de caché y otros trucos. Pero ni siquiera Evercookie es omnipotente: por ejemplo, no sirve para nada en modo de navegación incógnito, donde los datos no se guardan en el disco duro. Las huellas digitales no guardan nada en el dispositivo; recopilan la información de nuevo en cada visita, por lo que es más difícil detenerlas con los métodos estándar de limpieza.

LocalStorage, SessionStorage, and other web storages

Seguimiento de ETag

No es el método más común pero es útil para usar la caché HTTP en la identificación de usuarios. En la primera solicitud, el servidor devuelve un recurso (por ejemplo, un único píxel) con una cabecera ETag única. El navegador lo guarda en la caché. En una nueva solicitud a la misma URL, el navegador envía automáticamente If-None-Match con la ETag recibida previamente. De este modo, el servidor puede detectar al mismo visitante al comparar la ETag incluso si se han eliminado las cookies. Se trata de un método de seguimiento pasivo que no requiere JavaScript: el identificador se almacena en el mecanismo de almacenamiento en caché. El seguimiento de ETag es difícil de descubrir, sobrevive al borrado de cookies (habría que vaciar la caché) y funciona incluso sin JS. Sin embargo, también se puede contrarrestar si es necesario (desactivar la caché, utilizar proxies intermediarios que borren las cabeceras ETag).

Seguimiento de ETag

Enmascaramiento CNAME

Una técnica que disfraza un rastreador de terceros como si fuera un dominio ajeno (first-party) utilizando un registro DNS CNAME. Por ejemplo, en lugar de cargarse desde tracker.thirdparty.com, el script se descarga desde un subdominio como tracker.​mysite.​com, que apunta al servidor del rastreador a nivel DNS a través de un registro CNAME. El navegador trata dicha solicitud como si procediera del recurso principal, por lo que los bloqueadores de anuncios o rastreadores no detectan el dominio de terceros; las cookies del rastreador se consideran de origen local. El enmascaramiento CNAME puede incluso eludir las protecciones del navegador, como el Intelligent Tracking Prevention de Safari e iniciativas similares. En el contexto de las huellas digitales, este método cobra importancia porque permite a un script de terceros recopilar una huella digital y establecer cookies como si se tratara del propio sitio web. En esencia, el enmascaramiento CNAME oculta al tercero, mientras que las huellas digitales funcionan sin identificadores almacenados. Juntos pueden reforzar el seguimiento (el rastreador se hace pasar por el sitio web y recopila el máximo número de datos de usuario, incluyendo la huella digital, sin que se pueda detener).

Huellas digitales

La obtención de la huella digital del navegador no sustituye a los métodos descritos anteriormente: a menudo se utiliza junto con ellos. Por ejemplo, en la primera visita un script puede recopilar la huella digital y tratar de establecer cookies. Si las cookies se borran más tarde, es posible un reconocimiento repetido al cotejar la huella digital. Además, la huella digital puede complementar otros métodos: por ejemplo, las supercookies almacenadas mediante la caché del favicon pueden conservar un ID único, y el rastreador puede comparar los parámetros del navegador para confirmarlo. En conjunto, estas técnicas crean un sistema de varias capas para el seguimiento de los usuarios.

Parámetros que componen la huella digital del navegador

Una huella digital se forma a partir de decenas de pequeños atributos que, combinados, producen un resultado único. Algunos de ellos se envían automáticamente con cada solicitud HTTP (señales pasivas), mientras que otros se recopilan en el lado del cliente a través de JavaScript y de las APIs web (señales activas).

Parámetros pasivos (cabeceras HTTP y conexión)

Dirección IP

La dirección de su dispositivo en la red, determinada a partir de cada solicitud entrante. Puede indicar la geolocalización (país/ciudad a través de WHOIS o GeoIP) y la afiliación a una organización/proveedor de servicios de internet (ISP). Aunque la dirección IP no suele ser única (muchos usuarios pueden estar detrás de una dirección pública de un único ISP) y puede cambiar de forma dinámica, se incluye en la huella digital como identificador de red básico. Además, si WebRTC está disponible, un script puede realizar una solicitud STUN y obtener su dirección IP real. Una dirección IP por sí sola no es permanente, pero combinada con otras señales aumenta la probabilidad de identificar a alguien de forma exclusiva.

Dirección IP

Agente de usuario

La cadena de agente de usuario que envía cada navegador en la cabecera User-Agent . Contiene información sobre el navegador, su versión, motor, versión del sistema operativo, arquitectura y, en ocasiones, modelo del dispositivo, p.ej. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36. Analizar el agente de usuario le permite distinguir, a grandes rasgos, un navegador Chrome en Windows de un navegador Safari en iOS, etc. — en otras palabras, limitar la identificación al navegador y a la plataforma.

Singularidad del agente de usuario: aunque el agente de usuario se forma a partir de un conjunto limitado de versiones, la combinación de SO y navegador suele ser poco común. Por ejemplo, una versión de navegador más antigua en un sistema operativo específico presentará un agente de usuario único. Las cabeceras no estándar añadidas por las extensiones también pueden aparecer en la huella digital; a partir de ellas, los sitios pueden deducir los plugins o frameworks instalados. Sin embargo, por lo general, resulta sencillo suplantar el agente de usuario, por lo que no debe confiarse únicamente en él; es solo un aspecto de la huella digital.

User Agent

Cabeceras de aceptación y otras características del protocolo

Con cada solicitud, el navegador envía un conjunto de cabeceras: formatos admitidos (Accept, Accept-Language, Accept-Encoding), remitente de origen (referrer), indicadores de almacenamiento en caché, etc. La combinación de estas cabeceras también resulta muy informativa. Por ejemplo, el orden y los contenidos de los campos Accept-Language y Accept-Charset pueden diferir según la configuración local de los sistemas operativos. La presencia de Accept-Encoding: br indica que es compatible con Brotli y, de forma indirecta, que se trata de un navegador relativamente moderno. El orden específico en el que un navegador enumera las cabeceras puede servir de firma del motor del navegador. 

Las señales de nivel HTTP se consideran pasivas, ya que el navegador las facilita automáticamente. Sin JS, el servidor puede conocer el tipo de dispositivo (a través de User-Agent), los idiomas preferidos (Accept-Language), los tipos de contenido con los que es compatible el cliente (por ejemplo, la compatibilidad con WebP en Accept revela un motor Blink), etc. Todos estos pequeños detalles alimentan el modelo de huella digital.

Cabeceras de aceptación y otras características del protocolo

Zona horaria

Aunque la zona horaria del usuario se puede determinar de forma activa (a través de JS), también se puede calcular de manera aproximada a partir de las cabeceras. Por ejemplo, la cabecera Date en HTTP o la hora en los registros del servidor se pueden comparar con la hora de la solicitud en el lado del cliente (por ejemplo, si If-Modified-Since está visible). Lo más habitual es que la zona horaria se obtenga en el lado del cliente. Sin embargo, la diferencia horaria (GMT±X) forma parte de la huella digital porque difiere según las regiones y permanece estable para un usuario a lo largo del tiempo (a menos que el usuario viaje o cambie la configuración de forma manual).

Timezone

Tecnologías compatibles

Algunas cabeceras o características de la conexión pueden indicar las funciones del navegador. Por ejemplo, DNT (Do-Not-Track) está presente si el usuario activó la opción "No rastrear"; de ese modo, DNT: 1 pasa a formar parte de la huella digital (curiosamente, este indicador puede hacer que destaque, porque poca gente lo activa). Otro ejemplo: Upgrade-Insecure-Requests: 1 lo envían la mayoría de los navegadores modernos en la primera transición a HTTPS; su ausencia podría servir para identificar un cliente inusual. Estos sutiles matices rara vez aparecen como campos independientes en las huellas digitales, pero pueden considerarse de forma colectiva.

Parámetros activos (JavaScript y Web API)

Resolución de pantalla y profundidad de color

Disponible a través de los objetos window.screen. Las propiedades screen.width/height devuelven la resolución de pantalla actual (a veces teniendo en cuenta el escalado de la pantalla), y screen.colorDepth devuelve la profundidad de color (normalmente de 24 o 32 bits). Estos parámetros se incluyen con frecuencia en la huella digital porque varían mucho: el tamaño de pantalla de cada persona difiere. En los ordenadores de sobremesa, la ventana del navegador rara vez coincide con la resolución máxima, pero para la huella digital se suele tomar la resolución máxima disponible del usuario, que refleja el tamaño de su pantalla. Por ejemplo, 1920×1080×24 (Full HD, color de 24 bits) es una configuración, 1366×768×24 es otra, etc. Cada resolución combinada con la profundidad de color puede delimitar el grupo al que pertenece el dispositivo. Si el usuario cambia la resolución del monitor o conecta un nuevo monitor, la huella digital cambiará.

Resolución de pantalla y profundidad de color

Configuración de idioma

El navegador expone varios ajustes relacionados: el idioma de la interfaz o del sistema operativo, los idiomas de página preferidos y los formatos locales de fechas y números. JS puede obtener navigator.language (o navigator.languages para ver una lista), con valores como "ru-RU" o "en-US". Normalmente coincide con lo que recibe el servidor en la cabecera Accept-Language. El idioma afecta a las funciones de formato como Date.toString() (nombres de meses en español o inglés, etc.), que también pueden utilizarse para obtener huellas digitales.

Efecto en la singularidad: las combinaciones de idiomas y regiones son muy variables. Por ejemplo, un usuario de habla rusa podría tener la región ru-RU, o uk-UA (si su sistema operativo es ucraniano), o incluso en-US (si la interfaz está en inglés). Estos matices añaden algunos bits de entropía. El número de permutaciones de combinaciones de idiomas únicos crece cada año, pero el idioma por sí solo no garantiza la singularidad absoluta: mucha gente utiliza zonas geográficas populares. Sin embargo, en combinación con otros parámetros, el idioma ayuda a distinguir, por ejemplo, un sistema Chrome/Windows en ruso de otro Chrome/Windows en alemán, creando dos perfiles diferentes.

Configuración de idioma

Zona horaria (a través de JS)

Una forma más precisa de determinar la zona horaria es llamar a una nueva función Date().getTimezoneOffset() mediante JS. Esto devuelve la diferencia de hora local con respecto a UTC en minutos. Por ejemplo, GMT+3 arroja 180 minutos. También puede obtener el nombre de la zona horaria utilizando la Intl API. Este parámetro se incluye casi siempre en la huella digital porque es estable para un dispositivo y varía geográficamente. Dos usuarios con parámetros idénticos pero zonas horarias diferentes producirán huellas digitales distintas.

Nota: algunos generadores de huellas digitales avanzados realizan un seguimiento de los cambios de zona horaria; esto puede indicar que el mismo navegador cambió de contexto (por ejemplo, si el usuario viajó o modificó los ajustes del reloj). Sin embargo, el valor actual de la diferencia horaria se utiliza normalmente para generar una huella digital sencilla.

Zona horaria (a través de JS)

Información sobre la plataforma y la CPU

El objeto navigator proporciona una serie de propiedades relacionadas con la plataforma del dispositivo:

  • navigator.platform — una cadena que indica el sistema operativo o arquitectura, por ejemplo Win32, Linux x86_64, iPhone, etc. Solía ser un parámetro bastante elocuente (que permitía distinguir, por ejemplo, Windows de 32 bits de Windows de 64 bits), pero los navegadores modernos pueden devolver valores truncados o unificados por motivos de privacidad. Si el parámetro está disponible, se incluye en la huella digital.

  • navigator.hardwareConcurrency — el número de hilos lógicos de la CPU (núcleos) en el dispositivo. Por ejemplo, 8 (que puede corresponder a 4 núcleos físicos con Hyper-Threading). Esto añade variabilidad adicional: los dispositivos móviles suelen tener 4 u 8, los ordenadores de sobremesa — 4, 8, 12, 16 y más núcleos. No todos los navegadores informan de un valor exacto, sin embargo, en condiciones normales se recopila este parámetro. Un número inusual de hilos disponibles (por ejemplo, 6 o 10) puede aislar inmediatamente un dispositivo.

  • navigator.deviceMemory — tamaño aproximado de la memoria RAM en gigabytes (entero). Chrome redondea a incrementos de 0.25 (un cuarto). Por ejemplo, 8 GB da un resultado de deviceMemory = 8. Esta señal no es compatible con todos los navegadores. En los que sí está presente, se incluye: el tamaño de la memoria RAM rara vez es un número redondo, por lo que la variabilidad reduce las coincidencias parciales.

  • navigator.oscpu — cadena que detalla el sistema operativo instalado (solo para la API de Firefox). En las versiones modernas de Firefox para Windows devuelve algo parecido a Windows NT 10.0; Win64; x64. Este parámetro apenas se utiliza porque duplica la información extraída del User-Agent.

  • navigator.webdriver — booleano que indica si el navegador responde a una automatización (WebDriver). Si el valor es true, el sitio sabrá que se trata de un bot y podrá alterar su funcionamiento o añadir este factor a la huella digital. Para las funciones de huellas digitales, no se trata tanto de un factor para aportar singularidad, sino más bien de un modo para detectar una automatización. No obstante, navigator.webdriver=true diferencia claramente al cliente (los usuarios comunes presentan un estado de falso/false), por lo que indirectamente forma parte de la huella digital.

Información sobre la plataforma y la CPU

Estado de cookies y almacenamiento activados

Los scripts pueden comprobar si las cookies están habilitadas en el navegador (navigator.cookieEnabled). Si el usuario las ha desactivado, esto le distingue de la mayoría de los demás usuarios (casi todo el mundo mantiene las cookies activadas) y aporta singularidad.

Lista de plugins del navegador

La propiedad navigator.plugins puede devolver la lista de sistemas de plugins NPAPI instalados: Acrobat Reader, Flash, Silverlight, etc., con sus correspondientes versiones (navigator.plugins[i].name/version), aunque los plugins NPAPI prácticamente han desaparecido (Flash y Java están desactivados o eliminados en los navegadores actuales). En Chrome, actualmente navigator.plugins contiene únicamente el visor de PDF integrado; en Firefox, ocurre lo mismo. Sin embargo, la API existe y algunos navegadores todavía pueden devolver algún dato. La huella digital puede incluir los nombres de los plugins y su número total. Una lista vacía también constituye una señal relevante (por ejemplo, el navegador Firefox en modo Tor la tiene vacía, mientras que un navegador Firefox normal podría incluir un plugin OpenH264 integrado). En general, el papel de los plugins tradicionales está en declive; en su lugar, las extensiones están cobrando mayor importancia.

Lista de plugins del navegador

Extensiones instaladas

Idealmente, los sitios web no deberían saber qué extensiones tiene un usuario, pero en la práctica algunas de ellas se pueden detectar indirectamente. AdBlock o Adblock Plus se pueden detectar por las peticiones bloqueadas o por elementos del DOM específicos que introducen. Un sitio puede intentar cargar una URL conocida que haya sido filtrada por AdBlock: si no se carga, es probable que haya un bloqueador presente. 

Otro ejemplo: las extensiones pueden añadir objetos especiales a window (por ejemplo, React Developer Tools añade __REACT_DEVTOOLS_GLOBAL_HOOK__), y un script que encuentre dicho objeto reconocerá la extensión. Docenas de pequeñas comprobaciones pueden construir una "instantánea" del entorno del navegador. A veces, la cantidad aproximada de extensiones se puede deducir del tiempo de respuesta de la página. Cada extensión instalada puede ralentizar el procesamiento de la misma. En cualquier caso, la presencia de bloqueadores conocidos, gestores de contraseñas o extensiones específicas es parcialmente detectable y aumenta la singularidad del perfil.

Lista de fuentes instaladas

Uno de los parámetros más variables. El conjunto de fuentes del sistema depende del sistema operativo, de las aplicaciones instaladas (Microsoft Office añade fuentes, Adobe añade las suyas, etc.) y del idioma del sistema (las fuentes chinas no suelen estar disponibles para los usuarios europeos). ¿Cómo puede detectar una página web las fuentes que tiene instaladas? Históricamente se utilizaba Flash (EnumerateFonts), pero hoy en día existen métodos basados exclusivamente en el navegador:

  • A través de CSS+JS: se crea un elemento oculto con una lista de fuentes de reserva (font-family). Si la primera opción de fuente no está instalada, el texto se procesa en la siguiente de la lista, lo que produce una alteración táctica del ancho y alto del elemento. Mediante JS se pueden medir estas dimensiones para saber qué fuente se ha aplicado. Al probar con cientos de fuentes populares se revela cuáles están instaladas de manera efectiva. Este método requiere mucho tiempo, por lo que a menudo se recurre a la siguiente alternativa.

  • A través de Canvas: al pintar texto con una fuente específica en un lienzo (canvas) y analizar el mapa de bits resultante se puede determinar si dicha fuente está instalada. Básicamente, se trata de una aplicación práctica de la técnica de huella digital de Canvas (ver más adelante).

Lista de fuentes instaladas

El número de combinaciones potenciales del conjunto de fuentes es enorme, ya que poca gente dispone de listas de fuentes idénticas, sobre todo cuando se comparan distintas versiones de sistemas operativos. Una fuente poco común (por ejemplo, fuentes de diseño especializadas) hace que la huella digital sea identificativa de inmediato, lo que convierte a los datos de fuentes en un recurso increíblemente útil para la toma de huellas digitales. La recopilación de fuentes no es instantánea, por lo que algunos scripts almacenan en caché el resultado obtenido.

Huella digital de Canvas

Se trata de un método muy conocido de obtención de huellas digitales que emplea el elemento HTML5 <canvas> para determinar características de renderizado exclusivas. El navegador dibuja un contenido (normalmente texto con una fuente y colores específicos, a veces figuras geométricas) sobre un lienzo virtual; a continuación, el script procesa la función canvas.toDataURL() para obtener una representación por mapa de bits del contenido renderizado. Dicha imagen se decodifica en una cadena de texto base64, que luego se procesa en una función hash para producir la huella digital de Canvas.

¿Por qué es única? Pequeñas diferencias en el sistema (como algoritmos de suavizado de fuentes, versiones del controlador de la GPU o la plataforma utilizada como Linux frente a Windows) provocan sutiles variaciones en la imagen final. Normalmente, se pinta texto con caracteres variados (letras de distintas formas, caracteres especiales) para potenciar al máximo los efectos de renderizado y suavizado. Los scripts también pueden dibujar rectángulos de colores, aplicar transformaciones o sombras para activar funciones gráficas del procesador. Diversos dispositivos darán lugar a representaciones de imagen distintas partiendo del mismo código gráfico en ejecución. La huella digital de Canvas puede mutar tras una actualización de los controladores de la GPU o al cambiar de un chip gráfico integrado a uno dedicado. Sin embargo, combinada con WebGL, resulta de un valor insustituible.

Huella digital de Canvas

Huella digital de WebGL

WebGL es una API diseñada para la representación de gráficos 3D desde el propio navegador (proporcionando así acceso a las tecnologías OpenGL/ES subyacentes). Aporta dos tipos fundamentales de datos orientados a la creación de huellas digitales:

Identificadores directos de la GPU

La extensión de sistema WEBGL_debug_renderer_info permite que un script solicite cadenas de texto de contenido UNMASKED_VENDOR_WEBGL y UNMASKED_RENDERER_WEBGL desde el contexto WebGL. Por lo general, indican detalladamente el fabricante y modelo de la GPU instalada (p. ej., Intel Inc., Intel Iris Plus Graphics 640, o NVIDIA Corporation, GeForce GTX 1070). Estos valores informan con exactitud de la tarjeta de vídeo del usuario. La mayoría de navegadores lo permiten de manera estandarizada (exceptuando el navegador Tor). El modelo de hardware gráfico o GPU aporta un valor de entropía crítica: aun si dos personas operan con idéntico navegador y sistema operativo, si uno utiliza Intel HD Graphics y otro dispone de una RTX 3080, sus huellas digitales resultantes serán diferentes.

Constantes y capacidades funcionales de WebGL

Incluso sin llegar a determinar el nombre exacto de la GPU de forma directa, el contexto activo de WebGL contiene múltiples parámetros específicos que varían según los controladores del sistema y el hardware: unidades de textura máximas, límites de tamaño geométrico, soportes específicos para sombreado y antialiasing, además de otras constantes numéricas diversas. Un script especializado puede ejecutar sucesivamente llamadas a gl.getParameter(...) con distintas constantes para almacenar el conjunto de datos de los resultados. Por ejemplo, MAX_VERTEX_UNIFORM_VECTORS puede indicar un valor de 4,096 para una tarjeta de vídeo frente a 1,024 para otra. El resultado total es un extenso vector de números ordenados, una suerte de perfil del propio subsistema gráfico. Dicho perfil suele ser exclusivo de un dispositivo dado y puede diferir incluso entre tarjetas con modelos idénticos de GPU.

Constantes y capacidades funcionales de WebGL

Además, WebGL se puede emplear del mismo modo que Canvas: esto es, realizando el procesamiento gráfico de una escena 3D compleja hasta obtener su mapa de bits final. Este enfoque puede dejar al descubierto diferencias aún más sutiles (como el procesado interno del renderizado de sombras). En el terreno práctico, librerías consolidadas como FingerprintJS suelen limitarse a realizar consultas de lectura del parámetro UNMASKED_RENDERER (dado que es un método mucho más directo y fiable), aunque ciertos scripts avanzados también aplican funciones hash sobre figuras renderizadas en 3D para lograr una mayor estabilidad. El conjunto de información derivado de WebGL multiplica de forma decisiva la singularidad de la huella digital, de manera especial en los dispositivos móviles: por ejemplo, solía resultar complejo diferenciar distintos modelos de iPhones (todos daban un resultado idéntico en el test Canvas ante GPUs idénticas), mientras que ahora la versión específica y soporte de GPU puede determinar exactamente el tipo de dispositivo si WebGL se encuentra habilitado. Junto con los datos de Canvas, WebGL suministra un recurso de entropía definitivo. Ese es el motivo por el cual los navegadores configurados específicamente para defender la privacidad tratan de falsear u ocultar directamente este flujo de información.

Huella digital de AudioContext

Otro sofisticado método para la toma de huellas digitales utiliza la Web Audio API para deducir una huella de sonido única del dispositivo. Se basa en que la generación y el procesamiento de audio varían ligeramente en función del sistema (debido a las dependencias de las librerías instaladas, el uso de registros de instrucciones SIMD, las imprecisiones de los cálculos de coma flotante, etc.). En la práctica, los valores de huella digital de AudioContext varían notablemente según el navegador utilizado; cada correlación de "navegador + sistema operativo + hardware" devuelve su propio resultado específico y predecible (siempre que el navegador o el sistema operativo no sufran alteraciones de peso). La aportación de la huella sonora refuerza el diagnóstico de identidad: aun cuando los datos representados por Canvas y WebGL den un resultado idéntico de forma casual, la huella digital de audio podrá discernir entre los dispositivos analizados.

Soportes de dispositivos multimedia y sensores de hardware

Durante el proceso de escaneo y obtención de huellas, un script determinado también puede dedicarse a recopilar información sobre el hardware periférico disponible:

  • Llamando a la función navigator.mediaDevices.enumerateDevices(), puede obtener una relación del equipamiento multimedia disponible del usuario (cámaras, micrófonos). El sistema suele devolver datos restrictivos (por ejemplo, "dos cámaras y un micrófono") omitiendo nombres o registros de ID, a menos que el usuario lo permita de forma explícita. Aun así, el número simple de dispositivos físicos del sistema sirve como factor informativo parcial para la distinción

  • El acceso a APIs como Battery Status (que indica el estado de la batería) era un recurso que se utilizaba previamente en la creación de huellas digitales. El nivel de energía relativo y la autonomía restante ofrecían combinaciones singulares de datos. Dado que el alcance de estas consultas de API violaba la esfera íntima (un problema obvio de invasión de privacidad), en la actualidad estas funciones están prohibidas, desactivadas o supeditadas a la concesión de permisos explícitos.

  • Sensores físicos (orientación, dinámicos o de movimiento): la disponibilidad de ciertos sensores instalados y los rangos o escalas de sus datos pueden diferir sustancialmente entre hardware (p. ej., la tasa de refresco del giroscopio instalado). Son indicadores poco comunes, pero teóricamente siguen siendo aptos para cooperar en una huella digital técnica.

Por regla general, cuanto menos común y estándar resulta un dispositivo en su fabricación, mayor información llega a filtrar a través de esta clase de consultas de API. Si un usuario no dispone de webcam o micrófono instalados, esto le diferenciará inmediatamente de la media general en el uso de portátiles, equipos que prácticamente siempre llevan esta clase de dispositivos de serie.

Todo lo expuesto anteriormente, tanto las variables activas como los indicadores de naturaleza pasiva, componen la estructura diagnóstica de la máquina y el navegador. En la práctica real, los rastreadores programados recogen en torno a 10 y 30 parámetros distintos, los estructuran sistemáticamente (por ejemplo, bajo la forma de un objeto informático o un array jerárquico de texto) y lo transforman finalmente en una cadena hash reducida. Muchas librerías especializadas recurren a algoritmos rápidos de hashing como MurmurHash con el propósito de generar un identificador compacto a partir de un paquete aproximado de 500 bytes de datos de atributos correspondientes. De ello se deriva una cadena de caracteres alfanumérica única (p. ej., a3f6e9b12d4...) que el servidor almacena cómodamente a modo de ID del dispositivo de navegación usado.

Soportes de dispositivos multimedia y sensores de hardware

Protección frente a la huella digital del navegador

Los navegadores modernos implementan diversas medidas defensivas para combatir la huella digital. Por ejemplo, el navegador Tor trabaja para que todos sus usuarios se presenten exactamente igual ante los escáneres (mostrando el mismo User-Agent, un tamaño establecido de ventana, un mismo compendio de fuentes, con opciones funcionales como Canvas y AudioContext totalmente desactivadas de fábrica, etc.). Incluso emite alertas a los usuarios aconsejándoles no maximizar la ventana física de navegación si desean preservar su condición de anónimos

Firefox incorpora la opción de ajuste de seguridad privacy.resistFingerprinting, que persigue homogeneizar los valores internos. Por su parte, Brave bloquea opcionalmente scripts de rastreo de terceros introduciendo señales de ruido aleatorio en las consultas de API. Asimismo, se dispone de extensiones de navegador reconocidas como CanvasBlocker o Privacy Badger que desactivan o saturan deliberadamente la ejecución de estos scripts de rastreo sistemático.

Sin embargo, ningún método proporciona una protección absoluta; los navegadores exponen demasiados parámetros. Como respuesta a la creciente demanda de privacidad, han surgido navegadores antidetección (como Octo Browser, MultiLogin y Dolphin {anty}), que permiten a los usuarios emular diferentes huellas digitales y crear docenas de identidades "virtuales" con parámetros distintos para fines como el marketing de afiliación.

La carrera que comenzó hace años continúa: los rastreadores desarrollan nuevas técnicas y los navegadores idean nuevas contramedidas. El usuario medio claramente pierde esta carrera: si uno no se preocupa activamente por la privacidad, cualquier sitio puede capturar su huella digital y correlacionarla con datos de otras fuentes.

Una huella digital consta de muchos componentes, cada uno de los cuales añade un grado de singularidad. Esperamos que este desglose le haya ayudado a comprender exactamente cómo los sitios web pueden identificar su navegador, ya que entender cómo funciona la tecnología es el primer paso para saber dónde está el límite entre la comodidad de la personalización y la protección de los datos personales.

Manténgase en el anonimato, aproveche las ventajas de tener múltiples cuentas y logre sus objetivos con el navegador antidetección de mayor calidad del mercado.

Huellas digitales frente a otros métodos de seguimiento

La tecnología de huellas digitales de los navegadores surgió como respuesta a las limitaciones de los métodos tradicionales de seguimiento de usuarios.

Cookies HTTP

La forma más conocida de reconocer a los usuarios es almacenar un identificador único en el navegador (en un archivo de cookie) y leerlo en cada visita. El inconveniente es que el usuario puede borrar las cookies, con lo que el sitio pierde el ID previamente emitido. Además, este método no funciona en modo de navegación incógnito o cuando el navegador bloquea las cookies de terceros. Los navegadores y extensiones modernos ofrecen más herramientas para bloquear o eliminar automáticamente las cookies, lo que reduce la eficacia de este enfoque. Las huellas digitales, por otro lado, no requieren almacenar datos en el lado del cliente, por lo que funcionan incluso con las cookies desactivadas y en modo incógnito; basta con que el navegador proporcione la información del sistema necesaria.

HTTP cookies

LocalStorage, SessionStorage y otros almacenamientos web

Al igual que las cookies, estas tecnologías almacenan datos localmente en el navegador. Los scripts pueden leerlos en visitas sucesivas. Sin embargo, el usuario puede borrarlos manualmente, y el almacenamiento está aislado por dominio; además, SessionStorage solo está disponible para una pestaña/sesión única.

También existe Evercookie, una técnica que intenta crear cookies "indelebles" al duplicar el identificador en todos los almacenamientos disponibles (cookie HTTP, Flash LSO, Silverlight Isolated Storage, IndexedDB, etc.) y mediante el uso de caché y otros trucos. Pero ni siquiera Evercookie es omnipotente: por ejemplo, no sirve para nada en modo de navegación incógnito, donde los datos no se guardan en el disco duro. Las huellas digitales no guardan nada en el dispositivo; recopilan la información de nuevo en cada visita, por lo que es más difícil detenerlas con los métodos estándar de limpieza.

LocalStorage, SessionStorage, and other web storages

Seguimiento de ETag

No es el método más común pero es útil para usar la caché HTTP en la identificación de usuarios. En la primera solicitud, el servidor devuelve un recurso (por ejemplo, un único píxel) con una cabecera ETag única. El navegador lo guarda en la caché. En una nueva solicitud a la misma URL, el navegador envía automáticamente If-None-Match con la ETag recibida previamente. De este modo, el servidor puede detectar al mismo visitante al comparar la ETag incluso si se han eliminado las cookies. Se trata de un método de seguimiento pasivo que no requiere JavaScript: el identificador se almacena en el mecanismo de almacenamiento en caché. El seguimiento de ETag es difícil de descubrir, sobrevive al borrado de cookies (habría que vaciar la caché) y funciona incluso sin JS. Sin embargo, también se puede contrarrestar si es necesario (desactivar la caché, utilizar proxies intermediarios que borren las cabeceras ETag).

Seguimiento de ETag

Enmascaramiento CNAME

Una técnica que disfraza un rastreador de terceros como si fuera un dominio ajeno (first-party) utilizando un registro DNS CNAME. Por ejemplo, en lugar de cargarse desde tracker.thirdparty.com, el script se descarga desde un subdominio como tracker.​mysite.​com, que apunta al servidor del rastreador a nivel DNS a través de un registro CNAME. El navegador trata dicha solicitud como si procediera del recurso principal, por lo que los bloqueadores de anuncios o rastreadores no detectan el dominio de terceros; las cookies del rastreador se consideran de origen local. El enmascaramiento CNAME puede incluso eludir las protecciones del navegador, como el Intelligent Tracking Prevention de Safari e iniciativas similares. En el contexto de las huellas digitales, este método cobra importancia porque permite a un script de terceros recopilar una huella digital y establecer cookies como si se tratara del propio sitio web. En esencia, el enmascaramiento CNAME oculta al tercero, mientras que las huellas digitales funcionan sin identificadores almacenados. Juntos pueden reforzar el seguimiento (el rastreador se hace pasar por el sitio web y recopila el máximo número de datos de usuario, incluyendo la huella digital, sin que se pueda detener).

Huellas digitales

La obtención de la huella digital del navegador no sustituye a los métodos descritos anteriormente: a menudo se utiliza junto con ellos. Por ejemplo, en la primera visita un script puede recopilar la huella digital y tratar de establecer cookies. Si las cookies se borran más tarde, es posible un reconocimiento repetido al cotejar la huella digital. Además, la huella digital puede complementar otros métodos: por ejemplo, las supercookies almacenadas mediante la caché del favicon pueden conservar un ID único, y el rastreador puede comparar los parámetros del navegador para confirmarlo. En conjunto, estas técnicas crean un sistema de varias capas para el seguimiento de los usuarios.

Parámetros que componen la huella digital del navegador

Una huella digital se forma a partir de decenas de pequeños atributos que, combinados, producen un resultado único. Algunos de ellos se envían automáticamente con cada solicitud HTTP (señales pasivas), mientras que otros se recopilan en el lado del cliente a través de JavaScript y de las APIs web (señales activas).

Parámetros pasivos (cabeceras HTTP y conexión)

Dirección IP

La dirección de su dispositivo en la red, determinada a partir de cada solicitud entrante. Puede indicar la geolocalización (país/ciudad a través de WHOIS o GeoIP) y la afiliación a una organización/proveedor de servicios de internet (ISP). Aunque la dirección IP no suele ser única (muchos usuarios pueden estar detrás de una dirección pública de un único ISP) y puede cambiar de forma dinámica, se incluye en la huella digital como identificador de red básico. Además, si WebRTC está disponible, un script puede realizar una solicitud STUN y obtener su dirección IP real. Una dirección IP por sí sola no es permanente, pero combinada con otras señales aumenta la probabilidad de identificar a alguien de forma exclusiva.

Dirección IP

Agente de usuario

La cadena de agente de usuario que envía cada navegador en la cabecera User-Agent . Contiene información sobre el navegador, su versión, motor, versión del sistema operativo, arquitectura y, en ocasiones, modelo del dispositivo, p.ej. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36. Analizar el agente de usuario le permite distinguir, a grandes rasgos, un navegador Chrome en Windows de un navegador Safari en iOS, etc. — en otras palabras, limitar la identificación al navegador y a la plataforma.

Singularidad del agente de usuario: aunque el agente de usuario se forma a partir de un conjunto limitado de versiones, la combinación de SO y navegador suele ser poco común. Por ejemplo, una versión de navegador más antigua en un sistema operativo específico presentará un agente de usuario único. Las cabeceras no estándar añadidas por las extensiones también pueden aparecer en la huella digital; a partir de ellas, los sitios pueden deducir los plugins o frameworks instalados. Sin embargo, por lo general, resulta sencillo suplantar el agente de usuario, por lo que no debe confiarse únicamente en él; es solo un aspecto de la huella digital.

User Agent

Cabeceras de aceptación y otras características del protocolo

Con cada solicitud, el navegador envía un conjunto de cabeceras: formatos admitidos (Accept, Accept-Language, Accept-Encoding), remitente de origen (referrer), indicadores de almacenamiento en caché, etc. La combinación de estas cabeceras también resulta muy informativa. Por ejemplo, el orden y los contenidos de los campos Accept-Language y Accept-Charset pueden diferir según la configuración local de los sistemas operativos. La presencia de Accept-Encoding: br indica que es compatible con Brotli y, de forma indirecta, que se trata de un navegador relativamente moderno. El orden específico en el que un navegador enumera las cabeceras puede servir de firma del motor del navegador. 

Las señales de nivel HTTP se consideran pasivas, ya que el navegador las facilita automáticamente. Sin JS, el servidor puede conocer el tipo de dispositivo (a través de User-Agent), los idiomas preferidos (Accept-Language), los tipos de contenido con los que es compatible el cliente (por ejemplo, la compatibilidad con WebP en Accept revela un motor Blink), etc. Todos estos pequeños detalles alimentan el modelo de huella digital.

Cabeceras de aceptación y otras características del protocolo

Zona horaria

Aunque la zona horaria del usuario se puede determinar de forma activa (a través de JS), también se puede calcular de manera aproximada a partir de las cabeceras. Por ejemplo, la cabecera Date en HTTP o la hora en los registros del servidor se pueden comparar con la hora de la solicitud en el lado del cliente (por ejemplo, si If-Modified-Since está visible). Lo más habitual es que la zona horaria se obtenga en el lado del cliente. Sin embargo, la diferencia horaria (GMT±X) forma parte de la huella digital porque difiere según las regiones y permanece estable para un usuario a lo largo del tiempo (a menos que el usuario viaje o cambie la configuración de forma manual).

Timezone

Tecnologías compatibles

Algunas cabeceras o características de la conexión pueden indicar las funciones del navegador. Por ejemplo, DNT (Do-Not-Track) está presente si el usuario activó la opción "No rastrear"; de ese modo, DNT: 1 pasa a formar parte de la huella digital (curiosamente, este indicador puede hacer que destaque, porque poca gente lo activa). Otro ejemplo: Upgrade-Insecure-Requests: 1 lo envían la mayoría de los navegadores modernos en la primera transición a HTTPS; su ausencia podría servir para identificar un cliente inusual. Estos sutiles matices rara vez aparecen como campos independientes en las huellas digitales, pero pueden considerarse de forma colectiva.

Parámetros activos (JavaScript y Web API)

Resolución de pantalla y profundidad de color

Disponible a través de los objetos window.screen. Las propiedades screen.width/height devuelven la resolución de pantalla actual (a veces teniendo en cuenta el escalado de la pantalla), y screen.colorDepth devuelve la profundidad de color (normalmente de 24 o 32 bits). Estos parámetros se incluyen con frecuencia en la huella digital porque varían mucho: el tamaño de pantalla de cada persona difiere. En los ordenadores de sobremesa, la ventana del navegador rara vez coincide con la resolución máxima, pero para la huella digital se suele tomar la resolución máxima disponible del usuario, que refleja el tamaño de su pantalla. Por ejemplo, 1920×1080×24 (Full HD, color de 24 bits) es una configuración, 1366×768×24 es otra, etc. Cada resolución combinada con la profundidad de color puede delimitar el grupo al que pertenece el dispositivo. Si el usuario cambia la resolución del monitor o conecta un nuevo monitor, la huella digital cambiará.

Resolución de pantalla y profundidad de color

Configuración de idioma

El navegador expone varios ajustes relacionados: el idioma de la interfaz o del sistema operativo, los idiomas de página preferidos y los formatos locales de fechas y números. JS puede obtener navigator.language (o navigator.languages para ver una lista), con valores como "ru-RU" o "en-US". Normalmente coincide con lo que recibe el servidor en la cabecera Accept-Language. El idioma afecta a las funciones de formato como Date.toString() (nombres de meses en español o inglés, etc.), que también pueden utilizarse para obtener huellas digitales.

Efecto en la singularidad: las combinaciones de idiomas y regiones son muy variables. Por ejemplo, un usuario de habla rusa podría tener la región ru-RU, o uk-UA (si su sistema operativo es ucraniano), o incluso en-US (si la interfaz está en inglés). Estos matices añaden algunos bits de entropía. El número de permutaciones de combinaciones de idiomas únicos crece cada año, pero el idioma por sí solo no garantiza la singularidad absoluta: mucha gente utiliza zonas geográficas populares. Sin embargo, en combinación con otros parámetros, el idioma ayuda a distinguir, por ejemplo, un sistema Chrome/Windows en ruso de otro Chrome/Windows en alemán, creando dos perfiles diferentes.

Configuración de idioma

Zona horaria (a través de JS)

Una forma más precisa de determinar la zona horaria es llamar a una nueva función Date().getTimezoneOffset() mediante JS. Esto devuelve la diferencia de hora local con respecto a UTC en minutos. Por ejemplo, GMT+3 arroja 180 minutos. También puede obtener el nombre de la zona horaria utilizando la Intl API. Este parámetro se incluye casi siempre en la huella digital porque es estable para un dispositivo y varía geográficamente. Dos usuarios con parámetros idénticos pero zonas horarias diferentes producirán huellas digitales distintas.

Nota: algunos generadores de huellas digitales avanzados realizan un seguimiento de los cambios de zona horaria; esto puede indicar que el mismo navegador cambió de contexto (por ejemplo, si el usuario viajó o modificó los ajustes del reloj). Sin embargo, el valor actual de la diferencia horaria se utiliza normalmente para generar una huella digital sencilla.

Zona horaria (a través de JS)

Información sobre la plataforma y la CPU

El objeto navigator proporciona una serie de propiedades relacionadas con la plataforma del dispositivo:

  • navigator.platform — una cadena que indica el sistema operativo o arquitectura, por ejemplo Win32, Linux x86_64, iPhone, etc. Solía ser un parámetro bastante elocuente (que permitía distinguir, por ejemplo, Windows de 32 bits de Windows de 64 bits), pero los navegadores modernos pueden devolver valores truncados o unificados por motivos de privacidad. Si el parámetro está disponible, se incluye en la huella digital.

  • navigator.hardwareConcurrency — el número de hilos lógicos de la CPU (núcleos) en el dispositivo. Por ejemplo, 8 (que puede corresponder a 4 núcleos físicos con Hyper-Threading). Esto añade variabilidad adicional: los dispositivos móviles suelen tener 4 u 8, los ordenadores de sobremesa — 4, 8, 12, 16 y más núcleos. No todos los navegadores informan de un valor exacto, sin embargo, en condiciones normales se recopila este parámetro. Un número inusual de hilos disponibles (por ejemplo, 6 o 10) puede aislar inmediatamente un dispositivo.

  • navigator.deviceMemory — tamaño aproximado de la memoria RAM en gigabytes (entero). Chrome redondea a incrementos de 0.25 (un cuarto). Por ejemplo, 8 GB da un resultado de deviceMemory = 8. Esta señal no es compatible con todos los navegadores. En los que sí está presente, se incluye: el tamaño de la memoria RAM rara vez es un número redondo, por lo que la variabilidad reduce las coincidencias parciales.

  • navigator.oscpu — cadena que detalla el sistema operativo instalado (solo para la API de Firefox). En las versiones modernas de Firefox para Windows devuelve algo parecido a Windows NT 10.0; Win64; x64. Este parámetro apenas se utiliza porque duplica la información extraída del User-Agent.

  • navigator.webdriver — booleano que indica si el navegador responde a una automatización (WebDriver). Si el valor es true, el sitio sabrá que se trata de un bot y podrá alterar su funcionamiento o añadir este factor a la huella digital. Para las funciones de huellas digitales, no se trata tanto de un factor para aportar singularidad, sino más bien de un modo para detectar una automatización. No obstante, navigator.webdriver=true diferencia claramente al cliente (los usuarios comunes presentan un estado de falso/false), por lo que indirectamente forma parte de la huella digital.

Información sobre la plataforma y la CPU

Estado de cookies y almacenamiento activados

Los scripts pueden comprobar si las cookies están habilitadas en el navegador (navigator.cookieEnabled). Si el usuario las ha desactivado, esto le distingue de la mayoría de los demás usuarios (casi todo el mundo mantiene las cookies activadas) y aporta singularidad.

Lista de plugins del navegador

La propiedad navigator.plugins puede devolver la lista de sistemas de plugins NPAPI instalados: Acrobat Reader, Flash, Silverlight, etc., con sus correspondientes versiones (navigator.plugins[i].name/version), aunque los plugins NPAPI prácticamente han desaparecido (Flash y Java están desactivados o eliminados en los navegadores actuales). En Chrome, actualmente navigator.plugins contiene únicamente el visor de PDF integrado; en Firefox, ocurre lo mismo. Sin embargo, la API existe y algunos navegadores todavía pueden devolver algún dato. La huella digital puede incluir los nombres de los plugins y su número total. Una lista vacía también constituye una señal relevante (por ejemplo, el navegador Firefox en modo Tor la tiene vacía, mientras que un navegador Firefox normal podría incluir un plugin OpenH264 integrado). En general, el papel de los plugins tradicionales está en declive; en su lugar, las extensiones están cobrando mayor importancia.

Lista de plugins del navegador

Extensiones instaladas

Idealmente, los sitios web no deberían saber qué extensiones tiene un usuario, pero en la práctica algunas de ellas se pueden detectar indirectamente. AdBlock o Adblock Plus se pueden detectar por las peticiones bloqueadas o por elementos del DOM específicos que introducen. Un sitio puede intentar cargar una URL conocida que haya sido filtrada por AdBlock: si no se carga, es probable que haya un bloqueador presente. 

Otro ejemplo: las extensiones pueden añadir objetos especiales a window (por ejemplo, React Developer Tools añade __REACT_DEVTOOLS_GLOBAL_HOOK__), y un script que encuentre dicho objeto reconocerá la extensión. Docenas de pequeñas comprobaciones pueden construir una "instantánea" del entorno del navegador. A veces, la cantidad aproximada de extensiones se puede deducir del tiempo de respuesta de la página. Cada extensión instalada puede ralentizar el procesamiento de la misma. En cualquier caso, la presencia de bloqueadores conocidos, gestores de contraseñas o extensiones específicas es parcialmente detectable y aumenta la singularidad del perfil.

Lista de fuentes instaladas

Uno de los parámetros más variables. El conjunto de fuentes del sistema depende del sistema operativo, de las aplicaciones instaladas (Microsoft Office añade fuentes, Adobe añade las suyas, etc.) y del idioma del sistema (las fuentes chinas no suelen estar disponibles para los usuarios europeos). ¿Cómo puede detectar una página web las fuentes que tiene instaladas? Históricamente se utilizaba Flash (EnumerateFonts), pero hoy en día existen métodos basados exclusivamente en el navegador:

  • A través de CSS+JS: se crea un elemento oculto con una lista de fuentes de reserva (font-family). Si la primera opción de fuente no está instalada, el texto se procesa en la siguiente de la lista, lo que produce una alteración táctica del ancho y alto del elemento. Mediante JS se pueden medir estas dimensiones para saber qué fuente se ha aplicado. Al probar con cientos de fuentes populares se revela cuáles están instaladas de manera efectiva. Este método requiere mucho tiempo, por lo que a menudo se recurre a la siguiente alternativa.

  • A través de Canvas: al pintar texto con una fuente específica en un lienzo (canvas) y analizar el mapa de bits resultante se puede determinar si dicha fuente está instalada. Básicamente, se trata de una aplicación práctica de la técnica de huella digital de Canvas (ver más adelante).

Lista de fuentes instaladas

El número de combinaciones potenciales del conjunto de fuentes es enorme, ya que poca gente dispone de listas de fuentes idénticas, sobre todo cuando se comparan distintas versiones de sistemas operativos. Una fuente poco común (por ejemplo, fuentes de diseño especializadas) hace que la huella digital sea identificativa de inmediato, lo que convierte a los datos de fuentes en un recurso increíblemente útil para la toma de huellas digitales. La recopilación de fuentes no es instantánea, por lo que algunos scripts almacenan en caché el resultado obtenido.

Huella digital de Canvas

Se trata de un método muy conocido de obtención de huellas digitales que emplea el elemento HTML5 <canvas> para determinar características de renderizado exclusivas. El navegador dibuja un contenido (normalmente texto con una fuente y colores específicos, a veces figuras geométricas) sobre un lienzo virtual; a continuación, el script procesa la función canvas.toDataURL() para obtener una representación por mapa de bits del contenido renderizado. Dicha imagen se decodifica en una cadena de texto base64, que luego se procesa en una función hash para producir la huella digital de Canvas.

¿Por qué es única? Pequeñas diferencias en el sistema (como algoritmos de suavizado de fuentes, versiones del controlador de la GPU o la plataforma utilizada como Linux frente a Windows) provocan sutiles variaciones en la imagen final. Normalmente, se pinta texto con caracteres variados (letras de distintas formas, caracteres especiales) para potenciar al máximo los efectos de renderizado y suavizado. Los scripts también pueden dibujar rectángulos de colores, aplicar transformaciones o sombras para activar funciones gráficas del procesador. Diversos dispositivos darán lugar a representaciones de imagen distintas partiendo del mismo código gráfico en ejecución. La huella digital de Canvas puede mutar tras una actualización de los controladores de la GPU o al cambiar de un chip gráfico integrado a uno dedicado. Sin embargo, combinada con WebGL, resulta de un valor insustituible.

Huella digital de Canvas

Huella digital de WebGL

WebGL es una API diseñada para la representación de gráficos 3D desde el propio navegador (proporcionando así acceso a las tecnologías OpenGL/ES subyacentes). Aporta dos tipos fundamentales de datos orientados a la creación de huellas digitales:

Identificadores directos de la GPU

La extensión de sistema WEBGL_debug_renderer_info permite que un script solicite cadenas de texto de contenido UNMASKED_VENDOR_WEBGL y UNMASKED_RENDERER_WEBGL desde el contexto WebGL. Por lo general, indican detalladamente el fabricante y modelo de la GPU instalada (p. ej., Intel Inc., Intel Iris Plus Graphics 640, o NVIDIA Corporation, GeForce GTX 1070). Estos valores informan con exactitud de la tarjeta de vídeo del usuario. La mayoría de navegadores lo permiten de manera estandarizada (exceptuando el navegador Tor). El modelo de hardware gráfico o GPU aporta un valor de entropía crítica: aun si dos personas operan con idéntico navegador y sistema operativo, si uno utiliza Intel HD Graphics y otro dispone de una RTX 3080, sus huellas digitales resultantes serán diferentes.

Constantes y capacidades funcionales de WebGL

Incluso sin llegar a determinar el nombre exacto de la GPU de forma directa, el contexto activo de WebGL contiene múltiples parámetros específicos que varían según los controladores del sistema y el hardware: unidades de textura máximas, límites de tamaño geométrico, soportes específicos para sombreado y antialiasing, además de otras constantes numéricas diversas. Un script especializado puede ejecutar sucesivamente llamadas a gl.getParameter(...) con distintas constantes para almacenar el conjunto de datos de los resultados. Por ejemplo, MAX_VERTEX_UNIFORM_VECTORS puede indicar un valor de 4,096 para una tarjeta de vídeo frente a 1,024 para otra. El resultado total es un extenso vector de números ordenados, una suerte de perfil del propio subsistema gráfico. Dicho perfil suele ser exclusivo de un dispositivo dado y puede diferir incluso entre tarjetas con modelos idénticos de GPU.

Constantes y capacidades funcionales de WebGL

Además, WebGL se puede emplear del mismo modo que Canvas: esto es, realizando el procesamiento gráfico de una escena 3D compleja hasta obtener su mapa de bits final. Este enfoque puede dejar al descubierto diferencias aún más sutiles (como el procesado interno del renderizado de sombras). En el terreno práctico, librerías consolidadas como FingerprintJS suelen limitarse a realizar consultas de lectura del parámetro UNMASKED_RENDERER (dado que es un método mucho más directo y fiable), aunque ciertos scripts avanzados también aplican funciones hash sobre figuras renderizadas en 3D para lograr una mayor estabilidad. El conjunto de información derivado de WebGL multiplica de forma decisiva la singularidad de la huella digital, de manera especial en los dispositivos móviles: por ejemplo, solía resultar complejo diferenciar distintos modelos de iPhones (todos daban un resultado idéntico en el test Canvas ante GPUs idénticas), mientras que ahora la versión específica y soporte de GPU puede determinar exactamente el tipo de dispositivo si WebGL se encuentra habilitado. Junto con los datos de Canvas, WebGL suministra un recurso de entropía definitivo. Ese es el motivo por el cual los navegadores configurados específicamente para defender la privacidad tratan de falsear u ocultar directamente este flujo de información.

Huella digital de AudioContext

Otro sofisticado método para la toma de huellas digitales utiliza la Web Audio API para deducir una huella de sonido única del dispositivo. Se basa en que la generación y el procesamiento de audio varían ligeramente en función del sistema (debido a las dependencias de las librerías instaladas, el uso de registros de instrucciones SIMD, las imprecisiones de los cálculos de coma flotante, etc.). En la práctica, los valores de huella digital de AudioContext varían notablemente según el navegador utilizado; cada correlación de "navegador + sistema operativo + hardware" devuelve su propio resultado específico y predecible (siempre que el navegador o el sistema operativo no sufran alteraciones de peso). La aportación de la huella sonora refuerza el diagnóstico de identidad: aun cuando los datos representados por Canvas y WebGL den un resultado idéntico de forma casual, la huella digital de audio podrá discernir entre los dispositivos analizados.

Soportes de dispositivos multimedia y sensores de hardware

Durante el proceso de escaneo y obtención de huellas, un script determinado también puede dedicarse a recopilar información sobre el hardware periférico disponible:

  • Llamando a la función navigator.mediaDevices.enumerateDevices(), puede obtener una relación del equipamiento multimedia disponible del usuario (cámaras, micrófonos). El sistema suele devolver datos restrictivos (por ejemplo, "dos cámaras y un micrófono") omitiendo nombres o registros de ID, a menos que el usuario lo permita de forma explícita. Aun así, el número simple de dispositivos físicos del sistema sirve como factor informativo parcial para la distinción

  • El acceso a APIs como Battery Status (que indica el estado de la batería) era un recurso que se utilizaba previamente en la creación de huellas digitales. El nivel de energía relativo y la autonomía restante ofrecían combinaciones singulares de datos. Dado que el alcance de estas consultas de API violaba la esfera íntima (un problema obvio de invasión de privacidad), en la actualidad estas funciones están prohibidas, desactivadas o supeditadas a la concesión de permisos explícitos.

  • Sensores físicos (orientación, dinámicos o de movimiento): la disponibilidad de ciertos sensores instalados y los rangos o escalas de sus datos pueden diferir sustancialmente entre hardware (p. ej., la tasa de refresco del giroscopio instalado). Son indicadores poco comunes, pero teóricamente siguen siendo aptos para cooperar en una huella digital técnica.

Por regla general, cuanto menos común y estándar resulta un dispositivo en su fabricación, mayor información llega a filtrar a través de esta clase de consultas de API. Si un usuario no dispone de webcam o micrófono instalados, esto le diferenciará inmediatamente de la media general en el uso de portátiles, equipos que prácticamente siempre llevan esta clase de dispositivos de serie.

Todo lo expuesto anteriormente, tanto las variables activas como los indicadores de naturaleza pasiva, componen la estructura diagnóstica de la máquina y el navegador. En la práctica real, los rastreadores programados recogen en torno a 10 y 30 parámetros distintos, los estructuran sistemáticamente (por ejemplo, bajo la forma de un objeto informático o un array jerárquico de texto) y lo transforman finalmente en una cadena hash reducida. Muchas librerías especializadas recurren a algoritmos rápidos de hashing como MurmurHash con el propósito de generar un identificador compacto a partir de un paquete aproximado de 500 bytes de datos de atributos correspondientes. De ello se deriva una cadena de caracteres alfanumérica única (p. ej., a3f6e9b12d4...) que el servidor almacena cómodamente a modo de ID del dispositivo de navegación usado.

Soportes de dispositivos multimedia y sensores de hardware

Protección frente a la huella digital del navegador

Los navegadores modernos implementan diversas medidas defensivas para combatir la huella digital. Por ejemplo, el navegador Tor trabaja para que todos sus usuarios se presenten exactamente igual ante los escáneres (mostrando el mismo User-Agent, un tamaño establecido de ventana, un mismo compendio de fuentes, con opciones funcionales como Canvas y AudioContext totalmente desactivadas de fábrica, etc.). Incluso emite alertas a los usuarios aconsejándoles no maximizar la ventana física de navegación si desean preservar su condición de anónimos

Firefox incorpora la opción de ajuste de seguridad privacy.resistFingerprinting, que persigue homogeneizar los valores internos. Por su parte, Brave bloquea opcionalmente scripts de rastreo de terceros introduciendo señales de ruido aleatorio en las consultas de API. Asimismo, se dispone de extensiones de navegador reconocidas como CanvasBlocker o Privacy Badger que desactivan o saturan deliberadamente la ejecución de estos scripts de rastreo sistemático.

Sin embargo, ningún método proporciona una protección absoluta; los navegadores exponen demasiados parámetros. Como respuesta a la creciente demanda de privacidad, han surgido navegadores antidetección (como Octo Browser, MultiLogin y Dolphin {anty}), que permiten a los usuarios emular diferentes huellas digitales y crear docenas de identidades "virtuales" con parámetros distintos para fines como el marketing de afiliación.

La carrera que comenzó hace años continúa: los rastreadores desarrollan nuevas técnicas y los navegadores idean nuevas contramedidas. El usuario medio claramente pierde esta carrera: si uno no se preocupa activamente por la privacidad, cualquier sitio puede capturar su huella digital y correlacionarla con datos de otras fuentes.

Una huella digital consta de muchos componentes, cada uno de los cuales añade un grado de singularidad. Esperamos que este desglose le haya ayudado a comprender exactamente cómo los sitios web pueden identificar su navegador, ya que entender cómo funciona la tecnología es el primer paso para saber dónde está el límite entre la comodidad de la personalización y la protección de los datos personales.

Mantente al día de las últimas noticias sobre Octo Browser

Al hacer clic en el botón, aceptas nuestra Política de privacidad.

Mantente al día de las últimas noticias sobre Octo Browser

Al hacer clic en el botón, aceptas nuestra Política de privacidad.

Mantente al día de las últimas noticias sobre Octo Browser

Al hacer clic en el botón, aceptas nuestra Política de privacidad.

Únete a Octo Browser ahora

O contacta al servicio al cliente en cualquier momento si tienes alguna pregunta.

Únete a Octo Browser ahora

O contacta al servicio al cliente en cualquier momento si tienes alguna pregunta.

Únete a Octo Browser ahora

O contacta al servicio al cliente en cualquier momento si tienes alguna pregunta.

©

2026

Octo Browser

©

2026

Octo Browser

©

2026

Octo Browser