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
- Descarga BotBrowser desde GitHub
- Elige un perfil del repositorio de perfiles
- Configura
--bot-noise-seed,--bot-time-scaley--bot-stack-seedpara determinismo completo - Verifica con herramientas de prueba de huellas digitales la consistencia entre sesiones