Retour au Centre de connaissances
Empreinte

Rapports audio CreepJS : rendu et valeurs absentes

Distinguez rendu OfflineAudioContext, champs absents, lied, noise et motifs connus dans une révision fixe de CreepJS, sans verdict identitaire.

BotBrowser Team

Documentation

Vous voulez la documentation structurée pour Empreinte ?

Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.

BotBrowser documente une sortie AudioContext fondée sur le profil et un --bot-noise-seed fixe pour obtenir des valeurs audio reproductibles. Il ne peut pas garantir l'anonymat ou l'acceptation par un site, et ces contrôles ne font pas d'un rapport audio CreepJS une preuve d'identité. Dans CreepJS, un résultat absent, un champ indisponible et une comparaison signalée ont des significations différentes dans le code source.

TL;DR

  • Le collecteur fixé utilise un OfflineAudioContext mono de 5000 trames à 44100 Hz ; cette voie ne capture pas le microphone.
  • binsSample et copySample utilisent les indices 4500-4599 ; sampleSum couvre l'intervalle plus grand et chevauchant 4500-4999.
  • L'absence du rapport entier, un zéro affiché comme indisponible et une méthode de copie non prise en charge sont des états distincts.
  • lied, le champ numérique noise et la recherche de motifs connus décrivent des contrôles propres à une implémentation, pas l'identité ou l'intention d'une personne.
  • Les contrôles de profil et de graine BotBrowser sont documentés séparément ; le code CreepJS fixé ne mesure pas ces contrôles et ne représente pas une décision d'un service externe.

Sommaire

Le rendu CreepJS et la lecture des champs conduisent aux branches absente, lied, noise et motif connu.

Le schéma représente le chemin de décision du code source. Il ne s'agit pas d'une capture d'exécution et une étiquette de branche n'est pas un verdict sur l'appareil.

Le collecteur fixé

La révision 10aa6724cd33a1015db1574211890518cd04f0cc vérifie d'abord la disponibilité de window.OfflineAudioContext. Ce contrôle précède la création du graphe ; un rapport absent à ce stade indique donc seulement que le collecteur n'est pas entré dans son chemin de rendu. Il ne prouve pas l'absence d'audio sur l'hôte. BotBrowser documente des contrôles AudioContext liés au profil pour les exécutions autorisées ; le collecteur CreepJS ne mesure pas ces contrôles et ne promet aucun résultat d'un service distant.

Lorsque le constructeur existe, le code choisit un contexte mono avec bufferLen = 5000 et 44100 Hz. La fonction de rendu crée un oscillateur triangulaire à 10000 Hz et le relie à un compresseur dynamique. Le compresseur est relié séparément à l'analyseur et à la destination du contexte. La construction du graphe, startRendering() et le gestionnaire de fin sont des étapes distinctes où une implémentation peut exposer des échecs différents. Conserver uniquement le condensat final efface cette distinction.

Le gestionnaire de fin lit plusieurs représentations du même rendu. Les données fréquentielles et temporelles proviennent de méthodes différentes de l'analyseur. Les données du canal proviennent de l'AudioBuffer rendu ; copyFromChannel constitue une seconde voie facultative. Le collecteur garde binsSample et copySample séparés sans supposer que les lectures sont interchangeables. L'analyse de la table de polices CreepJS décrit un autre collecteur et les principes de l'empreinte audio expliquent le signal général ; aucun ne remplace ces champs propres aux branches.

Les fenêtres sont explicites et se chevauchent. Les positions 4500 à 4599 sont conservées dans le petit échantillon, tandis que sampleSum additionne les valeurs absolues des positions 4500 à 4999. Un agrégat modifié avec une petite fenêtre inchangée diffère d'une fenêtre modifiée avec un agrégat inchangé. Un dossier d'assistance doit nommer le champ et la fenêtre au lieu de traiter tous les nombres audio comme interchangeables. La révision, le champ, les bornes et l'état d'absence permettent de distinguer un changement du collecteur d'une différence de lecture sans conserver chaque échantillon.

Les absences sont des résultats de branches

Lorsque tout le résultat offlineAudioContext est absent, le moteur de présentation emprunte une voie distincte et affiche blocked pour sum, gain, freq, time, trap, unique, data, copy et values. Un résultat présent suit un autre chemin : plusieurs champs numériques sont évalués selon leur valeur de vérité, de sorte qu'un zéro peut apparaître comme blocked, tandis qu'une somme temporelle nulle apparaît comme unsupported. L'étiquette ne distingue pas toutes les causes d'un zéro ou d'une absence. Il faut conserver l'état sous-jacent plutôt que convertir cette note en mesure numérique réussie.

