Huella digital

Fingerprinting MIME y codecs: rastreo multimedia

Cómo MediaCapabilities, canPlayType y las consultas de soporte de códecs crean huellas digitales únicas, y técnicas para controlar la identidad de formatos multimedia.

Documentación

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

Los navegadores modernos soportan una amplia gama de formatos multimedia, desde estándares establecidos como H.264 y AAC hasta códecs más nuevos como AV1, VP9 y Opus. Los desarrolladores web necesitan saber qué formatos puede reproducir un navegador, por lo que la plataforma proporciona varias API para consultar las capacidades multimedia. Estas API ayudan a los sitios web a servir el formato de video y audio adecuado para cada visitante, asegurando una calidad de reproducción y rendimiento óptimos.

Sin embargo, el soporte de códecs varía significativamente entre navegadores, versiones del sistema operativo y configuraciones de hardware. Un navegador en Windows con decodificación de video por hardware reporta capacidades diferentes al mismo navegador en Linux sin aceleración por hardware. Estas diferencias crean una huella digital estable y consultable que no requiere permisos y no produce indicadores visibles para el usuario. Cualquier sitio web puede enumerar el soporte de códecs en milisegundos, construyendo un perfil detallado de las capacidades multimedia de tu dispositivo sin tu conocimiento ni consentimiento.

Esta es la razón por la que el fingerprinting de formatos multimedia es una seria preocupación de privacidad, y por la que BotBrowser proporciona protección integral a nivel del motor del navegador.

Impacto en la privacidad

El fingerprinting de capacidades multimedia es particularmente efectivo porque el panorama de códecs está altamente fragmentado. A diferencia de señales de huella digital más simples que producen un puñado de valores distintos, el soporte de códecs crea una matriz de cientos de combinaciones potenciales. Esta alta entropía lo convierte en una de las técnicas de fingerprinting más poderosas disponibles para los sitios web.

Considera el alcance de la variación que existe entre plataformas:

  • Decodificación de video por hardware depende de la versión del navegador, el modelo de GPU y el sistema operativo. La disponibilidad de aceleración por hardware para códecs específicos revela información detallada sobre el hardware de tu sistema.
  • Códecs específicos de plataforma están disponibles en algunos sistemas operativos pero no en otros. Ciertos códecs se proporcionan a través del framework multimedia nativo del sistema operativo, lo que los convierte en un indicador directo de tu plataforma.
  • Códecs premium (como Dolby Vision y Dolby Atmos) están disponibles solo en combinaciones específicas de hardware y sistema operativo, reduciendo aún más la identidad de tu dispositivo.
  • Combinaciones de contenedor y códec producen diferentes niveles de soporte dependiendo del navegador y la plataforma, creando puntos de datos adicionales para el fingerprinting.
  • Soporte de códecs de audio varía entre plataformas de maneras sutiles que se suman a la huella digital general, aunque la mayoría de los navegadores modernos comparten una línea base común.

La combinación de respuestas a docenas de consultas comunes de formatos multimedia produce un perfil altamente distintivo. Cuando se utilizan consultas de capacidades más avanzadas, se expone información adicional sobre aceleración por hardware, eficiencia energética y reproducción fluida, aumentando aún más la unicidad de la huella digital.

Un análisis de 2022 de los 10.000 sitios principales de Alexa encontró que más del 15% consultaban capacidades multimedia como parte de sus scripts de fingerprinting. Las consultas son rápidas, no requieren permisos y son indistinguibles de la detección legítima de funcionalidades para reproducción multimedia. Esto las hace difíciles de bloquear sin romper la experiencia web.

Por qué esto importa para tu privacidad

Tu hardware revelado

Cada consulta de capacidad multimedia revela algo sobre tu hardware. Si tu GPU soporta decodificación por hardware para un formato específico, qué códecs proporciona nativamente tu sistema operativo y qué nivel de rendimiento puede alcanzar tu dispositivo para varios tipos de multimedia. Toda esta información se expone silenciosamente, sin ninguna notificación ni solicitud de consentimiento.

Identificación persistente

A diferencia de las cookies, que se pueden borrar, tu perfil de soporte de códecs está vinculado a tu hardware y sistema operativo. Permanece igual entre sesiones de navegación, modo incógnito e incluso después de borrar todos los datos del navegador. Esta persistencia hace que el fingerprinting de códecs sea especialmente valioso para propósitos de rastreo.

Rastreo entre sitios

