Retour au Blog
Empreinte

Protection du timing de performance par BotBrowser : signaux materiels coherents

Comment BotBrowser controle le timing de performance, la concurrence materielle et la memoire de l'appareil pour maintenir des signaux d'empreinte coherents.

Le risque pour la vie privee

La vitesse d'execution JavaScript et les API de rapport materiel comme navigator.hardwareConcurrency et navigator.deviceMemory varient selon l'appareil. Ces differences peuvent servir de signal de pistage. BotBrowser controle toutes les valeurs liees a la performance via le profil d'empreinte.

Controle materiel base sur le profil

Le chargement d'un profil applique des valeurs materielles coherentes avant l'execution de tout code :

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

navigator.hardwareConcurrency et navigator.deviceMemory rapportent les valeurs du profil, pas le materiel reel de la machine hote.

Echelle de timing de performance

BotBrowser peut ajuster les caracteristiques de timing pour correspondre au materiel cible du profil :

chrome --bot-profile="/path/to/profile.enc" \
       --bot-time-scale=1.2

Le flag --bot-time-scale met a l'echelle les signaux de timing pour que les benchmarks JavaScript produisent des resultats coherents avec la classe d'appareil du profil.

Configuration deterministe

Combinez le controle de timing avec d'autres flags deterministes pour une coherence totale :

chrome --bot-profile="/path/to/profile.enc" \
       --bot-time-scale=1.0 \
       --bot-noise-seed=42 \
       --bot-stack-seed=profile \
       --user-data-dir="$(mktemp -d)"

Coherence du frame rate

Le timing de requestAnimationFrame s'aligne avec la configuration d'affichage du profil, maintenant le comportement du frame rate coherent avec le materiel rapporte.

Verification

Apres le chargement d'un profil :

console.log('Cores:', navigator.hardwareConcurrency);
console.log('Memory:', navigator.deviceMemory);

const start = performance.now();
for (let i = 0; i < 100000; i++) Math.sqrt(i);
console.log('Timing:', performance.now() - start);

Les valeurs materielles doivent correspondre a la configuration du profil.

Pour commencer

  1. Telechargez BotBrowser depuis GitHub
  2. Chargez un profil avec --bot-profile
  3. Utilisez --bot-time-scale pour controler les caracteristiques de timing
  4. Verifiez les valeurs materielles sur les sites de test d'empreintes
#performance#timing#fingerprinting#privacy#cpu