Control de profundidad de pila en BotBrowser: Limites de recursion consistentes
Como BotBrowser controla la profundidad de recursion JavaScript con el flag --bot-stack-seed para consistencia multiplataforma.
El riesgo de privacidad
La profundidad de recursion JavaScript varia segun el motor del navegador, sistema operativo y arquitectura de CPU. Esta variacion puede servir como senal de rastreo. BotBrowser controla la profundidad de pila a nivel de motor con el flag --bot-stack-seed.
El flag --bot-stack-seed
BotBrowser proporciona tres modos de control de profundidad de pila:
# Usar el valor del perfil de huella digital (recomendado)
chrome --bot-profile="/path/to/profile.enc" \
--bot-stack-seed=profile
# Usar el limite natural del host
chrome --bot-profile="/path/to/profile.enc" \
--bot-stack-seed=real
# Establecer una profundidad personalizada
chrome --bot-profile="/path/to/profile.enc" \
--bot-stack-seed=12500
Cuando se establece en profile, la profundidad de pila coincide con el valor registrado del dispositivo real del que se capturo el perfil. Esta es la configuracion recomendada para consistencia multiplataforma.
Control a nivel de motor
La modificacion ocurre dentro del motor del navegador antes de que se ejecute cualquier JavaScript. Afecta a todos los contextos de ejecucion: hilo principal, Web Workers e iframes. El desbordamiento de pila ocurre naturalmente en la profundidad configurada.
Combinacion con otros flags deterministicos
El control de profundidad de pila funciona mejor como parte de una configuracion deterministica completa:
chrome --bot-profile="/path/to/profile.enc" \
--bot-stack-seed=profile \
--bot-noise-seed=42 \
--bot-time-scale=1.0 \
--user-data-dir="$(mktemp -d)"
Verificacion
Verifica la consistencia de profundidad de pila con Playwright:
const { chromium } = require('playwright-core');
const browser = await chromium.launch({
executablePath: '/path/to/botbrowser/chrome',
args: [
'--bot-profile=/path/to/profile.enc',
'--bot-stack-seed=profile',
],
headless: true,
});
const page = await (await browser.newContext()).newPage();
const depth = await page.evaluate(() => {
let d = 0;
function r() { d++; r(); }
try { r(); } catch (e) { return d; }
});
console.log('Stack depth:', depth);
await browser.close();
Ejecuta esto en diferentes maquinas con el mismo perfil. La profundidad reportada debe ser consistente.
Primeros pasos
- Descarga BotBrowser desde GitHub
- Elige un perfil del repositorio de perfiles
- Agrega
--bot-stack-seed=profilepara coincidir con la profundidad de pila registrada - Verifica con una prueba de profundidad recursiva en diferentes maquinas