Debido a que tu perfil de códecs es consistente en cada sitio web que visitas, puede usarse como identificador de enlace. Dos sitios web diferentes que consultan tus capacidades multimedia recibirán las mismas respuestas, permitiéndoles correlacionar tus visitas incluso sin cookies compartidas ni información de inicio de sesión.

Sin conciencia del usuario

No hay indicador visual cuando un sitio web consulta tus capacidades multimedia. No aparece ningún diálogo de permisos. No se muestra ningún ícono en la barra de direcciones. Los usuarios no tienen forma de saber que se está recopilando su perfil de códecs, y no hay configuración del navegador para prevenirlo.

Enfoques comunes de protección y sus limitaciones

VPN y servidores proxy

Las VPN no tienen efecto en las consultas de soporte de códecs. La detección de capacidades multimedia ocurre completamente dentro del navegador y no involucra solicitudes de red. Dos dispositivos detrás de la misma VPN reportan perfiles de códecs completamente diferentes basados en su hardware y software local. Las VPN protegen tu dirección IP, pero dejan tu huella digital multimedia completamente expuesta.

Modo incógnito y navegación privada

Los modos de navegación privada no modifican el soporte de códecs. Las mismas respuestas se devuelven en modo incógnito que en una ventana normal, porque el soporte de códecs está determinado por el binario del navegador y la configuración del SO, no por datos almacenados. El modo incógnito está diseñado para prevenir la persistencia de cookies e historial, no para cambiar las capacidades fundamentales de tu dispositivo.

Extensiones de navegador

Las extensiones que intentan modificar las respuestas de capacidades multimedia enfrentan varios problemas fundamentales:

  • Consistencia entre múltiples API: El navegador expone información de códecs a través de varias interfaces diferentes. Modificar una sin modificar las otras crea inconsistencias detectables que son en realidad peores para tu privacidad que la huella digital original.
  • Impacto funcional: Reportar incorrectamente un códec como no soportado cuando en realidad está disponible puede romper la reproducción de video y audio. Reportar un códec como soportado cuando no lo es causa fallos de reproducción. De cualquier manera, la experiencia del usuario se ve afectada.
  • Superficie de detección: Sobrescribir métodos nativos del navegador a nivel de JavaScript cambia sus propiedades internas y puede ser detectado a través de técnicas de inspección.
  • Limitaciones de alcance: Las extensiones típicamente no pueden interceptar consultas de capacidades hechas desde Web Workers o service workers, dejando esos contextos con información sin protección.

Aleatorización

Modificar aleatoriamente las respuestas de códecs es impráctico. A diferencia del fingerprinting de Canvas o audio donde son posibles pequeñas perturbaciones de ruido, el soporte de códecs es fundamentalmente binario: un formato está soportado o no. Las respuestas aleatorias romperían la reproducción multimedia y producirían combinaciones obviamente inválidas que atraen más atención que la huella digital original.

Enfoque de BotBrowser a nivel del motor

BotBrowser controla las respuestas de capacidades multimedia a nivel del motor del navegador, asegurando que todas las API relacionadas con códecs devuelvan resultados consistentes con el perfil de huella digital cargado. Esto no es un parche de JavaScript ni una extensión del navegador. BotBrowser modifica el reporte interno de capacidades multimedia del navegador, de modo que cada API devuelve resultados auténticos y consistentes con el perfil.

Capacidades multimedia basadas en perfil

Cuando se carga un perfil de huella digital, BotBrowser configura la matriz completa de soporte de códecs para coincidir con la plataforma objetivo del perfil:

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

El perfil define el conjunto completo de respuestas de códecs, capturado de un dispositivo real que coincide con la configuración del perfil. Esto incluye:

  • Niveles de soporte correctos para cada combinación de formato multimedia y códec
  • Flags apropiados de aceleración por hardware
  • Indicadores de eficiencia energética y reproducción fluida precisos para la plataforma
  • Respuestas consistentes entre todas las API de capacidades multimedia

Cada respuesta coincide con lo que reportaría un dispositivo real con la configuración perfilada. No hay brechas, no hay inconsistencias y no hay señales que puedan indicar que las respuestas han sido modificadas.

Consistencia entre API

BotBrowser asegura que todas las API relacionadas con códecs estén de acuerdo entre sí. Si una API reporta soporte para un formato dado, las otras API también reportan soporte consistente con los detalles apropiados. Esta consistencia multi-API es crítica porque los scripts de fingerprinting rutinariamente consultan múltiples API y comparan los resultados para detectar inconsistencias.