Dans cette révision, lied combine les métadonnées d'incohérence enregistrées, des fréquences inattendues de l'analyseur, un contrôle distinct d'audio factice, les divergences entre lectures et une valeur noise évaluée comme vraie. noise est numérique : le code utilise un facteur non nul de bruit de lecture et d'écriture du tampon ou, à défaut, additionne les valeurs uniques des 100 premiers échantillons du tampon rendu. Séparément, un motif connu de trois valeurs peut orienter un sampleSum divergent vers une branche de moindre entropie. Plusieurs causes partageant un même indicateur, le tableau de bord doit conserver la branche avant d'attribuer une cause.

La comparaison doit respecter l'ordre du code : distinguer l'absence du constructeur ou du rendu d'un tampon terminé ; associer chaque somme de l'analyseur à sa méthode ; comparer binsSample, copySample et sampleSum avec leurs bornes ; puis conserver lied, noise et la branche qui explique chaque indicateur. Cela évite de qualifier une absence de différence matérielle ou une divergence de motif connu de preuve de manipulation.

Questions fréquentes sur les champs CreepJS

L'empreinte audio nécessite-t-elle le microphone ?

Non. Cette voie utilise la synthèse et le traitement de Web Audio API. Elle n'implique ni microphone, ni permission, ni son audible ; toute la procédure s'exécute par logiciel.

Un champ blocked signifie-t-il que tout le collecteur a échoué ?

Non. Le moteur HTML distingue un rapport absent d'un rapport présent avec des champs individuels faux ou indisponibles. Son interprétation exige le champ source et sa condition d'affichage.

La graine de bruit affecte-t-elle la qualité de lecture ?

Le collecteur fixé ne mesure pas la qualité de lecture. La documentation audio BotBrowser décrit les contrôles pris en charge ; la compatibilité dépend de la compilation et du processus déployés.

Quelle stabilité obtient-on avec une graine fixe ?

Le code CreepJS fixé ne teste pas la reproductibilité de BotBrowser. La documentation du produit décrit séparément le comportement de graine fixe, y compris la différence entre audio fondé sur le profil et transmission directe de l'hôte.

Que se passe-t-il avec des graines différentes pour un même profil ?

Le collecteur fixé ne possède pas de branche de sélection de graine. Ce code ne permet pas de déduire comment BotBrowser associe les graines à la sortie.

Pourquoi les modes avec et sans interface diffèrent-ils ?

Le collecteur CreepJS fixé ne contient aucune comparaison entre les exécutions avec et sans interface. La documentation audio BotBrowser indique que la disponibilité dépend de la configuration ; il faut vérifier le déploiement réel avant d'attribuer une absence au mode.

Un VPN ou un proxy modifie-t-il le résultat audio ?

Le trajet réseau n'est pas une entrée de l'oscillateur ou des calculs de tampon fixés. Ce constat ne prouve pas que deux sessions sont identiques sur les autres plans, ni qu'une page distante fournit le même code.

La cohérence audio suffit-elle ?

Non. L'audio est un signal parmi d'autres. Un résultat cohérent n'établit pas la cohérence de canvas, WebGL, des polices ou des propriétés navigator, et ne détermine pas la décision d'un site.

Table de décision par branche

L'enregistrement sépare observations du code et résultats d'exécution. La première clé est la révision : une version ultérieure peut déplacer un contrôle ou renommer un champ sans modifier Web Audio API. La deuxième est la phase : capacité, construction du graphe, fin, assemblage des champs, comparaison et présentation ont des significations d'échec différentes. La troisième est le champ : un sampleSum absent n'est pas le même événement qu'un sampleSum présent avec une marque noise.

PhaseObservation du codeÉnoncé justifiéExtension injustifiée
CapacitéOfflineAudioContext est absentCe collecteur n'a pas renvoyé de rapport audioL'appareil ne possède pas d'audio
GrapheOscillateur, compresseur et analyseur sont reliésCes nœuds ont été choisis pour le renduTous les navigateurs utilisent ce graphe
FinLe gestionnaire reçoit un AudioBufferLe rendu a atteint la lecture du tamponLa sortie prouve un chemin audio physique
ChampsDes sommes et échantillons sont calculésLes valeurs proviennent du tampon et de l'analyseurLe condensat identifie le matériel
ComparaisonUne trappe, propriété ou motif connu diffèreUne branche a enregistré une comparaison inattendueUne personne ou un service trompe
PrésentationDes notes blocked ou différences sont affichéesL'interface conserve un état indisponible ou divergentL'interface est une norme du navigateur

