Ejecutar perfiles de navegador Windows en macOS y Linux
Cómo presentar un perfil de navegador Windows coherente al ejecutarse en macOS o Linux, validando también los límites del host, la red y la aplicación.
BotBrowser Team
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.
Un perfil de Windows en un host macOS o Linux necesita que lo acompañen las señales de navegador propias de Windows. BotBrowser informa de la plataforma y la región del perfil; no convierte el host en una máquina Windows, y algunos valores siguen dependiendo de él.
Resumen rápido
Una sobrescritura de User-Agent, una máquina virtual, Wine o los comandos de DevTools Protocol dejan huecos que un perfil gestionado evita. Compara la plataforma y la región que informa el perfil con las Client Hints de la solicitud y anota los valores que siguen dependiendo del host.
Contenido de esta guía
Introducción
Windows es un objetivo de escritorio común, pero las estimaciones de mercado varían por fecha, región y método. En Linux o macOS, un perfil Windows es útil cuando la prueba de la aplicación cubre explícitamente el comportamiento del navegador Windows.
Los perfiles de BotBrowser capturados de instalaciones reales de Windows contienen valores de plataforma visibles y documentados. En macOS o Linux son entradas que deben medirse en la sesión real; el host, display, gráficos, red y aplicación todavía pueden afectar las observaciones.
Impacto en la privacidad: por qué usar perfiles Windows en hosts no Windows
Comprueba Win32 en navigator.platform antes de comparar hosts.
El argumento de prueba es directo: elige el perfil que corresponda al comportamiento documentado que la aplicación debe admitir. No selecciones un perfil para que el tráfico parezca normal ni para inferir nada sobre un visitante. Un host Linux puede ejecutar una prueba con perfil Windows si el recorrido está autorizado y se registran los límites del host, red y aplicación.
Para investigadores de privacidad, la capacidad de presentar una identidad Windows desde un host no Windows permite experimentos controlados. Puedes estudiar cómo los sitios web adaptan su comportamiento para usuarios de Windows, probar la entrega de contenido específico por plataforma y analizar sistemas de rastreo que usan señales de plataforma, todo sin mantener una máquina Windows.
Para pruebas de localización o compatibilidad, combina el perfil con proxy, zona horaria y locale elegidos explícitamente, y verifica cada entrada por separado. Estos valores describen un escenario de prueba y no establecen identidad regional ni compatibilidad universal.
Contexto técnico
Señales de navegador específicas de Windows
Una sesión real de navegador Windows expone su plataforma a través de numerosas señales:
Navigator y User-Agent: navigator.platform devuelve "Win32" (incluso en sistemas de 64 bits, por compatibilidad). La cadena User-Agent contiene "Windows NT 10.0" para Windows 10/11. navigator.userAgentData.platform devuelve "Windows" con la versión de la plataforma disponible a través de getHighEntropyValues().
Client Hints: El encabezado HTTP Sec-CH-UA-Platform reporta "Windows" en cada solicitud. Sec-CH-UA-Platform-Version proporciona la versión específica de Windows (por ejemplo, "15.0.0" para Windows 11, "10.0.0" para Windows 10).
Entorno de fuentes: Windows incluye cientos de fuentes, incluyendo Segoe UI (la fuente del sistema), Calibri, Cambria, Consolas, Arial, Times New Roman, Verdana, Tahoma y muchas otras. La enumeración de fuentes a través de CSS o Canvas revela este conjunto específico.
Características de renderizado: El texto puede variar según la versión del navegador, los gráficos del host, las fuentes y la configuración de display. Las observaciones de Canvas deben medirse en cada host compatible y no tratarse como un identificador garantizado. Para ver cómo la medición de texto convierte estas diferencias de fuentes y renderizado en una señal subpixel, consulta Fingerprinting por medicion de texto: rastreo subpixel, que explica qué expone measureText() y dónde se aplican los límites del perfil.
Métricas de pantalla: Las resoluciones de pantalla comunes de Windows (1920x1080, 1366x768, 2560x1440) y los valores de devicePixelRatio (típicamente 1.0 o 1.25) difieren de macOS (donde las pantallas Retina comúnmente tienen DPR de 2.0) y Linux (que varía ampliamente).
Decoraciones de ventana: Las dimensiones de las decoraciones de la ventana del navegador (altura de la barra de título, ancho de la barra de desplazamiento, borde de ventana) difieren entre sistemas operativos. Los cálculos outerWidth - innerWidth y outerHeight - innerHeight revelan estas dimensiones.
Por qué la suplantación simple falla
Cambiar la cadena User-Agent para reportar Windows no cambia el entorno de fuentes, la salida de renderizado, las métricas de pantalla, las dimensiones de decoraciones de ventana ni los Client Hints. Un navegador que dice ser Windows pero renderiza texto con características de FreeType y reporta fuentes de Linux presenta señales contradictorias. Estas inconsistencias son directas de identificar mediante análisis cruzado de señales.
Enfoques comunes y sus limitaciones
Sobrescritura de User-Agent
Frameworks como Playwright y Puppeteer permiten establecer cadenas User-Agent personalizadas. Esto cambia el encabezado HTTP y navigator.userAgent pero deja todas las demás señales sin cambios. navigator.platform, listas de fuentes, salida de renderizado y Client Hints continúan reflejando el sistema operativo real del host.
Máquinas virtuales Windows en Linux
Ejecutar Windows dentro de una máquina virtual en un servidor Linux proporciona señales genuinas de Windows, pero el costo de recursos es alto. Cada VM necesita 4-8 GB de RAM, núcleos de CPU dedicados y una licencia de Windows. A escala, este enfoque es prohibitivamente costoso comparado con la emulación basada en perfiles.
Wine o capas de compatibilidad
Ejecutar Chrome de Windows a través de Wine en Linux produce un entorno de señales mixtas. Algunas señales reflejan Windows, otras reflejan el sistema Linux subyacente. El resultado es un conjunto de inconsistencias peor que ejecutar cualquiera de las plataformas de forma nativa.
Sobrescrituras del protocolo DevTools
Chrome DevTools Protocol permite sobrescribir el User-Agent y algunas propiedades de plataforma. Sin embargo, estas sobrescrituras se aplican después de la inicialización del navegador y no afectan el pipeline de renderizado, el sistema de fuentes ni los encabezados HTTP tempranos como Client Hints en la navegación inicial.
Enfoque de BotBrowser
Los perfiles de BotBrowser capturados de sistemas Windows contienen valores de navegador documentados en un solo paquete. Cargar un perfil Windows aplica esos valores durante el inicio del navegador; no convierte el host en Windows.
Qué controla un perfil Windows
Cuando cargas un perfil de Windows 11 Chrome en un servidor Linux:
navigator.platformdevuelve "Win32"navigator.userAgentcontiene "Windows NT 10.0; Win64; x64"- El encabezado
Sec-CH-UA-Platformreporta "Windows" Sec-CH-UA-Platform-Versionreporta la versión de Windows capturada- La disponibilidad de fuentes puede compararse con el registro capturado en la sesión real, sujeta al host, la versión, los permisos y la ruta de renderizado
- El resultado de fuentes debe compararse con el registro del perfil, sujeto al host y la versión
- El resultado Canvas debe medirse, no suponerse idéntico al renderizador de origen
- WebGL depende de la ruta gráfica del host salvo documentación específica
- Las métricas de pantalla reflejan viewport y display de la sesión
- Las dimensiones de ventana deben comprobarse en el framework y host elegidos
Sin configuración adicional
Cargar un perfil en otro host no establece equivalencia automáticamente. El flag --bot-profile es una entrada de lanzamiento; después verifica la sesión, display, framework, red y aplicación en cada host compatible. Para comparar hosts, perfiles y coste de ejecución antes del despliegue con un método a nivel de implementación, consulta Evaluar la coherencia del navegador antes del despliegue, que cubre la matriz de hosts y objetivos y una línea base versionada.
Combinación con Edge o Brave
Los usuarios de Windows comúnmente usan Microsoft Edge o Google Chrome. BotBrowser puede exponer valores documentados de marca, locale y zona horaria solo en contextos autorizados cubiertos por el perfil y las funcionalidades contratadas; verifica los valores en la sesión. Para una prueba Edge compatible:
chrome --bot-profile="profiles/win11-edge.enc" \
--bot-browser-brand=edge
Puede cambiar valores de marca documentados, como marcas User-Agent, tokens de Client Hints y funciones; verifica esos valores en la sesión y no lo trates como una garantía universal. Para entender por qué User-Agent, Client Hints y navigator.userAgentData deben coincidir en una sola marca, consulta Cambio de marca: Chrome, Edge, Brave, Opera, que explica cómo fijar la marca al lanzar y comprobarla en todas partes.
Configuración y uso
Perfil Windows básico en Linux
# En un servidor Linux
DISPLAY=:88 chrome \
--bot-profile="profiles/win11-chrome-130.enc" \
--user-data-dir="$(mktemp -d)"
Perfil Windows con identidad estadounidense
DISPLAY=:88 chrome \
--bot-profile="profiles/win11-chrome-130.enc" \
--proxy-server=socks5://user:pass@us-proxy:1080 \
--bot-timezone=America/New_York \
--bot-locale=en-US \
--bot-languages=en-US,en
Ejemplo con Puppeteer
const puppeteer = require('puppeteer-core');
(async () => {
const browser = await puppeteer.launch({
executablePath: 'path/to/botbrowser/chrome',
args: [
'--bot-profile=profiles/win11-chrome-130.enc',
'--bot-timezone=America/Chicago',
'--bot-locale=en-US',
'--bot-languages=en-US,en',
],
headless: true,
defaultViewport: null,
});
console.log('Abre una página de prueba autorizada con estas opciones.');
await browser.close();
})();
Edge en Linux con proxy europeo
DISPLAY=:88 chrome \
--bot-profile="profiles/win11-edge.enc" \
--bot-browser-brand=edge \
--proxy-server=socks5://user:pass@de-proxy:1080 \
--bot-timezone=Europe/Berlin \
--bot-locale=de-DE \
--bot-languages=de-DE,de,en
Verificación
Verifica que el perfil Windows se aplique correctamente comprobando múltiples categorías de señales:
const verification = {
platform: 'Win32',
userAgent: '...Windows NT 10.0; Win64; x64...',
uaPlatform: 'Windows',
platformVersion: '15.0.0',
};
console.log('Compara estos valores esperados con la misma sesión autorizada.');
Lista operativa
Registra screen.width y devicePixelRatio en cada ejecución.
Separa el host de ejecución del perfil del navegador. Registra sistema operativo, versión del navegador, identificador del perfil, locale, zona horaria, proxy, viewport y fecha de cada verificación.
Trata el perfil como una entrada de un contexto controlado. Usa un directorio de datos nuevo, datos sintéticos y un cierre determinista. El perfil aporta valores visibles para el navegador, mientras cookies, almacenamiento, permisos, red y datos de aplicación siguen el ciclo de vida del contexto y del servicio.
Comprueba la ruta de red antes de comparar señales. Confirma DNS, autenticación del proxy, TLS, región y respuesta del servicio. Un valor Sec-CH-UA-Platform coincidente no demuestra que la IP, la reputación o el servicio ascendente correspondan a Windows.
Comprueba locale y zona horaria por separado. Verifica idiomas, formatos, desplazamiento horario y selector de locale de la aplicación. Registra una diferencia intencional como caso de prueba.
Mantén estable la política de viewport y display. En Linux configura el servicio de display de tu despliegue; en macOS considera la escala Retina. Compara dimensiones CSS y device-pixel ratio de la sesión con los valores documentados del perfil.
Usa una lista breve: plataforma, familia User-Agent, Client Hints solicitados, fuentes relevantes, métricas de pantalla y locale visible. Guarda observaciones junto al perfil y la versión del navegador. Un resultado correcto es evidencia de esa sesión, no una promesa universal.
Define ciclo de vida y limpieza. Crea un contexto para cada cuenta autorizada, no compartas almacenamiento mutable entre workers y conserva el primer error. Borra solo artefactos propios; el cierre del contexto no elimina registros del servidor.
Fija las versiones cubiertas por tu matriz y repite la lista tras cada actualización. Compara hosts macOS y Linux documentando diferencias esperadas de GPU, rutas, display y red. BotBrowser puede proporcionar valores visibles repetibles en contextos autorizados, pero no puede sustituir el proxy, las fuentes, el hardware gráfico o la validación de la aplicación, y no es una VM Windows.
Asigna cada observación a un responsable. El dueño del perfil confirma valores capturados; el de plataforma revisa display, fuentes y GPU; el de red revisa proxy, DNS y región; y el de aplicación revisa permisos y sesiones. Un valor visible del navegador no demuestra hechos que el perfil no controla.
Documenta la variación esperada antes de comparar hosts. Un worker Linux puede usar display virtual y un portátil macOS escala Retina. Registra rangos aceptables de viewport y tiempos, y compara por separado los valores de plataforma.
Cuando ya no necesites el perfil, aplica la política de retención. Elimina solo artefactos locales autorizados, revoca credenciales de prueba por el proceso normal y conserva un registro mínimo. El archivo de perfil no es una licencia Windows ni una copia de la máquina de origen.
Mejores prácticas
- Elige perfiles cubiertos por la matriz actual. Los perfiles antiguos pueden no corresponder a la versión vigente de Chrome.
- Elige proxy y locale para el caso de prueba. Registra la región y zona horaria previstas, y verifica la respuesta de red por separado de los valores del perfil.
- Usa el display del proyecto solo cuando sea necesario. Las ejecuciones headless nuevas no necesitan
DISPLAY; las ejecuciones headed oheadless=oldcon Xvfb deben usarDISPLAY=:88. - Usa
defaultViewport: nullen Playwright y Puppeteer para permitir que el perfil controle las dimensiones del viewport en lugar del framework. - Combina con configuración regional y zona horaria. Un perfil Windows sin configuración regional correspondiente está incompleto. Configura
--bot-timezone,--bot-localey--bot-languagespara coincidir con la ubicación del proxy. - Considera Edge para cobertura. Usa
--bot-browser-brand=edgecuando la prueba incluya Edge y verifica la marca y sus funciones en la sesión.
Preguntas frecuentes
¿Se filtra información del host Linux al ejecutar un perfil Windows?
No. BotBrowser aplica los valores documentados del perfil dentro del navegador. Ninguna información específica de Linux se expone por esos valores, pero la red, el host y la aplicación deben validarse por separado.
¿Puedo ejecutar perfiles Windows actuales específicamente?
Sí. Los perfiles de Windows 11 reportan la versión de plataforma apropiada en Client Hints. La distinción entre Windows 10 y 11 está principalmente en el valor de Sec-CH-UA-Platform-Version, que se captura del sistema de origen.
La verificación debe compararse con el registro del perfil y no demuestra que el host sea Windows.
¿Necesito instalar fuentes de Windows en mi servidor Linux?
Compara la disponibilidad de fuentes con el registro del perfil en la sesión real. Las fuentes del host, la versión, los permisos y la ruta de renderizado pueden cambiar el resultado; el perfil no garantiza un conjunto fijo sin importar el host.
¿Cómo funciona la resolución de pantalla con perfiles Windows?
El perfil puede aportar métricas esperadas, pero viewport, escala de display, framework y hardware del host deben medirse en la sesión. No supongas que la pantalla del host queda oculta ni que una resolución está garantizada.
¿Puedo usar el mismo archivo de perfil en diferentes sistemas operativos host?
El mismo archivo .enc puede cargarse en hosts Linux, macOS y Windows, pero el resultado debe verificarse por host y versión del navegador. El perfil aporta entradas visibles para el navegador y no determina todas las condiciones del host.
¿Qué pasa con las API específicas de Windows como WMI o DirectX?
Los navegadores web exponen un conjunto limitado de API de plataforma a través de API web estándar. BotBrowser documenta valores del perfil para señales visibles compatibles; las API del sistema como WMI no son accesibles desde contenido web y el comportamiento dependiente del host queda fuera del perfil.
¿Hay diferencia de rendimiento al ejecutar perfiles Windows en Linux?
No. El perfil controla qué señales reporta el navegador. La computación real sigue ejecutándose en el hardware del host a velocidad nativa.
Resumen
BotBrowser admite valores de plataforma visibles para el navegador en contextos controlados y pruebas multiplataforma autorizadas. El perfil no proporciona un sistema operativo Windows ni garantiza resultados idénticos en todos los hosts; la red, la región, las fuentes, los gráficos y la aplicación siguen siendo responsabilidad del equipo.
El límite práctico es claro: el perfil aporta valores iniciales visibles para el navegador, mientras el equipo conserva la responsabilidad del proxy, DNS, permisos, viewport, ciclo de vida del framework y aserciones de la aplicación. Registra el host y el identificador del perfil y repite la misma lista tras cada actualización.
BotBrowser puede configurar valores de plataforma visibles para pruebas multiplataforma autorizadas, pero no proporciona un sistema operativo Windows ni garantiza resultados idénticos en todos los hosts. La validación de red, región, fuentes, gráficos y comportamiento de la aplicación sigue siendo responsabilidad del equipo. Consulta la documentación de identidad de BotBrowser.
Para temas relacionados, consulta Perfiles de navegador multiplataforma, Emulación Android y Cambio de marca de navegador. Consulta también MDN sobre User-Agent Client Hints.
Qué añade frente a la página de referencia
La página de referencia explica el uso del perfil entre hosts. El escenario añadido compara la plataforma y la región informadas por el perfil con las Client Hints de la solicitud y anota los valores que siguen dependiendo del host.
{ "reported": "Win32", "request": "Sec-CH-UA-Platform", "hostDependent": ["screen.width", "devicePixelRatio"] }
Fuentes
Conclusión práctica
Revisa Linux o macOS sin afirmar que sea una máquina Windows: Sec-CH-UA-Platform debe coincidir con las Client Hints de la solicitud. Documenta los valores que dependen del host en lugar de tratarlos como fallos del perfil.
Este artículo forma parte de la guía: Superficies de la plataforma web: mapa de revisión
Artículos Relacionados
Perfiles de navegador entre plataformas: una identidad en cada host
PlataformaEvaluar la coherencia del navegador antes del despliegue
RedConfiguración de proxy del navegador: guía de SOCKS5, HTTP y HTTPS
Huella digitalHuella digital WebGPU: la próxima generación de rastreo por GPU
Huella digitalFingerprinting por medicion de texto: rastreo subpixel
IdentidadCambio de marca: Chrome, Edge, Brave, Opera
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.