Respuestas precisas por plataforma

Un perfil de Windows reporta códecs específicos de Windows (incluyendo los proporcionados a través del framework multimedia nativo de la plataforma), mientras que un perfil de Linux omite los códecs de plataforma que no están disponibles en Linux. Esta alineación se extiende a la aceleración por hardware: un perfil que apunta a un sistema con una GPU específica reporta capacidades de decodificación por hardware consistentes con el soporte del decodificador de esa GPU.

Esta precisión de plataforma es lo que separa a BotBrowser de los enfoques superficiales. Cada detalle del perfil de capacidades multimedia corresponde a una configuración real y coherente de hardware y software.

Sin impacto funcional

Debido a que BotBrowser controla el reporte de códecs a nivel del motor en lugar de bloquear llamadas a API, la reproducción multimedia continúa funcionando normalmente. Los sitios web que usan consultas de códecs para la selección legítima de formato reciben información apropiada sobre lo que el navegador puede reproducir. Tu privacidad está protegida sin sacrificar funcionalidad.

Configuración y uso

Uso básico de CLI

La protección de códecs es automática al cargar un perfil:

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

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',
    ],
    headless: true,
  });

  const context = await browser.newContext({ viewport: null });
  const page = await context.newPage();

  // Navegar para verificar que las señales de códecs son consistentes
  await page.goto('https://example.com');

  // Verificar que la protección de códecs está activa
  const codecInfo = await page.evaluate(() => {
    const video = document.createElement('video');
    const codecs = [
      'video/mp4; codecs="avc1.42E01E"',
      'video/webm; codecs="vp9"',
      'video/mp4; codecs="av01.0.01M.08"',
      'audio/mp4; codecs="mp4a.40.2"',
      'audio/webm; codecs="opus"',
    ];

    return codecs.map(c => ({
      codec: c,
      supported: video.canPlayType(c),
    }));
  });

  console.log('Codec support:', JSON.stringify(codecInfo, null, 2));
  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('about:blank');

  // Verificar que las capacidades multimedia coinciden con el perfil
  const capabilities = await page.evaluate(async () => {
    const result = await navigator.mediaCapabilities.decodingInfo({
      type: 'file',
      video: {
        contentType: 'video/mp4; codecs="avc1.640028"',
        width: 1920, height: 1080, bitrate: 5000000, framerate: 30,
      },
    });
    return {
      supported: result.supported,
      smooth: result.smooth,
      powerEfficient: result.powerEfficient,
    };
  });

  console.log('Media capabilities:', capabilities);
  await browser.close();
})();

Verificación

Después de iniciar BotBrowser con un perfil, verifica que tu protección de capacidades multimedia funciona correctamente:

  1. Los niveles de soporte coinciden con los valores esperados para la plataforma objetivo del perfil. Cada códec debe devolver la respuesta que produciría un dispositivo real con la configuración perfilada.
  2. La consistencia entre API se mantiene. Todas las API de capacidades multimedia deben estar de acuerdo entre sí. Si una reporta soporte para un formato, las otras deben ser consistentes.
  3. Los códecs específicos de plataforma se alinean con el sistema operativo del perfil. Los códecs que solo están disponibles en ciertas plataformas deben estar presentes o ausentes según el perfil.
  4. Los resultados son estables entre recargas de página y reinicios del navegador. Tu huella digital de capacidades multimedia debe ser reproducible y consistente cada vez.
  5. Las herramientas de prueba de fingerprinting no reportan anomalías en la detección de capacidades multimedia. Puedes usar sitios web populares de prueba de huellas digitales para verificar que tu perfil de códecs parece auténtico.