Chaque ligne conduit à une vérification limitée. Sans constructeur, examiner l'exposition de la fonction et le contexte de page. Avec constructeur mais sans fin, examiner les erreurs de cycle de vie et limites de ressources. Si le tampon arrive mais que la copie est indéfinie, examiner copyFromChannel. Devant un motif divergent, comparer la clé de trois valeurs avant de modifier un profil. Un dossier peut garder révision, phase, champ et branche sans échantillons bruts ; cela permet de reproduire l'interprétation sans créer un enregistrement de forme d'onde réutilisable.

Le code distingue getChannelData et copyFromChannel. Les deux peuvent lire le canal zéro, mais le collecteur échantillonne chaque voie indépendamment et conserve binsSample et copySample comme valeurs distinctes. L'accord établit seulement l'accord de ces lectures pour le rendu choisi. La divergence établit une différence dans cette voie, pas automatiquement une altération : le code n'énumère pas toutes les implémentations ou enveloppes capables d'affecter une lecture.

Les champs d'analyseur ont leurs propres limites. floatFrequencyDataSum décrit le tableau fréquentiel, tandis que floatTimeDomainDataSum décrit un autre tableau. Ce dernier est alloué avant le contrôle de la méthode temporelle facultative ; sans cette méthode, il reste rempli de zéros. Sa somme nulle apparaît ensuite comme unsupported. Des sommes égales n'impliquent pas des tableaux égaux, et des sommes différentes n'identifient pas une cause. Le dossier doit nommer la disponibilité de la méthode et le champ dérivé du tableau, pas seulement « l'audio a changé ».

La réduction du compresseur est une entrée séparée. Le code lit reduction par une voie de compatibilité, car une implémentation peut exposer un nombre ou un objet contenant value. Cette branche explique la normalisation avant la construction de la clé du motif connu. Une nouvelle version de navigateur peut modifier la forme de la propriété sans changer l'opération prévue du compresseur. Il faut enregistrer la voie observée et la révision, sans promettre une égalité entre moteurs.

La fenêtre d'échantillons ne représente pas une piste entière. Le collecteur choisit les indices 4500 à 4599 pour chaque échantillon de cent valeurs, et 4500 à 4999 pour l'agrégat. Le premier intervalle appartient au second. Une modification peut affecter la somme, mais l'agrégation peut masquer des variations compensées de grandeurs individuelles. Comparer seulement l'agrégat peut manquer un changement localisé ; conserver tous les échantillons peut dépasser le besoin d'assistance. Garder les bornes avec le résultat grossier de comparaison.

Le rendu du graphe et hasFakeAudio() sont attendus simultanément, mais apportent des preuves différentes. Le premier fournit les champs du tampon et de l'analyseur. Le second utilise un contexte distinct de 100 trames à 44100 Hz avec un oscillateur à fréquence nulle et vérifie les données du canal. Son gestionnaire d'erreurs transforme un rejet en false ; false ne prouve donc pas que le contrôle s'est terminé correctement. Un résultat vrai active lied dans sa propre branche. Il ne s'agit pas de comparer deux rendus équivalents pour mesurer leur répétabilité.

Les deux recherches de valeurs connues ont des rôles distincts. Dans le collecteur, une clé réunit la réduction du compresseur et les deux sommes d'analyseur. Si elle existe mais que ses valeurs autorisées excluent sampleSum, le code signale une moindre entropie et enregistre une note de données suspectes. Dans le moteur HTML, KnownAudio n'utilise que la réduction comme clé et contrôle la présentation de la somme. Aucune table ne prétend couvrir tous les navigateurs valides ; le fichier ne décrit pas leur méthodologie complète d'échantillonnage. « Connu » signifie présent dans cette implémentation, pas normal universellement ; « inattendu » n'établit pas une intention malveillante.

Cas pratiques

Le rapport est entièrement bloqué. Vérifier d'abord le retour anticipé de la branche constructeur et l'absence de résultat du gestionnaire d'erreurs externe. Ce sont des chemins explicites du code ; une capture du panneau ne révèle pas lequel a été suivi. Conserver l'erreur applicable, le contexte de page et la révision. Ne pas ajouter un nombre de remplacement pour compléter le tableau de bord. L'absence reste une observation visible.

Des nombres existent, mais lied vaut true. Lire le message de branche. S'il mentionne la cardinalité de l'analyseur, comparer sa méthode et l'hypothèse de silence. S'il mentionne une propriété, vérifier la propriété précise et son domaine d'exécution. S'il mentionne l'audio factice, conserver ce terme comme étiquette du collecteur et non comme accusation contre la page. S'il mentionne une comparaison d'échantillons, vérifier fenêtre et méthode de copie. L'action dépend du message.

