Signaux Math de CreepJS : lire les champs
Suivez les résultats Math de CreepJS, les références de navigateur, les appels répétés et l’état lie sans confondre le code avec une mesure en direct.
BotBrowser Team
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.
Un rapport Math de CreepJS contient plusieurs valeurs qui répondent à des questions différentes. Le résultat numérique vient d’une expression. Les booléens de famille de navigateur comparent ce résultat aux constantes présentes dans la source épinglée. Un contrôle d’appels répétés vérifie la stabilité d’une invocation, tandis que lieProps fournit un signal hérité. Lire ces champs comme un score unique transforme des métadonnées en affirmation que le collecteur ne fait pas. BotBrowser documente les surfaces observables et les profils contrôlés ; il ne choisit pas la classification d’une version externe de CreepJS.
TL;DR
- La révision épinglée de
src/math/index.tsexécute des fonctions choisies et conserve chaque sortie sous son expression. chrome,firefox,torBrowseretsafaricomparent des constantes de la source ; ils ne mesurent pas la famille actuelle.- La répétition et l’état hérité
lieProps.Math.*sont deux producteurs distincts. - Une valeur absente ou bloquée décrit un chemin de sortie, pas une personne, un appareil ou un verdict de bot.
- Une lecture reproductible note le commit, le fichier et les lignes.
Contents
- Source et entrées épinglées
- Quatre sorties Math
- États absents, bloqués et hérités
- Matrice de provenance
- FAQ : champs Math de CreepJS
- Practical conclusion
Source et entrées épinglées
La révision publique est 10aa6724cd33a1015db1574211890518cd04f0cc. Dans src/math/index.ts, la liste check nomme 23 méthodes, dont acos, cos, hypot, sin, sqrt et pow. La première boucle lit lieProps[Math.<method>], appelle la fonction avec des arguments fixes puis compare deux appels. Deux NaN sont considérés égaux ; les autres valeurs utilisent l’égalité. Une différence active lied et appelle l’enregistreur.
La seconde table est différente. Elle contient des expressions comme cos(Math.PI) et pow(Math.SQRT2, -100). Chaque ligne contient une valeur attendue et parfois des valeurs optionnelles pour chrome, firefox, torBrowser et safari. Il s’agit d’une correspondance entre expression et cases de référence, pas d’une preuve qu’une requête en direct a été exécutée dans chaque navigateur. Le système et la version ayant produit chaque constante ne sont pas enregistrés dans la ligne.
La liste n’est pas un échantillon uniforme. cos inclut de grandes magnitudes et Math.E, hypot utilise deux ou six arguments, et pow plusieurs bases avec l’exposant -100. Une “note Math” unique effacerait la forme d’entrée. L’expression fait partie de la preuve.
La spécification ECMAScript de Math définit la sémantique du langage ; elle ne transforme pas les constantes de CreepJS en garantie actuelle. Conservez expression, arguments et commit avant toute comparaison.
Quatre sorties Math
L’objet data utilise le texte de l’expression comme clé et attempt() produit sa valeur. result est le calcul ; les quatre noms sont des booléens de comparaison. Ils répondent « cette sortie égale-t-elle cette case de la source ? », pas « quel navigateur utilise la personne ? ». Plusieurs correspondances ou aucune ne prouvent pas une identité.
Le contrôle de répétition exécute certains appels deux fois avec les mêmes arguments. Une différence signale une instabilité pour cette vérification, sans expliquer sa cause. Notez méthode, arguments, valeurs disponibles et commit. Le lied global ne remplace pas ce détail.
L’état Math hérité vient de lieProps, maintenu par le module lies, qui contient aussi une recherche générique des méthodes Math. Séparez « déjà marqué », « appels différents » et « résultat égal à une référence ». L’article sur les groupes de signaux CreepJS reste le guide général, pas la provenance de chaque ligne.
| Champ | Producteur | Lecture prudente | Ce qui n’est pas établi |
|---|---|---|---|
result | Math[fn] ou polyfill | valeur pour l’entrée donnée | identité |
| quatre booléens | égalité avec une case | comparaison avec une étiquette | famille ou version actuelle |
lied | lieProps et répétition | signal hérité ou local | cause ou auteur du changement |
undefined | exception dans attempt | aucun résultat rendu | cause précise |
| module absent | erreur extérieure | objet normal non retourné | toutes les API absentes |
Pourquoi chaque ligne compte
La liste fixe nomme 23 méthodes, de acos et atan2 à tanh et pow. Les arguments indiquent les cas choisis : cos(1e308) utilise une grande magnitude, atanh(0.5) une valeur intérieure, atan2(1e-310, 2) un composant très petit, et hypot(1, 2, 3, 4, 5, 6) plusieurs opérandes. Cela décrit les entrées de la source, pas la raison d’un résultat ni les usages d’une application réelle.
Certaines références sont presque identiques sans l’être. Pour atan(2), la source contient 1.1071487177940904 et une autre case 1.1071487177940906. Ces derniers chiffres ne définissent pas une tolérance générale. Les exigences de la fonction ECMAScript et celles de l’application déterminent l’assertion adéquate.
Une case NaN dans la liste de références peut signifier qu’aucune valeur n’est fournie pour cette colonne et cette expression. Ce n’est pas une observation en direct de Firefox, Tor Browser ou Safari. Le comparateur traite une référence absente comme une non-correspondance. Le HTML abrège aussi le hash : il s’agit d’un choix d’affichage, pas d’une preuve d’identité.
États absents, bloqués et hérités
attempt() convertit une exception en valeur indisponible. undefined peut donc correspondre à une exception, une méthode absente ou une autre limite ; la cellule ne conserve pas la catégorie. Ne devinez pas une étiquette de navigateur.
getMaths() possède un try/catch extérieur. Une erreur qui s’échappe fait échouer le module entier, contrairement à une seule ligne indisponible. Une carte bloquée peut refléter l’absence du module, un champ manquant ou une décision d’affichage héritée. Ces états doivent rester distincts.
Les étiquettes sont des données historiques de la source, pas un benchmark. Une autre version de Chromium, un profil ou un commit CreepJS peut produire une autre sortie conforme à la spécification. Le guide de cohérence Math entre navigateurs traite les exigences applicatives ; il ne remplace pas cette lecture de provenance.
Les entrées fixes ne décrivent pas la charge réelle d’une application. Elles testent des valeurs choisies par le collecteur, sans distribution ni effet utilisateur. Pour un bug produit, réduisez à une entrée minimale et vérifiez la clause ECMAScript pertinente au lieu de copier une chaîne de détecteur.
Les constantes sont associées à un commit, mais pas à un système ou une compilation documentés pour chaque ligne. Comparez le code du collecteur avant de comparer deux rapports. Si l’origine n’est pas spécifiée, le résultat correct est « non spécifié par cette source ».
L’article sur la cohérence Math entre navigateurs traite les exigences numériques d’une application. Le guide des groupes de signaux CreepJS explique les groupes et leurs limites. La provenance des champs Math constitue une troisième question distincte.
Matrice de provenance
| Ligne de revue | À conserver | Règle |
|---|---|---|
| Source | commit 10aa6724…, fichier, lignes | sans producteur nommé, pas d’interprétation |
| Entrée | expression et arguments | mêmes entrées seulement |
| Sortie | result, undefined ou module absent | garder l’inconnu |
| Référence | booléens vrais | correspondance de source, jamais identité |
| Répétition | méthode et égalité | séparée des références |
lied | chemin lieProps ou mismatch local | pas de score composite |
| Conservation | ticket et date de suppression | minimum nécessaire |
Séparez les enregistrements correspondant à des chemins distincts du code. Pour cos(Math.PI), la ligne de référence donne result=-1 et les booléens de famille correspondants à la ligne 86 ; elle ne contient pas de résultat de répétition. Le contrôle des appels répétés utilise cos(1e308) aux lignes 42-49 : consignez les deux résultats d’appel séparément avant de calculer repeatMatch. lieProps.Math est une collection de clés d’anomalie présentes, pas une valeur source Math.cos=false ; une absence n’est pas un false enregistré. Aucun de ces enregistrements n’identifie le navigateur du visiteur ni ne prédit la décision d’un service externe.
Comparez deux rapports dans cet ordre : même commit, même expression et arguments, result, booléens, puis origine de lied. Un changement de commit ou d’entrée n’est pas une comparaison contrôlée. Un booléen dérive du même résultat et lied lit un autre état ; les compter comme trois votes indépendants exagère la preuve.
BotBrowser aide à documenter un profil et une comparaison autorisée, mais ne contrôle pas la révision externe du collecteur et ne garantit pas sa classification. Conservez la configuration, l’inspection de source et le résultat applicatif dans des enregistrements séparés.
Une ligne de support peut garder commit 10aa6724…, la méthode, l’expression, les arguments, la sortie disponible et les indicateurs de comparaison. Elle n’a pas besoin d’inclure cookies, historique de navigation ou identifiants de compte. Si une compilation est utile au support, notez-la séparément des étiquettes de famille inscrites dans la source.
FAQ : champs Math de CreepJS
Les champs chrome et firefox identifient-ils le navigateur ?
Non. Ils indiquent une égalité avec une constante de la source épinglée.
lied: true signifie-t-il un échec Math ?
Non. Il peut combiner un état hérité et un mismatch de répétition.
undefined donne-t-il la cause de l’échec ?
Non. Une preuve indépendante est nécessaire pour distinguer exception et API absente.
La table est-elle un benchmark ?
Non. Ce sont des comparaisons déclarées par une révision de code.
Practical conclusion
Fixez le commit, l’expression et les arguments, puis gardez résultat, références, répétition et provenance de lied dans des champs différents. Traitez les chemins bloqués comme inconnus et n’utilisez jamais une étiquette de source comme identité ou verdict de sécurité. Lorsque les résultats par signal sont présentés ensemble, l’analyse de l’agrégation des prédictions CreepJS retrace la réduction des candidats et les états du rendu sans les assimiler à une identité.
Public sources
Cet article fait partie du guide : Qu'est-ce qu'une empreinte de navigateur ?
Articles Connexes
Rapport Intl CreepJS : champs et valeurs absentes
EmpreinteRapports audio CreepJS : rendu et valeurs absentes
EmpreinteRapport WebGL de CreepJS : contextes et signaux
EmpreinteDétection Android WebView avec CreepJS : limites
EmpreintePrédiction CreepJS : agrégation et états inconnus
EmpreinteRapport WebGL BrowserLeaks : collecte et champs absents
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.