Mejores prácticas

  1. Usa perfiles completos. El soporte de códecs está estrechamente vinculado al SO, la versión del navegador y la GPU. Un perfil completo asegura que las tres dimensiones sean consistentes. Los perfiles de BotBrowser se capturan de dispositivos reales, por lo que la completitud está incorporada.

  2. Haz coincidir el perfil con tu caso de uso. Si tu flujo de trabajo involucra sitios con mucho contenido multimedia, elige un perfil que soporte los códecs que esos sitios esperan. Un perfil que carece de ciertos códecs puede causar degradación de calidad en algunos sitios de streaming. BotBrowser ofrece perfiles para varias configuraciones de plataforma que se adaptan a tus necesidades.

  3. Verifica la consistencia entre API. Siempre confirma que múltiples API de capacidades multimedia estén de acuerdo entre sí. Los scripts de fingerprinting comparan resultados entre API, por lo que la consistencia es esencial. BotBrowser maneja esto automáticamente, pero la verificación te da confianza.

  4. No instales extensiones adicionales de códecs. Las extensiones del navegador que agregan soporte de códecs (como h265ify) pueden alterar el perfil de códecs y entrar en conflicto con el control a nivel del motor de BotBrowser. Deja que el perfil maneje completamente el reporte de códecs.

  5. Combina con protección de señales DRM. Las capacidades de códecs multimedia y las capacidades de códecs DRM deben contar una historia consistente. Usar un solo perfil de BotBrowser asegura la alineación entre ambos. Consulta el artículo de protección de señales DRM para más detalles.

Preguntas frecuentes

¿El fingerprinting de códecs funciona en todos los navegadores?

Sí. Todos los navegadores principales implementan API de capacidades multimedia. Las consultas funcionan consistentemente en todas las plataformas, por lo que el fingerprinting de códecs es una técnica tan ampliamente utilizada. BotBrowser protege contra estas consultas independientemente del navegador objetivo del perfil.

¿Cuántas huellas digitales de códecs distintas existen?

El número es muy grande. Con docenas de cadenas de códecs comúnmente consultadas, cada una devolviendo múltiples valores posibles, el espacio teórico de combinaciones es enorme. En la práctica, los dispositivos reales se agrupan en varios cientos de configuraciones comunes, pero la huella digital sigue siendo altamente distintiva. Los perfiles de BotBrowser corresponden a configuraciones de dispositivos reales, asegurando que tu huella digital caiga dentro de la distribución normal.

¿El soporte de códecs cambia entre versiones del navegador?

Sí. Las nuevas versiones del navegador agregan soporte para nuevos códecs y ocasionalmente deprecian los antiguos. Los perfiles de BotBrowser están versionados para coincidir con lanzamientos específicos del navegador, por lo que tu perfil de códecs siempre corresponde a una configuración válida del mundo real.

¿Pueden los sitios web detectar que las respuestas de códecs están controladas?

Si el control se aplica a nivel de JavaScript (sobrescribiendo métodos nativos), puede ser detectado. BotBrowser aplica el control a nivel del motor, por lo que los métodos nativos mismos devuelven los valores consistentes con el perfil. No hay sobrescrituras de JavaScript que detectar. La protección es invisible para el sitio web.

¿Esto afecta la reproducción real de video?

El reporte de códecs de BotBrowser está diseñado para ser consistente con las capacidades de reproducción del navegador bajo el perfil cargado. Los sitios web que usan consultas de códecs para la selección de formato reciben respuestas apropiadas, y la reproducción multimedia funciona normalmente. Obtienes protección de privacidad sin sacrificar tu experiencia de navegación.

¿Qué pasa con las consultas de códecs de medios cifrados (EME)?

Las consultas de códecs EME (usadas para contenido protegido por DRM) también están controladas por el perfil. Consulta el artículo de protección de señales DRM para detalles sobre protecciones específicas de EME. BotBrowser asegura que tanto las consultas generales como las específicas de DRM sean consistentes.

¿Cómo interactúa esto con la negociación de códecs WebRTC?

WebRTC usa negociación de códecs separada a través de SDP (Session Description Protocol). Los perfiles de BotBrowser controlan tanto las consultas de códecs de medios web como las señales de códecs relacionadas con WebRTC para una consistencia integral. Tu huella digital multimedia está protegida en todos los contextos.

Resumen

Las consultas de tipos MIME y soporte de códecs son una superficie de fingerprinting de alta entropía que revela detalles del sistema operativo, hardware y configuración del navegador. Estas consultas se ejecutan silenciosamente, no requieren permisos y producen resultados estables que persisten entre sesiones. BotBrowser controla todas las API de capacidades multimedia a nivel del motor a través de su sistema de perfiles, asegurando respuestas consistentes y precisas entre API que coinciden con la plataforma objetivo. Tu huella digital de códecs es auténtica, estable e indistinguible de un dispositivo real. Combinado con protección de señales DRM, control de huellas de audio y gestión integral de perfiles, BotBrowser proporciona una protección completa de huellas digitales multimedia.

#Mime#Codec#Media#fingerprinting#Privacy#Mediacapabilities

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.