Gestión segura de URL externas en perfiles
Alinea las URL externas con la plataforma elegida y conserva la navegación web estándar.
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.
Por qué las URL externas necesitan una política
Los sistemas operativos permiten a las aplicaciones registrar esquemas de URL personalizados, también conocidos como manejadores de protocolo. Cuando una aplicación como Slack, VS Code, Zoom o Steam se instala, registra un protocolo (como slack://, vscode://, zoommtg:// o steam://) que permite a otras aplicaciones y sitios web lanzarla directamente a través de una URL. Este sistema potencia los enlaces profundos, permitiendo que un sitio web abra una vista específica de una app, se una a una reunión o lance un juego a través de un simple clic en un enlace.
Sin embargo, el mecanismo que hace útiles a los manejadores de protocolo también los convierte en una superficie de huella digital. Los sitios web pueden intentar navegar a URLs de protocolo personalizado y observar la respuesta del navegador. El comportamiento difiere según si la aplicación asociada al protocolo está instalada: el navegador puede mostrar un diálogo para abrir la app, redirigir silenciosamente, mostrar un error o simplemente no hacer nada. Al probar una lista de esquemas de protocolo conocidos, un sitio web puede construir un perfil de qué aplicaciones están instaladas en el dispositivo del visitante, creando una huella digital altamente distintiva.
Impacto en la privacidad
La detección de aplicaciones basada en protocolos es una de las técnicas de huella digital más invasivas para la privacidad porque revela información sobre el entorno de software del usuario en lugar de su hardware. Mientras que las huellas digitales de hardware identifican el dispositivo, las huellas digitales de aplicaciones identifican a la persona y sus actividades.
Las implicaciones de privacidad son significativas:
- Inventario de software: Al probar manejadores de protocolo comunes (Spotify, Discord, Telegram, WhatsApp, Steam, Epic Games, Zoom, Teams, VS Code, Sublime Text y docenas más), un sitio web puede determinar qué aplicaciones están instaladas.
- Perfilado de comportamiento: Las aplicaciones instaladas revelan intereses, profesión y patrones de comportamiento. Un desarrollador con
vscode://,iterm2://ydocker://presenta un perfil diferente al de un gamer consteam://,epicgames://ydiscord://. - Unicidad del dispositivo: La combinación específica de aplicaciones instaladas es altamente única. Incluso entre dispositivos con hardware idéntico, el conjunto de software instalado varía dramáticamente entre usuarios.
- Rastreo entre navegadores: Los manejadores de protocolo se registran a nivel del SO, no del navegador. Esto significa que la misma huella digital de aplicaciones persiste entre todos los navegadores del dispositivo, habilitando el rastreo entre navegadores.
Un estudio de referencia de 2021 por FingerprintJS demostró que la huella digital basada en protocolos podía probar 32 aplicaciones populares en segundos, produciendo una huella digital que identificaba únicamente al 95% de los sujetos de prueba. La técnica funcionaba en Chrome, Firefox, Edge y otros navegadores. La investigación llevó a los proveedores de navegadores a comenzar a implementar mitigaciones, pero la vulnerabilidad fundamental persiste en muchos escenarios.
La técnica es particularmente preocupante porque no requiere permisos y puede realizarse silenciosamente. No hay notificación al usuario de que sus aplicaciones instaladas están siendo sondeadas.
URL externas y privacidad
Cómo funciona la detección de protocolos
La detección de protocolos explota el comportamiento del navegador al navegar a una URL con un esquema personalizado desconocido o registrado. Se han desarrollado varias técnicas:
Método de navegación por iframe: Un sitio web crea un iframe oculto y establece su src a una URL de protocolo personalizado (p.ej., slack://open). Si Slack está instalado, el navegador intenta manejar la navegación. Si no, el iframe recibe un error. La temporización y el comportamiento de esta respuesta difieren según si el manejador existe.
Método de ventana emergente: Abrir un window.open() a una URL de protocolo personalizado produce un comportamiento diferente dependiendo del registro del manejador. En algunos navegadores, la ventana emergente es consumida por el manejador de la aplicación. En otros, permanece como una ventana en blanco.
Detección de enfoque/desenfoque: Cuando un manejador de protocolo lanza una aplicación externa, la ventana del navegador pierde el enfoque. Al monitorear los eventos blur y focus, un sitio web puede detectar si una aplicación se lanzó exitosamente.
Detección basada en temporización: El tiempo que tarda el navegador en procesar una navegación de protocolo varía según si existe un manejador. Los manejadores instalados producen una respuesta más rápida o más lenta (dependiendo del navegador) que los protocolos no registrados, y esta diferencia de temporización es medible.
Comportamiento específico del navegador
Diferentes navegadores manejan protocolos desconocidos de manera diferente:
- Chrome: Muestra un diálogo preguntando si el usuario quiere abrir la aplicación (para manejadores conocidos) o no hace nada / muestra un error mínimo (para protocolos desconocidos). La presencia y comportamiento del diálogo pueden detectarse programáticamente.
- Firefox: Muestra su propio diálogo de manejador para protocolos registrados y una página de error para los no registrados. El comportamiento de navegación revela el registro del manejador.
- Safari: Ha implementado mitigaciones que limitan el sondeo de protocolos, pero la detección basada en temporización aún funciona en algunos escenarios.
- Edge: Comportamiento similar a Chrome (basado en Chromium), con diálogos adicionales de protocolo.
El problema del scheme flooding
En 2021, investigadores demostraron una técnica llamada "scheme flooding" que explotaba los manejadores de protocolo para identificar de forma confiable a los usuarios a través de múltiples navegadores en el mismo dispositivo. La técnica implicaba probar docenas de esquemas de protocolo en rápida sucesión y medir el patrón de respuesta. Debido a que los manejadores de protocolo son registros a nivel del SO, la huella digital era consistente entre todos los navegadores del dispositivo, anulando las protecciones de privacidad a nivel del navegador.
Desafíos de normalización de temporización
El desafío central en la detección de protocolos es la temporización. Cuando un navegador procesa una navegación a una URL de protocolo personalizado:
- Verifica el registro de manejadores de protocolo del SO
- Si existe un manejador, se prepara para lanzar la aplicación (o mostrar un diálogo)
- Si no existe un manejador, pasa a un estado de error
Los pasos 2 y 3 toman diferentes cantidades de tiempo, y esta diferencia de temporización es la señal principal. Incluso cuando los navegadores intentan normalizar el comportamiento visible (mostrando la misma UI para ambos casos), el tiempo de procesamiento subyacente a menudo difiere.
Listas de aplicaciones instaladas
Los protocolos comunes probados en scripts de huella digital incluyen:
- Comunicación:
slack://,discord://,telegram://,whatsapp://,signal:// - Desarrollo:
vscode://,sublime://,atom://,docker:// - Juegos:
steam://,epicgames://,uplay:// - Productividad:
notion://,evernote://,todoist:// - Multimedia:
spotify://,vlc://,figma:// - Reuniones:
zoommtg://,msteams://,webex://
Cada protocolo adicional probado añade entropía a la huella digital. Probar 30-40 protocolos produce una combinación suficientemente única para una identificación confiable.
Límites de los controles del perfil
VPNs y servidores proxy
Las VPNs no tienen efecto en la detección de manejadores de protocolo. El registro de protocolos es una propiedad local del SO, y la detección ocurre completamente dentro del navegador. Las herramientas de privacidad a nivel de red no pueden modificar el comportamiento de los manejadores de protocolo.
Modo incógnito y navegación privada
Los modos de navegación privada no alteran el registro de manejadores de protocolo. Las mismas aplicaciones están instaladas en modo incógnito que en una ventana normal, porque los manejadores de protocolo se registran a nivel del SO, no en el perfil del navegador.
Extensiones de navegador
Las extensiones pueden intentar interceptar la navegación de protocolos:
- Bloquear navegación de iframe: Una extensión puede bloquear todas las navegaciones de protocolo personalizado en iframes, pero esto rompe los enlaces profundos legítimos y es fácilmente detectable porque el comportamiento de bloqueo en sí mismo es observable.
- Normalizar temporización: Las extensiones pueden añadir retrasos a todas las navegaciones de protocolo para normalizar la temporización, pero la sobrecarga de la intercepción de la extensión es en sí misma detectable, y el retraso debe calibrarse cuidadosamente para no romper los enlaces de protocolo legítimos.
- Deshabilitar ventanas emergentes: Bloquear
window.open()para protocolos personalizados previene un método de detección pero rompe el lanzamiento legítimo de aplicaciones.
Mitigaciones del navegador
Los navegadores modernos han implementado algunas protecciones:
- Chrome añadió limitación de velocidad para verificaciones de manejadores de protocolo
- Safari implementó políticas más estrictas de mismo origen para navegación de protocolos
- Firefox añadió requisitos de gesto del usuario para algunos métodos de navegación de protocolo
Estas mitigaciones reducen la efectividad del sondeo rápido de protocolos pero no eliminan las diferencias fundamentales de temporización que permiten la detección.
Gestión alineada con el perfil
BotBrowser alinea el comportamiento de las URL externas con el perfil seleccionado para que las aplicaciones locales no cambien la conducta esperada del perfil.
Normalización de temporización
BotBrowser normaliza la temporización del procesamiento de navegación de protocolos para que los protocolos registrados y no registrados produzcan firmas de temporización indistinguibles. Esto elimina la señal principal usada en la huella digital basada en protocolos:
chrome --bot-profile="path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Respuesta de comportamiento uniforme
Más allá de la temporización, BotBrowser asegura que el comportamiento observable (estados de error, eventos de enfoque/desenfoque, estado del iframe) sea consistente para todos los intentos de navegación de protocolo. El navegador no revela si existe un manejador a través de ningún canal de comportamiento.
Enlaces de protocolo legítimos
La protección no bloquea la navegación de protocolos por completo. Cuando un usuario o script de automatización sigue explícitamente un enlace de protocolo como parte de un flujo de trabajo normal, la navegación procede. Solo el comportamiento de sondeo, la enumeración rápida de manejadores de protocolo a través de análisis de temporización y comportamiento, es neutralizado.
Integración con el perfil
La protección de manejadores de protocolo es parte del perfil de huella digital más amplio. Funciona junto con la identificación del SO, las señales de versión del navegador y otros comportamientos específicos de plataforma para mantener una identidad consistente:
chrome --bot-profile="path/to/profile.enc" \
--bot-noise-seed=42 \
--proxy-server="socks5://user:pass@proxy:1080" \
--user-data-dir="$(mktemp -d)"
Sin filtraciones del entorno host
La garantía clave es que las aplicaciones instaladas en la máquina host no se filtran a través de consultas de manejadores de protocolo. Ya sea que el host tenga Slack, Steam, VS Code o ninguna aplicación personalizada instalada, el comportamiento de los manejadores de protocolo está controlado por el perfil, no por el entorno host.
URL externas en la versión actual
Los contextos con destino Android mantienen las URL externas no compatibles aisladas de las aplicaciones del escritorio. La navegación web estándar continúa dentro del contexto. Así, las aplicaciones instaladas en un worker de escritorio no determinan el comportamiento de un perfil móvil.
La política pertenece al contexto. Tras cambiar la plataforma o el perfil, crea un contexto nuevo. Para validar la versión, confirma que el flujo web aprobado termina correctamente y que una URL externa no compatible no abre una aplicación del escritorio.
Asignar la política del perfil
Uso básico por CLI
La protección de manejadores de protocolo 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();
await page.goto('https://example.com');
// Las consultas de manejadores de protocolo producirán respuestas uniformes
// independientemente de las aplicaciones instaladas en la máquina host
await browser.close();
})();
Integración con Puppeteer
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: 'path/to/botbrowser/chrome',
args: [
'--bot-profile=path/to/profile.enc',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('https://example.com');
// Las señales de manejadores de protocolo están controladas por el perfil
await browser.close();
})();
Combinado con protección de identidad de aplicación
Para privacidad completa a nivel de aplicación:
chrome --bot-profile="path/to/profile.enc" \
--bot-noise-seed=42 \
--bot-config-timezone="Europe/London" \
--bot-config-locale="en-GB" \
--user-data-dir="$(mktemp -d)"
Validar el comportamiento de la aplicación
Después de lanzar BotBrowser con un perfil, verifica la protección de manejadores de protocolo:
// Probar consistencia de temporización de manejadores de protocolo
async function testProtocolTiming(protocol) {
const start = performance.now();
const iframe = document.createElement('iframe');
iframe.style.display = 'none';
document.body.appendChild(iframe);
return new Promise(resolve => {
iframe.onload = () => {
resolve(performance.now() - start);
document.body.removeChild(iframe);
};
iframe.onerror = () => {
resolve(performance.now() - start);
document.body.removeChild(iframe);
};
iframe.src = `${protocol}://test`;
setTimeout(() => {
resolve(performance.now() - start);
if (iframe.parentNode) document.body.removeChild(iframe);
}, 500);
});
}
// Tanto protocolos registrados como no registrados deberían
// producir temporización similar
const timing1 = await testProtocolTiming('slack');
const timing2 = await testProtocolTiming('nonexistentprotocol12345');
console.log('Slack timing:', timing1);
console.log('Unknown protocol timing:', timing2);
console.log('Difference:', Math.abs(timing1 - timing2));
Qué verificar:
- Las diferencias de temporización entre protocolos conocidos y desconocidos son mínimas (dentro del rango de ruido)
- No se activan eventos de enfoque/desenfoque por sondeos de protocolo
- Las páginas de prueba de detección de protocolos (como SchemeFlood.com) muestran resultados uniformes
- Las aplicaciones instaladas en la máquina host no son detectables a través de consultas de protocolo
Medidas de despliegue
-
Usa perfiles completos. La protección de manejadores de protocolo funciona mejor como parte de un perfil integral que controla todas las superficies de huella digital de manera consistente.
-
Prueba contra métodos de detección conocidos. Visita páginas de prueba de huella digital por protocolo para verificar que tu configuración no filtre información de aplicaciones instaladas.
-
Combina con otras protecciones. La detección de manejadores de protocolo se usa frecuentemente junto con la huella digital de Canvas, WebGL y fuentes. Usa un perfil completo para asegurar que todos los vectores estén cubiertos.
-
Mantén los perfiles actualizados. A medida que los navegadores implementan nuevas mitigaciones de manejadores de protocolo y las técnicas de detección evolucionan, los perfiles actualizados aseguran protección continua.
-
Evita instalar aplicaciones innecesarias en el host. Aunque BotBrowser previene las filtraciones de protocolo, minimizar el conjunto de aplicaciones instaladas en el host reduce la superficie de ataque general.
Preguntas sobre URL externas
¿La detección de protocolo puede identificar versiones específicas de aplicaciones?
Generalmente no. La detección de manejadores de protocolo revela si una aplicación está instalada, no qué versión. Sin embargo, algunas aplicaciones registran esquemas de protocolo específicos de versión, lo que puede reducir el rango de versiones.
¿La detección de protocolo funciona en todos los sistemas operativos?
La técnica funciona en Windows, macOS y Linux, pero el comportamiento específico varía según el SO. Los manejadores de protocolo de Windows se registran en el Registro de Windows. macOS usa declaraciones Info.plist en paquetes de aplicaciones. Linux usa archivos .desktop. BotBrowser normaliza el comportamiento independientemente del SO host.
¿Los sitios web pueden detectar la protección de manejadores de protocolo?
La intercepción con JavaScript puede añadir comportamiento específico de la página. BotBrowser aplica la política seleccionada de forma coherente en el contexto.
¿Esto rompe los enlaces de protocolo legítimos?
No. La protección de BotBrowser se dirige al comportamiento de sondeo usado para huella digital, no a la navegación legítima de protocolos. Cuando un usuario o script sigue explícitamente un enlace de protocolo como parte de un flujo de trabajo normal, la navegación funciona normalmente.
¿Cuántos protocolos se pueden probar en un script de huella digital?
La cantidad varía según el sitio y no es un objetivo útil de despliegue. Valida el resultado de la aplicación y conserva la asignación del perfil durante la versión.
¿Es esto lo mismo que el ataque de "scheme flooding"?
Scheme flooding es una forma de huella digital basada en protocolos. BotBrowser aplica una política de perfil coherente a las URL externas.
¿Los navegadores móviles soportan la detección de protocolos?
Sí, pero con más restricciones. Los navegadores móviles (particularmente Safari en iOS) tienen políticas más estrictas respecto a la navegación de manejadores de protocolo. Los perfiles de BotBrowser para configuraciones móviles incluyen el comportamiento apropiado de manejo de protocolos para la plataforma móvil objetivo.
¿registerProtocolHandler() tiene algún rol?
La API navigator.registerProtocolHandler() permite a los sitios web registrarse como manejadores de protocolos específicos. Esta es una preocupación separada de la detección de protocolos instalados por aplicaciones. BotBrowser controla tanto las señales de detección como el comportamiento de registro como parte del perfil.
Mantener coherente la plataforma
Las URL externas pueden revelar información del entorno de escritorio. BotBrowser alinea su tratamiento con la plataforma seleccionada. Los contextos Android mantienen las URL no compatibles separadas de las aplicaciones del escritorio y conservan la navegación web. Consulta la documentación de Android.
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.