Plataforma

Ejecutar perfiles de navegador Windows en macOS y Linux

Cómo presentar una identidad de navegador Windows completa mientras se ejecuta en macOS o Linux con todas las señales de plataforma controladas a nivel del motor.

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

Windows domina el mercado global de sistemas operativos de escritorio. Según StatCounter, Windows representa aproximadamente el 72% del tráfico de navegadores de escritorio a nivel mundial, con participaciones aún mayores en regiones como Norteamérica, Europa y partes de Asia. Para despliegues de producción ejecutándose en servidores Linux o trabajo de desarrollo en macOS, presentar una identidad de navegador Windows suele ser la opción más natural y estadísticamente apropiada.

Los perfiles de BotBrowser capturados de instalaciones reales de Windows contienen el conjunto completo de señales específicas de Windows: cadenas de plataforma, entornos de fuentes, características de renderizado, métricas de pantalla y más. Cuando se cargan en un host macOS o Linux, cada señal se alinea con Windows. El sistema operativo del host no contribuye nada a la identidad observable del navegador.

Impacto en la privacidad: por qué usar perfiles Windows en hosts no Windows

El argumento estadístico es directo. Si tu automatización de navegador genera tráfico que debería parecer navegación de escritorio ordinaria, Windows es la plataforma de escritorio más común por amplio margen. Ejecutar perfiles de navegador Linux desde servidores Linux crea una anomalía estadística: el uso de escritorio Linux es de aproximadamente el 4% a nivel global, y gran parte proviene de estaciones de trabajo de desarrolladores, no de los patrones de navegación generales que representa la mayoría de la automatizació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 la gestión de múltiples cuentas, los perfiles Windows proporcionan la línea base más discreta para mercados occidentales. Combinado con el proxy, zona horaria y configuración regional adecuados, un perfil de Windows Chrome representa la configuración de navegador individual más común en Internet.

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: Windows usa DirectWrite para el renderizado de texto, que produce patrones de anti-aliasing distintivos en comparación con macOS Core Text o Linux FreeType. Estas diferencias son visibles en el renderizado de texto de Canvas y pueden usarse para identificar la plataforma.

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 cada señal específica de Windows en un solo paquete. Cargar un perfil Windows en cualquier sistema operativo host aplica todas estas señales a nivel del motor durante la inicialización del navegador.

Qué controla un perfil Windows

Cuando cargas un perfil de Windows 11 Chrome en un servidor Linux:

  • navigator.platform devuelve "Win32"
  • navigator.userAgent contiene "Windows NT 10.0; Win64; x64"
  • El encabezado Sec-CH-UA-Platform reporta "Windows"
  • Sec-CH-UA-Platform-Version reporta la versión de Windows capturada
  • Las consultas de fuentes devuelven el conjunto de fuentes de Windows (Segoe UI, Calibri, etc.)
  • El renderizado de texto en Canvas coincide con las características de DirectWrite
  • Las cadenas del renderer WebGL coinciden con la GPU de origen
  • Las métricas de pantalla coinciden con configuraciones comunes de Windows
  • Las dimensiones de decoraciones de ventana coinciden con el comportamiento de Chromium en Windows

Sin configuración adicional

El soporte multiplataforma no es una característica separada que necesite activarse. Cada perfil es inherentemente multiplataforma. Cargas un perfil Windows de la misma manera en Linux, macOS o Windows. El flag --bot-profile es todo lo que se necesita.

Combinación con Edge o Brave

Los usuarios de Windows comúnmente usan Microsoft Edge o Google Chrome. BotBrowser soporta cambio de marca para presentarse como Edge:

chrome --bot-profile="/profiles/win11-edge.enc" \
       --bot-config-browser-brand=edge

Esto actualiza todas las señales específicas de marca (marcas de User-Agent, tokens de marca de Client Hints, flags de características) para coincidir con Edge en Windows.

Configuración y uso

Perfil Windows básico en Linux

# En un servidor Linux
DISPLAY=:10.0 chrome \
  --bot-profile="/profiles/win11-chrome-130.enc" \
  --user-data-dir="$(mktemp -d)"

Perfil Windows con identidad estadounidense

DISPLAY=:10.0 chrome \
  --bot-profile="/profiles/win11-chrome-130.enc" \
  --proxy-server=socks5://user:pass@us-proxy:1080 \
  --bot-config-timezone=America/New_York \
  --bot-config-locale=en-US \
  --bot-config-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-config-timezone=America/Chicago',
      '--bot-config-locale=en-US',
      '--bot-config-languages=en-US,en',
    ],
    headless: true,
    defaultViewport: null,
  });

  const page = await browser.newPage();
  await page.goto('https://example.com');

  const platform = await page.evaluate(() => ({
    platform: navigator.platform,
    ua: navigator.userAgent,
  }));
  console.log(platform);
  await browser.close();
})();

