Retour au Blog
Empreinte

Mode de comportement deterministe du navigateur dans BotBrowser

Comment BotBrowser produit un comportement de navigateur coherent et reproductible entre les sessions via la configuration par profils et les flags d'execution.

Pourquoi le determinisme est important

Chaque session de navigateur introduit de petites variations dans le rendu, le timing et la generation de nombres aleatoires. Une identite de navigateur vraiment coherente necessite le controle de toutes les sources d'aleatoire.

Comment BotBrowser atteint le determinisme

BotBrowser controle le non-determinisme via la configuration par profils et les flags d'execution, au niveau du moteur du navigateur.

Identite materielle basee sur les profils

Le flag --bot-profile charge une empreinte complete de l'appareil :

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

Graine de bruit pour la coherence du rendu

Le flag --bot-noise-seed controle tout le bruit de rendu via un generateur de nombres aleatoires deterministe :

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

Controle du timing et de la pile

Des flags supplementaires controlent d'autres sources de variation :

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

Configuration deterministe complete

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"

Chaque execution avec cette configuration produit des sorties d'empreinte identiques.

Verification

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/');
// Enregistrez tous les hashes d'empreinte, puis relancez avec les memes flags.
// Les hashes doivent correspondre exactement.

Pour commencer

  1. Telechargez BotBrowser depuis GitHub
  2. Choisissez un profil du depot de profils
  3. Configurez --bot-noise-seed, --bot-time-scale et --bot-stack-seed pour un determinisme complet
  4. Verifiez avec les outils de test d'empreinte la coherence entre sessions
#deterministic#consistent#fingerprinting#reproducibility#privacy