Le champ noise est non nul. Conserver son type numérique séparé du booléen lied. Le code active lied lorsque noise est vrai, mais les deux champs ne sont pas des alias. Une alerte fondée uniquement sur le condensat perd l'origine du signal. Un enregistrement minimisé peut retenir « zéro/non nul », la révision et les noms de champs sans tableaux bruts ; cet état doit être identifié comme dérivé, pas comme champ numérique original.

Un motif diverge après une mise à jour. Comparer d'abord la compilation du navigateur et la révision CreepJS, puis la clé de trois valeurs et la somme. Un changement de table peut donner une classification différente au même navigateur. Si seul le navigateur change, il s'agit d'une comparaison d'implémentations. Aucun cas ne prouve que la nouvelle compilation est moins privée ou que l'ancienne était authentique.

Le canal existe, mais la copie est indisponible. Vérifier le support de copyFromChannel avant d'interpréter la divergence. Le collecteur lit le canal zéro par des API séparées, mais retourne copySample sous forme [undefined] sans méthode prise en charge. Cela diffère de deux lectures prises en charge produisant des échantillons différents. La branche de divergence vérifie aussi le support avant de définir lied. Appeler les deux cas « échec de copie » retire une condition nécessaire.

L'assistance demande une capture. Une image peut montrer la présentation, pas prouver les champs cachés ou la cause d'une branche. L'associer à la révision, aux noms de champs et à une petite table de décision. Éviter les identifiants de compte, valeurs brutes complètes et pages sans rapport. Le rapport sert à orienter une question de compatibilité, pas à créer une empreinte réutilisable.

Le produit veut une seule mesure de réussite. Conserver les branches et dériver une mesure seulement après avoir défini la décision. Un constructeur absent peut être acceptable pour une fonction sans audio hors ligne et bloquer un éditeur audio. Un indicateur lied peut nécessiter une investigation sans refuser l'utilisateur. Le rapport CreepJS ne décide pas cette politique ; il fournit les observations à interpréter.

Notes de reproductibilité

Le code est analysable de façon reproductible si un autre lecteur peut obtenir la même révision, inspecter les mêmes lignes et reconstruire la même table de branches. Reproduire l'exécution demande aussi de fixer compilation, système, cycle de vie du profil, origine de page, permissions et ensemble de pages de test. Sans ces entrées, le relevé ne distingue pas changement de navigateur et changement de contexte. Les éléments présents sont limités au code ; aucune sortie d'exécution n'est affirmée.

Lorsqu'un enregistrement réel est autorisé, recueillir seulement les champs nécessaires : sourceRevision, fixture, browserBuild, os, context, testedOn, phase, field, branch et interpretation. Limiter l'interprétation : « copySample diffère de binsSample » est mieux étayé que « l'audio est faux », car le premier est un constat et le second une cause non démontrée. Conserver les valeurs brutes dans une investigation restreinte uniquement avec l'accord du propriétaire des données.

OfflineAudioContext, sampleSum, copyFromChannel, lied et noise sont des clés différentes. Garder leurs noms dans le diagnostic plutôt que les fusionner en un « état audio ». Pour BotBrowser, le guide de reproductibilité des graines distingue profil, compilation et graine. Enregistrer aussi la valeur profile ou real de --bot-audio : la documentation indique que la transmission directe de l'hôte n'applique ni valeurs audio du profil ni bruit audio. Sans configuration de lancement connue, une graine fixe et un rapport inchangé n'établissent pas le choix du même chemin de contrôle.

Sources

Conclusion pratique

Utiliser le code fixé pour identifier la phase d'arrêt du collecteur et les champs lus. Séparer sortie indisponible, valeurs d'analyseur, fenêtres, lied et noise. Ce diagnostic de branches complète la documentation audio BotBrowser sans fournir de résultat d'exécution ni établir identité, anonymat ou décision externe. L'audio reste un rapport d'une seule surface ; l'analyse de l'agrégation des prédictions CreepJS suit un parcours d'affichage distinct et précise les limites des états inconnus et en attente. Pour les autres surfaces, consulter l'analyse des polices CreepJS et les empreintes WebGL dans leurs propres limites de preuve.

#Audio#fingerprinting#Audiocontext#confidentialité

Cet article fait partie du guide : Qu'est-ce qu'une empreinte de navigateur ?

Faites passer BotBrowser de la recherche à la production

Utilisez ces guides pour comprendre le modèle, puis passez à la validation multi-plateforme, aux contextes isolés et au déploiement navigateur prêt pour l'échelle.