Retour au Blog
Empreinte

Protection de l'empreinte audio avec BotBrowser

Comment BotBrowser controle la sortie de l'API Web Audio au niveau du moteur du navigateur, assurant des signaux audio coherents entre les plateformes.

Le risque pour la vie privee

Le traitement de l'API Web Audio produit une sortie qui varie selon l'appareil et la plateforme, en faisant un signal de suivi. Aucun son n'est joue et aucune permission n'est requise. La sortie depend du materiel audio, du sous-systeme audio du systeme d'exploitation et de la version du navigateur.

La solution BotBrowser

BotBrowser controle la sortie du traitement audio au niveau du moteur du navigateur. Lorsqu'un profil d'empreinte est charge, les signaux audio correspondent a la plateforme cible du profil.

Charger un profil

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

Les parametres AudioContext, les taux d'echantillonnage et la sortie de traitement s'alignent tous avec la configuration de plateforme du profil.

Sortie deterministe avec graine de bruit

Avec une graine de bruit, les empreintes audio deviennent deterministes. Le meme profil et la meme graine produisent toujours le meme resultat :

chrome --bot-profile="/path/to/profile.enc" \
       --bot-noise-seed=12345

Coherence multiplateforme

Un profil Windows fonctionnant sur macOS ou Linux produit une sortie audio coherente avec le sous-systeme audio Windows, pas avec la plateforme hote.

Verification

Apres avoir lance BotBrowser, verifiez la protection audio avec Puppeteer :

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

const browser = await chromium.launch({
  executablePath: '/path/to/botbrowser/chrome',
  args: [
    '--bot-profile=/path/to/profile.enc',
    '--bot-noise-seed=12345',
  ],
  headless: true,
});

const page = await (await browser.newContext()).newPage();

// Verifier que le taux d'echantillonnage AudioContext correspond au profil
const sampleRate = await page.evaluate(() => {
  const ctx = new AudioContext();
  return ctx.sampleRate;
});
console.log('Taux d echantillonnage:', sampleRate);

// Recharger et verifier la stabilite
await page.reload();
const sampleRate2 = await page.evaluate(() => {
  const ctx = new AudioContext();
  return ctx.sampleRate;
});
console.log('Stable:', sampleRate === sampleRate2);

Verifications cles :

  1. Les hachages d'empreinte audio restent stables apres rechargement de la page
  2. Le taux d'echantillonnage AudioContext correspond a la valeur par defaut de la plateforme du profil
  3. Differents profils produisent differentes empreintes audio

Pour commencer

  1. Telechargez BotBrowser depuis GitHub
  2. Chargez un profil avec --bot-profile
  3. Utilisez --bot-noise-seed pour une sortie audio deterministe
  4. Verifiez avec des outils de test d'empreinte qui verifient AudioContext
#audio#fingerprinting#audiocontext#privacy