Fingerprinting Network Info API: identidad de conexion
Cómo las propiedades de navigator.connection como effectiveType, RTT y downlink crean huellas digitales de red, y cómo controlarlas.
Quieres la documentación estructurada de Huella digital?
Este artículo forma parte de la biblioteca editorial. Para pasos de configuración, material de referencia y actualizaciones continuas, entra en la sección de docs.
Introducción
Los navegadores web modernos exponen detalles de conexión a través de la API Network Information (navigator.connection). Esta API fue diseñada originalmente para ayudar a los desarrolladores web a entregar contenido de manera más eficiente. Por ejemplo, un sitio web podría servir imágenes de menor resolución a usuarios con conexiones más lentas, o diferir recursos no críticos cuando el ancho de banda es limitado. Propiedades como effectiveType, rtt (tiempo de ida y vuelta), downlink (estimación de ancho de banda) y type (tipo de conexión) contribuyen a estas decisiones adaptativas.
Si bien esta funcionalidad mejora la experiencia de navegación, también introduce una superficie significativa de fingerprinting. Cada vez que tu navegador reporta sus características de conexión, comparte información sobre tu entorno de red, tu ISP y potencialmente incluso tu ubicación geográfica. Estos detalles, combinados con otras señales del navegador, crean un perfil más específico que puede usarse para identificar y rastrear usuarios entre sesiones sin su conocimiento ni consentimiento.
BotBrowser proporciona protección de huella digital a nivel del motor para todas las propiedades de navigator.connection, asegurando que los valores reportados por el navegador coincidan con el perfil de huella digital cargado en lugar de revelar tu entorno de red real.
Por qué la información de red importa para la privacidad
Los datos de conexión de red plantean un desafío de privacidad único porque los valores son dinámicos. A diferencia de propiedades estáticas del navegador como la resolución de pantalla o las fuentes instaladas, las métricas de red cambian con el tiempo. Sin embargo, los patrones creados por estos valores cambiantes aún pueden servir como poderosas herramientas de rastreo, especialmente cuando se combinan con otras señales de huella digital.
Estas son las razones por las que la información de red genera preocupaciones de privacidad para investigadores, probadores y cualquier persona que valore su privacidad en línea:
- Exposición geográfica: los valores de latencia se correlacionan con la distancia física a los servidores. Si tu navegador reporta consistentemente baja latencia a servidores en una región y alta latencia en otra, este patrón revela tu ubicación aproximada, incluso sin datos de geolocalización por IP.
- Perfilado de ISP y tipo de conexión: diferentes proveedores de internet y tecnologías de conexión producen firmas de red características. Una conexión de fibra óptica produce patrones de latencia y ancho de banda mediblemente diferentes a una conexión celular o satelital. Estas diferencias ayudan a delimitar tu identidad.
- Exposición de proxy y VPN: cuando te conectas a través de un proxy o VPN, los valores de
navigator.connectionpueden no alinearse con el comportamiento de red esperado para la ubicación de salida del proxy. Esta discrepancia entre tus datos de conexión reportados y tu dirección IP aparente puede revelar que estás usando un proxy, socavando la privacidad que este pretendía proporcionar. - Correlación de sesiones: aunque las lecturas individuales de red fluctúan, la distribución estadística de tus valores de conexión a lo largo del tiempo forma un patrón reconocible. Este patrón puede usarse para vincular sesiones de navegación separadas al mismo usuario.
La propiedad saveData, que indica si un usuario ha habilitado una preferencia de ahorro de datos, añade otra dimensión a esta huella digital. Solo un pequeño porcentaje de usuarios habilita esta función, convirtiéndola en un identificador distintivo por sí sola.
Investigaciones de INRIA encontraron que la información de red, combinada con análisis de temporización, podría mejorar la precisión de identificación de usuarios entre sesiones hasta en un 8% comparado con el fingerprinting sin datos de red. La API no requiere permisos y opera silenciosamente en segundo plano, haciéndola particularmente preocupante desde una perspectiva de privacidad.
Entendiendo la API Network Information
Qué propiedades se exponen
La API Network Information hace disponibles varias propiedades a través de navigator.connection:
effectiveType: clasifica la conexión comoslow-2g,2g,3go4gbasándose en métricas de rendimiento observadas.rtt: una estimación del tiempo de ida y vuelta en milisegundos, redondeado a los 25ms más cercanos.downlink: una estimación del ancho de banda descendente en megabits por segundo, redondeado a los 25 Kbps más cercanos.type: la tecnología de conexión subyacente, comowifi,cellular,ethernetounknown.saveData: un booleano que indica si el usuario ha solicitado uso reducido de datos.
Por qué las herramientas de privacidad estándar se quedan cortas
Entender por qué los enfoques comunes no abordan adecuadamente el fingerprinting de red ayuda a explicar por qué BotBrowser toma un enfoque diferente.
Las VPN y servidores proxy cambian tu dirección IP visible, pero no modifican los valores reportados por navigator.connection. Tu navegador continúa midiendo y reportando condiciones reales de red. En muchos casos, la sobrecarga de enrutamiento de una VPN hace que la huella de red sea más distintiva al crear una combinación inusual de alta latencia con una dirección IP que sugiere una ubicación cercana.
La navegación privada y los modos incógnito no alteran la información de red en absoluto. La API navigator.connection reporta los mismos valores independientemente de si estás en una sesión de navegación privada.
Las extensiones de navegador pueden intentar anular las propiedades de navigator.connection, pero enfrentan desafíos fundamentales de consistencia. Establecer valores estáticos de anulación crea un perfil de red que nunca cambia, lo cual es en sí inusual. Más importante, las extensiones operan en una capa superior al motor del navegador, lo que significa que otras API y mecanismos internos pueden seguir reportando el estado real de la red, creando contradicciones fáciles de identificar.
Bloquear la API completamente también es problemático. Si navigator.connection falta o devuelve valores inesperados, esa ausencia se convierte en una señal distintiva. Muy pocas configuraciones legítimas de navegador carecen completamente de esta API.
Estas limitaciones existen porque la información de red está profundamente integrada en el motor del navegador. La protección efectiva requiere control al mismo nivel donde se originan los valores.
Cómo BotBrowser protege tu identidad de red
BotBrowser aborda el fingerprinting de información de red a nivel del motor del navegador. En lugar de intentar interceptar o modificar valores después de que han sido generados, BotBrowser controla qué valores reporta la API navigator.connection desde el principio. Esto asegura consistencia completa a través de todos los métodos de acceso, ya sea que un sitio web lea propiedades directamente, escuche eventos de cambio o verifique referencias internas del navegador.
Protección de red basada en perfiles
Cada perfil de huella digital de BotBrowser incluye valores realistas de información de red capturados de configuraciones de dispositivos reales. Cuando cargas un perfil, el navegador aplica automáticamente estos valores:
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
El perfil contiene valores apropiados de rtt, downlink, effectiveType, type y saveData que son internamente consistentes y realistas para el tipo de conexión que el perfil representa. No necesitas configurar manualmente propiedades de red individuales. El perfil las maneja todas juntas, manteniendo las relaciones entre valores que un navegador real exhibiría.
Anulación explícita de información de red
Para escenarios donde necesitas control explícito sobre el reporte de información de red, BotBrowser proporciona el flag --bot-network-info-override:
chrome --bot-profile="/path/to/profile.enc" \
--bot-network-info-override \
--user-data-dir="$(mktemp -d)"
Cuando este flag está habilitado, el navegador reporta valores de información de red exclusivamente del perfil en lugar de medir la conexión de red real. Esto también controla los encabezados Client Hints correspondientes (RTT, Downlink, ECT, Save-Data), asegurando consistencia entre los valores de la API JavaScript y los valores de encabezados HTTP. La anulación se aplica a todas las propiedades y previene que cambios reales del estado de red se filtren a través de la API durante tu sesión.
Protección consistente al usar proxies
Uno de los casos de uso más importantes para la protección de información de red es mantener la consistencia al navegar a través de un proxy. BotBrowser asegura que los valores de navigator.connection se alineen con las características de red esperadas para la ubicación del proxy:
chrome --bot-profile="/path/to/profile.enc" \
--proxy-server="http://us-proxy:8080" \
--bot-network-info-override \
--user-data-dir="$(mktemp -d)"
Cuando un perfil está configurado con valores de red apropiados para la región geográfica del proxy, toda la identidad de navegación permanece coherente. Las características de conexión reportadas coinciden con lo esperado para un usuario en esa ubicación, eliminando las discrepancias que tradicionalmente exponen el uso de proxy.
Gestión de eventos de cambio
En un navegador estándar, el objeto navigator.connection dispara un evento change cuando las condiciones de red cambian. Estas transiciones pueden revelar información sobre tu entorno real, por ejemplo, cambiar de Wi-Fi a datos celulares. BotBrowser gestiona el evento change para coincidir con la estabilidad de red esperada del perfil, asegurando que los cambios reales en tu red no se filtren durante una sesión.
Ejemplos de configuración
Uso básico de CLI
# Protección de información de red basada en perfil
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
# Con anulación explícita para control total
chrome --bot-profile="/path/to/profile.enc" \
--bot-network-info-override \
--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',
'--bot-network-info-override',
],
headless: true,
});
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
const networkInfo = await page.evaluate(() => {
const conn = navigator.connection;
return {
effectiveType: conn.effectiveType,
rtt: conn.rtt,
downlink: conn.downlink,
type: conn.type,
saveData: conn.saveData,
};
});
console.log('Network info:', networkInfo);
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',
'--bot-network-info-override',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('about:blank');
const connInfo = await page.evaluate(() => ({
effectiveType: navigator.connection.effectiveType,
rtt: navigator.connection.rtt,
downlink: navigator.connection.downlink,
}));
console.log('Connection info:', connInfo);
await browser.close();
})();
Consistencia completa de identidad
Para protección completa de huella digital, combina el control de información de red con otras configuraciones de identidad para crear un perfil de navegación totalmente consistente:
chrome --bot-profile="/path/to/profile.enc" \
--proxy-server="socks5://user:pass@us-proxy:1080" \
--bot-network-info-override \
--bot-config-timezone="America/New_York" \
--bot-config-locale="en-US" \
--user-data-dir="$(mktemp -d)"
Esta configuración asegura que tu zona horaria, locale, información de red y dirección IP cuenten la misma historia geográfica, creando una identidad de navegación coherente y realista.
Verificación
Después de lanzar BotBrowser con un perfil, puedes verificar que la protección de información de red funciona correctamente:
const conn = navigator.connection;
console.log('effectiveType:', conn.effectiveType);
console.log('downlink:', conn.downlink, 'Mbps');
console.log('rtt:', conn.rtt, 'ms');
console.log('type:', conn.type);
console.log('saveData:', conn.saveData);
// Verificar que los valores permanezcan estables en el tiempo
setTimeout(() => {
console.log('After 5s - rtt:', conn.rtt, 'downlink:', conn.downlink);
}, 5000);
Qué verificar:
effectiveTypees apropiado para la clase de red del perfil (4gpara conexiones de banda ancha,3gpara conexiones más lentas)- El valor de
rttes consistente con la ubicación del proxy (valores más bajos para servidores cercanos, más altos para distantes) downlinkes realista para el tipo de conexión representado por el perfil- Los valores permanecen estables durante la sesión sin cambios inesperados
saveDatacoincide con la configuración del perfil- Las herramientas de prueba de huella digital no reportan anomalías ni inconsistencias
Mejores prácticas
-
Siempre usa
--bot-network-info-overrideal usar proxies. Esta es la recomendación más importante. Sin la anulación, las mediciones de red reales pueden filtrarse y contradecir las características esperadas para la ubicación del proxy, potencialmente socavando tu configuración de privacidad. -
Haz coincidir los valores de red con la geografía. Elige perfiles con valores de red realistas para la ubicación del proxy que uses. Un perfil configurado para una conexión de banda ancha debería tener valores de latencia que tengan sentido para la región geográfica de tu servidor proxy.
-
Usa perfiles capturados de dispositivos reales. Los perfiles de BotBrowser incluyen valores de información de red de capturas de dispositivos reales, asegurando que sean realistas e internamente consistentes. Esto es mucho más confiable que especificar manualmente parámetros de red individuales.
-
Combina la protección de red con otros controles de huella digital. La información de red es más efectiva como señal de fingerprinting cuando se combina con otros puntos de datos. De manera similar, la protección de información de red es más efectiva cuando se combina con otros controles de BotBrowser, incluyendo zona horaria, locale y protección WebRTC.
-
Verifica tu configuración antes de iniciar sesiones importantes. Usa el script de verificación anterior para confirmar que todos los valores de red se reportan correctamente y permanecen estables en el tiempo.
Preguntas frecuentes
¿La API Network Information está disponible en todos los navegadores?
No. La API completa con todas las propiedades está disponible en Chrome, Edge y Opera. Firefox tiene soporte limitado, y Safari no la soporta en absoluto. Los perfiles de BotBrowser tienen en cuenta el nivel de soporte de API del navegador objetivo, por lo que la huella digital permanece consistente con la marca de navegador que se emula.
¿BotBrowser también controla los encabezados Client Hints relacionados con la información de red?
Sí. Cuando --bot-network-info-override está habilitado, BotBrowser controla tanto los valores de la API JavaScript como los encabezados HTTP Client Hints correspondientes (RTT, Downlink, ECT, Save-Data). Esto asegura consistencia entre lo que la página puede leer via JavaScript y lo que el servidor ve en los encabezados de solicitud.
¿Los sitios web pueden medir la latencia real de red a través de otras API?
Sí. La API Resource Timing (performance.getEntriesByType('resource')) puede medir la latencia real de las solicitudes. Los controles de temporización de BotBrowser a través de --bot-time-scale ayudan a mantener la consistencia entre los valores de navigator.connection y la temporización observable de solicitudes, proporcionando una capa adicional de protección.
¿La propiedad saveData importa para el fingerprinting?
Sí. Solo un pequeño porcentaje de usuarios habilita el modo de ahorro de datos, lo que lo convierte en una señal distintiva cuando está presente. Los perfiles de BotBrowser configuran saveData para coincidir con la configuración del dispositivo objetivo. Para la mayoría de los perfiles de escritorio, se establece en false, reflejando patrones de uso típicos.
¿Cómo maneja BotBrowser los cambios de estado de red durante una sesión?
BotBrowser gestiona el evento change en navigator.connection para que las transiciones de red reales en la máquina anfitriona no se filtren a la página web. El estado de red reportado permanece consistente con el perfil cargado durante toda la sesión, independientemente de lo que suceda en la red real.
¿Esto protege contra la medición de latencia del lado del servidor?
No. La medición de latencia del lado del servidor, donde el servidor mide el tiempo de ida y vuelta de sus propias solicitudes, opera fuera del navegador y no puede ser controlada por ninguna herramienta del lado del cliente. La protección de información de red de BotBrowser controla los valores de la API del lado del cliente. Para consistencia a nivel de red, usa un servidor proxy apropiado que proporcione características de latencia realistas para la región geográfica objetivo.
¿Puedo establecer valores personalizados de información de red sin un perfil?
El flag --bot-network-info-override funciona en conjunto con un perfil cargado. El perfil proporciona los valores específicos a reportar. Si necesitas diferentes características de red, usa un perfil diferente que coincida con tu configuración deseada, o combina tu perfil actual con una configuración de proxy apropiada.
Resumen
La API Network Information expone características de conexión que sirven como señales de fingerprinting y pueden revelar el uso de proxy a través de inconsistencias de latencia y ancho de banda. BotBrowser proporciona protección completa para todas las propiedades de navigator.connection a nivel del motor, usando perfiles y el flag --bot-network-info-override para asegurar que los valores reportados sean realistas, estables y consistentes con tu identidad de navegación general. Al controlar tanto la API JavaScript como los encabezados Client Hints correspondientes, BotBrowser ofrece protección completa de información de red que funciona en armonía con configuraciones de proxy, zona horaria y otros controles de identidad. Para protección relacionada, consulta configuración de proxy, prevención de fugas DNS y configuración de zona horaria y locale.
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.