Retour au Blog
Empreinte

Controle de profondeur de pile par BotBrowser : limites de recursion coherentes

Comment BotBrowser controle la profondeur de recursion JavaScript avec le flag --bot-stack-seed pour la coherence multiplateforme.

Le risque pour la vie privee

La profondeur de recursion JavaScript varie selon le moteur du navigateur, le systeme d'exploitation et l'architecture CPU. Cette variation peut servir de signal de pistage. BotBrowser controle la profondeur de pile au niveau du moteur avec le flag --bot-stack-seed.

Le flag --bot-stack-seed

BotBrowser fournit trois modes de controle de profondeur de pile :

# Utiliser la valeur du profil d'empreinte (recommande)
chrome --bot-profile="/path/to/profile.enc" \
       --bot-stack-seed=profile

# Utiliser la limite naturelle de l'hote
chrome --bot-profile="/path/to/profile.enc" \
       --bot-stack-seed=real

# Definir une profondeur personnalisee
chrome --bot-profile="/path/to/profile.enc" \
       --bot-stack-seed=12500

En mode profile, la profondeur de pile correspond a la valeur enregistree depuis l'appareil reel dont le profil a ete capture. C'est le reglage recommande pour la coherence multiplateforme.

Controle au niveau du moteur

La modification se produit dans le moteur du navigateur avant l'execution de tout JavaScript. Elle affecte tous les contextes d'execution : thread principal, Web Workers et iframes. Le debordement de pile se produit naturellement a la profondeur configuree.

Combinaison avec d'autres flags deterministes

Le controle de profondeur de pile fonctionne mieux dans le cadre d'une configuration deterministe complete :

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)"

Verification

Verifiez la coherence de la profondeur de pile avec 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();

Executez ceci sur differentes machines avec le meme profil. La profondeur rapportee doit etre coherente.

Pour commencer

  1. Telechargez BotBrowser depuis GitHub
  2. Choisissez un profil du depot de profils
  3. Ajoutez --bot-stack-seed=profile pour correspondre a la profondeur de pile enregistree
  4. Verifiez avec un test de profondeur recursive sur differentes machines
#stack-depth#javascript#recursion#fingerprinting#privacy