Volver al Blog
Huella digital

Modo de comportamiento deterministico del navegador en BotBrowser

Como BotBrowser produce comportamiento de navegador consistente y reproducible entre sesiones usando configuracion basada en perfiles y flags de ejecucion.

Por que importa el determinismo

Cada sesion de navegador introduce pequenas variaciones en renderizado, tiempo y generacion de numeros aleatorios. Una identidad de navegador verdaderamente consistente requiere control sobre todas las fuentes de aleatoriedad.

Como BotBrowser logra el determinismo

BotBrowser controla el no-determinismo mediante configuracion basada en perfiles y flags de ejecucion, trabajando a nivel del motor del navegador.

Identidad de hardware basada en perfiles

El flag --bot-profile carga una huella digital completa del dispositivo:

chrome --bot-profile="/profiles/windows-chrome-122.enc" \
       --user-data-dir="$(mktemp -d)"

Semilla de ruido para consistencia de renderizado

El flag --bot-noise-seed controla todo el ruido de renderizado mediante un generador de numeros aleatorios deterministico:

chrome --bot-profile="/profiles/windows-chrome-122.enc" \
       --bot-noise-seed=42 \
       --user-data-dir="$(mktemp -d)"

Control de tiempo y pila

Flags adicionales controlan mas fuentes de variacion:

chrome --bot-profile="/profiles/windows-chrome-122.enc" \
       --bot-noise-seed=42 \
       --bot-time-scale=1.0 \
       --bot-stack-seed=profile \
       --user-data-dir="$(mktemp -d)"

Configuracion deterministica completa

chrome --bot-profile="/profiles/windows-chrome-122.enc" \
       --bot-noise-seed=42 \
       --bot-time-scale=1.0 \
       --bot-stack-seed=profile \
       --bot-config-noise-canvas=true \
       --user-data-dir="/data/session-identity-a"

Cada ejecucion con esta configuracion produce salidas de huella digital identicas.

Verificacion

const { chromium } = require('playwright-core');

const browser = await chromium.launch({
  executablePath: '/path/to/botbrowser/chrome',
  args: [
    '--bot-profile=/profiles/windows-chrome-122.enc',
    '--bot-noise-seed=42',
    '--bot-time-scale=1.0',
    '--bot-stack-seed=profile',
  ],
  headless: true,
});

const page = await (await browser.newContext()).newPage();
await page.goto('https://abrahamjuliot.github.io/creepjs/');
// Registra todos los hashes de huella digital, luego reinicia con los mismos flags.
// Los hashes deben coincidir exactamente.

Primeros pasos

  1. Descarga BotBrowser desde GitHub
  2. Elige un perfil del repositorio de perfiles
  3. Configura --bot-noise-seed, --bot-time-scale y --bot-stack-seed para determinismo completo
  4. Verifica con herramientas de prueba de huellas digitales la consistencia entre sesiones
#deterministic#consistent#fingerprinting#reproducibility#privacy