Edge en Linux con proxy europeo

DISPLAY=:10.0 chrome \
  --bot-profile="/profiles/win11-edge.enc" \
  --bot-config-browser-brand=edge \
  --proxy-server=socks5://user:pass@de-proxy:1080 \
  --bot-config-timezone=Europe/Berlin \
  --bot-config-locale=de-DE \
  --bot-config-languages=de-DE,de,en

Verificación

Verifica que el perfil Windows se aplique correctamente comprobando múltiples categorías de señales:

const page = await context.newPage();
await page.goto('https://example.com');

const verification = await page.evaluate(async () => {
  const result = {
    platform: navigator.platform,
    userAgent: navigator.userAgent,
  };

  if (navigator.userAgentData) {
    result.uaPlatform = navigator.userAgentData.platform;
    const highEntropy = await navigator.userAgentData.getHighEntropyValues([
      'platform', 'platformVersion'
    ]);
    result.platformVersion = highEntropy.platformVersion;
  }

  return result;
});

console.log('Windows profile verification:', verification);
// platform: "Win32"
// userAgent: "...Windows NT 10.0; Win64; x64..."
// uaPlatform: "Windows"
Windows Profile Signal Coverage navigator.platform = "Win32" UA: Windows NT 10.0 Fonts: Segoe UI, Calibri... Canvas: DirectWrite CH: Sec-CH-UA-Platform Screen: 1920x1080 @ 1.0 WebGL: source GPU strings

Mejores prácticas

  • Elige perfiles de Windows 10 u 11. Estas son las versiones dominantes actuales de Windows. Los perfiles de Windows 7 están desactualizados para versiones modernas de Chrome.
  • Haz coincidir la ubicación del proxy con el perfil. Windows domina el tráfico de escritorio en Norteamérica, Europa y muchas partes de Asia. Usa perfiles Windows con proxies en estas regiones.
  • Configura DISPLAY en servidores Linux. Siempre configura DISPLAY=:10.0 al ejecutar en Linux, incluso en modo headless.
  • Usa defaultViewport: null en 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-config-timezone, --bot-config-locale y --bot-config-languages para coincidir con la ubicación del proxy.
  • Considera Edge para variedad. Windows + Edge es una combinación común. Usar --bot-config-browser-brand=edge con un perfil Windows diversifica tu conjunto de identidades de navegador.

Preguntas frecuentes

¿Se filtra información del host Linux al ejecutar un perfil Windows?

No. BotBrowser controla todas las señales dependientes de la plataforma a nivel del motor. Ninguna información específica de Linux se expone a sitios web o JavaScript cuando se carga un perfil Windows.

¿Puedo ejecutar perfiles de Windows 11 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.

¿Necesito instalar fuentes de Windows en mi servidor Linux?

No. Los perfiles de BotBrowser contienen el entorno de fuentes del sistema de origen. Las consultas de disponibilidad de fuentes devuelven el conjunto de fuentes de Windows independientemente de las fuentes instaladas en el host.

¿Cómo funciona la resolución de pantalla con perfiles Windows?

El perfil lleva las métricas de pantalla del sistema de origen. Las resoluciones comunes de Windows como 1920x1080 y 1366x768 están representadas en el perfil. La resolución de pantalla del host no se expone.

¿Puedo usar el mismo archivo de perfil en diferentes sistemas operativos host?

Sí. El mismo archivo de perfil .enc funciona de manera idéntica en hosts Linux, macOS y Windows. El perfil determina la identidad del navegador, no el sistema operativo 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 controla todas las señales de plataforma accesibles desde la web. Las API a nivel de sistema como WMI no son accesibles desde contenido web.

¿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

Ejecutar perfiles de navegador Windows en hosts macOS y Linux es una capacidad central de BotBrowser que permite despliegues de producción en infraestructura Linux rentable mientras se presenta la identidad de plataforma de escritorio más común. Todas las señales específicas de Windows se controlan a nivel del motor, sin necesidad de configuración más allá del flag de perfil.

Para temas relacionados, consulta Perfiles de navegador multiplataforma para una visión general multiplataforma más amplia, Emulación Android para perfiles móviles y Cambio de marca de navegador para combinar identidades de plataforma y marca.

#Windows#Macos#Linux#multiplataforma#Profiles

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.