Retour au Centre de connaissances
Empreinte

CreepJS : rapport de fuseau et décalages

Séparez les champs de fuseau CreepJS, les calculs historiques et leur affichage de la position physique, de l’identité et du verdict d’automatisation.

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.

Un rapport de fuseau CreepJS combine un identifiant de fuseau, du texte de date, des calculs historiques et des décalages de la date courante. Le nom locationMeasured ne signifie pas qu’un capteur a localisé le visiteur. BotBrowser permet de configurer fuseau, paramètres régionaux et langue, mais ne garantit pas la classification CreepJS et ne transforme pas une sortie horaire en preuve de position physique. Chaque champ exige ses entrées et son contexte de comparaison pour expliquer une incohérence du navigateur.

Résumé

  • location vient de l’identifiant de fuseau du formateur par défaut ; zone, d’une partie entre parenthèses d’une chaîne Date.
  • locationMeasured suit une comparaison historique et une liste fixe de villes. Ce ne sont ni des coordonnées ni une liste exhaustive des fuseaux compatibles.
  • La comparaison historique utilise 1113 ; offset et offsetComputed suivent des chemins distincts de date courante. Une même mesure n’est pas répétée trois fois.
  • Le rendu choisit une valeur de lieu et une valeur de décalage ; en cas de différence, l’alternative correspondante est masquée.
  • lied hérite de réserves existantes sur des méthodes. Rapport absent, libellé modifié et réserve héritée sont des états différents.

Sommaire

Quatre chemins distincts : libellé de fuseau résolu, sous-ensemble historique, décalages courants et affichage conditionnel. Aucun ne mesure la position physique.

Sept champs et leurs producteurs

Le module de fuseau CreepJS figé à la révision 10aa6724cd33a1015db1574211890518cd04f0cc renvoie sept propriétés nommées. Leur provenance compte davantage que leur proximité dans une carte. Un identifiant décrit des règles choisies par l’environnement ; un décalage numérique décrit une relation pour une date ; un horodatage décrit un instant produit par la construction d’une date. Réduire ces trois catégories à une réponse de « lieu » supprime la distinction nécessaire au diagnostic.

Le champ location commence par Intl.DateTimeFormat().resolvedOptions().timeZone. Aucun fuseau explicite n’est fourni au formateur. Le champ reflète donc le choix par défaut de l’environnement, et non une demande de localisation. Le module modifie ensuite la présentation : il remplace un trait de soulignement par une espace et les barres obliques par des séparateurs à virgule. Le libellé affiché n’est donc pas l’identifiant intact. Conservez séparément l’identifiant original pour comparer orthographes ou alias.

Le producteur de zone est différent. Il convertit un nouveau Date en texte et extrait la partie sélectionnée par une expression retirant les parenthèses. Ce n’est pas un second appel à resolvedOptions(). Le texte Date et un identifiant IANA peuvent porter des noms et remplir des fonctions différents sans se contredire. Une description lisible ne doit pas remplacer l’identifiant attendu par l’option timeZone d’une application.

ChampProducteur dans le module figéInterprétation maximale étayée
zoneTexte choisi dans une nouvelle chaîne DateDescription d’affichage de cette chaîne
locationFuseau du formateur par défaut, puis mise en formeIdentifiant déclaré présenté comme libellé
locationMeasuredComparaison historique et résumé conditionnel des candidatsRésultat de la comparaison définie dans le code
locationEpochConversion numérique d’une date historique localeHorodatage historique construit
offsetgetTimezoneOffset() d’un nouveau DateDécalage de la date représentée par cette instance
offsetComputedDifférence entre deux chaînes de date analysées séparémentCalcul courant avec d’autres règles de construction
liedPremière valeur vraie des réserves existantes, sinon falseÉvaluation héritée, pas une nouvelle mesure de position

L’analyse du rapport Intl CreepJS distingue échantillons formatés et collecte des paramètres régionaux des constructeurs. La carte de fuseau exige une distinction comparable, mais ses producteurs ne sont pas les six fonctions de formatage du collecteur Intl. Un libellé de date voisin ne rend pas les modules interchangeables. Révision, propriété renvoyée et ligne affichée doivent figurer dans le même relevé pour éviter d’associer silencieusement des valeurs de collecteurs différents.

locationEpoch se confond facilement avec l’heure de collecte. Le code construit une date au 1er juillet de 1113 et la convertit en nombre. Ce nombre n’est pas fourni par une API de localisation autorisée et n’enregistre pas l’ouverture du rapport. Un outil de support qui le stockerait dans une colonne « dernière visite » introduirait une erreur dans son propre modèle, même si le nombre affiché correspondait exactement à la sortie du détecteur.

Décalages historiques et recherche bornée

Le chemin historique compare deux calculs pour la même année choisie. L’un suit la construction locale de dates du système ; l’autre utilise un fuseau explicite via Intl.DateTimeFormat. Le code sélectionne 1113 et une date de juillet. Il ne compare pas directement le décalage d’aujourd’hui à un décalage historique pour déclarer une correspondance géographique. Les champs courants offset et offsetComputed sont assemblés séparément plus loin.

Lorsque les résultats historiques concordent, la réduction commence avec le fuseau déclaré lui-même. Sinon, le module recherche dans sa liste intégrée cities les entrées dont le calcul historique égale le résultat système. Il s’agit d’une collection de noms définie par le code, pas d’un annuaire géographique vivant. Ses membres font partie de la révision figée. Un fuseau absent ne devient pas un candidat découvert au seul motif que l’environnement reconnaît son identifiant.

La fonction récursive borne aussi le sens d’« ensemble correspondant ». Elle filtre la partie gauche d’une liste et renvoie un sous-ensemble correspondant lorsqu’elle en trouve un ; elle ne parcourt récursivement la droite que si ce résultat gauche est vide. Elle ne concatène pas toutes les correspondances des deux moitiés. Décrire sa sortie comme tous les fuseaux compatibles avec une observation dépasserait donc les capacités de cette recherche. Liste et stratégie limitent ensemble le sous-ensemble obtenu.

La réduction finale ne conserve un nom que si le sous-ensemble comporte un seul membre et que celui-ci égale le fuseau déclaré. Les autres résultats passent par la fonction de résumé compact du projet. Une valeur compacte dans locationMeasured n’est pas une ville découverte que le navigateur refuse de révéler. L’égalité de résumés ne prouve pas non plus l’égalité des bases complètes de fuseaux. L’appartenance originale et le contexte de recherche ne sont pas exposés par le résumé affiché.

La documentation théorique d’IANA explique la prudence supplémentaire requise pour l’historique. Son principal périmètre de compatibilité concerne les horloges concordant après 1970 ; les données antérieures peuvent être incomplètes et géographiquement limitées. Une date en 1113 permet d’étudier l’interaction de deux chemins logiciels avec leurs règles historiques, pas de valider indépendamment la position médiévale d’un visiteur. Une différence observée demanderait le contexte du navigateur, des données de l’environnement et de la construction des dates avant toute attribution causale.

Noms, règles et géographie

Les identifiants de fuseau désignent des historiques de règles associés à des lieux représentatifs. Ils ne sont pas une position GPS actuelle. Plusieurs lieux peuvent partager un décalage à un instant, et une personne peut choisir un fuseau sans rapport avec sa position présente. La comparaison des alias ICU et des fuseaux traite des noms déclarés et des décalages fixes dans un autre environnement documenté. Ses sorties ne sont pas des mesures de ce module CreepJS figé.

La limite déduite du code reste utile sans exécuter de navigateur. Une valeur locationMeasured peut être classée comme nom déclaré conservé ou résultat compact de candidats. Cette classification identifie la branche productrice ; elle ne certifie ni pays, ni trajet réseau, ni personne. Toute affirmation sur des coordonnées exige une interface produisant une position et son contexte d’autorisation, qui ne sont ni l’un ni l’autre des entrées de ce collecteur.

Deux chemins de décalage courant

Le champ direct offset lit new Date().getTimezoneOffset(). MDN définit le résultat en minutes : positif quand le fuseau local retarde sur UTC, négatif quand il avance. La date de l’instance compte, car heure d’été et règles historiques peuvent modifier le décalage selon les dates. Celui-ci doit donc rester associé à l’instant ou à la date d’obtention, plutôt que devenir une propriété permanente d’un nom de fuseau.

La fonction offsetComputed part ailleurs. Elle extrait la date d’une nouvelle sérialisation ISO, construit deux chaînes de formes différentes, soustrait leurs valeurs numériques et convertit la différence en minutes. La partie date ISO suit le jour civil UTC ; près de minuit, elle peut différer du jour local. Cette fonction ne rappelle pas simplement la méthode directe. Sa construction de date importe dans les comparaisons proches de transitions horaires.

Une forme est une chaîne ISO de date seule ; l’autre sépare mois, jour et année par des barres obliques. ECMA-262 impose l’interprétation UTC de la forme de date seule. MDN précise que l’analyse de formes non standard peut varier selon l’implémentation. Une explication du code peut nommer ces entrées, mais affirmer que tous les navigateurs analysent identiquement les barres exigerait d’autres preuves que les règles standard de date et heure. Le résultat calculé ne constitue pas une horloge de référence indépendante.

La fonction applique ~~ à la différence en minutes. Cet opérateur effectue une conversion entière ; il n’enregistre pas les millisecondes d’origine et n’ajoute pas de catégorie d’exception. Une égalité numérique après conversion est plus faible qu’une comparaison de toutes les entrées intermédiaires. Si le rapport conserve uniquement la ligne finale, une lecture plus précise du nombre ou l’ajout d’une abréviation de fuseau ne restituera pas ces détails.

Comparaisons sensibles aux transitions

Un rapport hypothétique collecté près d’un changement d’heure d’été illustre le problème des entrées. Le nouveau Date de offset et les chaînes calendaires de offsetComputed ne représentent pas nécessairement le même instant. Une différence peut donc imposer de vérifier d’abord les dates choisies, avant d’envisager une modification d’API. Il s’agit d’un cas d’interprétation, pas d’un résultat observé. Lire le code seul n’établit aucune sortie précise pour une transition donnée.

Le relevé comparatif peut lever l’ambiguïté sans conserver une empreinte complète. Gardez heure de capture, identifiant de fuseau, valeurs brutes des deux champs et révision. Si une transition est en cause, conservez les dates exactes construites. Un décalage sans date n’établit pas quelle règle saisonnière s’appliquait ; deux nombres réduits à une ligne sélectionnée ne prouvent pas que leurs producteurs concordaient.

Sélection affichée et réserves héritées

Le rendu normal n’imprime pas une paire étiquetée pour chaque comparaison. Pour le lieu, il choisit locationMeasured si les valeurs diffèrent, sinon location. Pour le décalage, il choisit offsetComputed si les valeurs diffèrent, sinon offset. Une capture peut ainsi omettre l’autre valeur précisément lorsqu’une différence existe. Déduire une concordance de la présence d’un seul nombre inverse le sens de cet affichage conditionnel.

La carte normale affiche aussi zone quand sa valeur est vraie et imprime locationEpoch. Ces choix expliquent la provenance des lignes, mais ne font pas de leur ordre un dossier diagnostique complet. Un libellé absent n’indique pas automatiquement une API de fuseau défaillante. Valeur rendue et objet sous-jacent ne contiennent pas la même information ; une comparaison de diagnostic doit garder les champs bruts nommés plutôt que leur seul ordre visuel.

La propriété lied combine trois clés de réserves déjà renseignées avec l’opérateur JavaScript ||, puis revient à false. Elle conserve le premier opérande vrai ; elle ne compte pas trois résultats. Surtout, le collecteur ne la fixe pas en testant l’égalité de offset et offsetComputed, ni la ressemblance du lieu affiché avec un nom de ville. Réserve héritée et différence locale sont des observations distinctes.

Si le bloc extérieur de collecte lève une exception, le module enregistre l’échec, capture l’erreur et ne renvoie aucun objet de rapport. Le rendu détecte l’absence de fp.timezone et sélectionne l’annotation blocked. Cette annotation n’identifie pas à elle seule le constructeur, l’analyse, l’accès à une propriété ou l’opération historique en échec. Nommer une API défaillante à partir de ce seul libellé dépasserait les preuves disponibles.

Situation visibleChamp supplémentaire nécessaireConclusion disponible sans lui
Une seule ligne de décalageoffset et offsetComputedUne valeur a été choisie ; l’égalité reste inconnue
Valeur de lieu compactelocation, locationMeasured et révisionUn résumé du code est affiché, pas des coordonnées
Style de réserve sur la carteEntrée à l’origine de la réserveUne évaluation héritée affecte l’affichage
Carte blockedPrésence du collecteur et contexte d’erreur capturéL’objet normal était indisponible dans cette branche

Cas de comparaison et données utiles

Une description zone changée avec un identifiant stable relève du texte. Il faut examiner la différence entre texte Date et producteur consigné de location, pas y voir deux appareils situés dans des régions différentes. Un identifiant changé concerne plutôt résolution et configuration du formateur. Ces situations appellent des vérifications différentes, même si elles sont toutes deux qualifiées informellement de « changement de fuseau ».

Un location conservé avec locationMeasured modifié concerne la comparaison historique ou la réduction de la liste fixe. Les premiers éléments à comparer sont révision CreepJS et données horaires de l’environnement, pas un nouveau récit de déplacement du visiteur. Une modification de locationEpoch concerne aussi la date historique construite. Séparer ces propriétés évite de convertir une différence de données logicielles en voyage réel injustifié.

Un offset modifié avec des noms stables peut respecter des règles dépendantes de la date. Le relevé doit conserver les dates pour distinguer changement saisonnier et modification de configuration. Inversement, un décalage identique ne prouve pas un ensemble de règles identique : un instant ne décrit pas toutes les transitions historiques ou futures. La comparaison utile porte sur un champ nommé avec des entrées définies, pas sur une identité générale entre environnements.

La documentation BotBrowser décrit valeurs automatiques et substitutions explicites, avec des contrôles régionaux et linguistiques séparés. Ces réglages documentés donnent le contexte de configuration, sans certifier le calcul historique du collecteur ni l’interprétation d’un site externe. Il faut d’abord établir le réglage prévu et la valeur réellement déclarée. Changer un réglage uniquement pour retirer un libellé remplacerait l’explication de la différence par une apparence souhaitée.

Un relevé de support borné conserve révision de l’outil, date de capture, compilation du navigateur, fuseau prévu et champs nommés pertinents. Notez une absence comme telle et distinguez objet absent et description absente. Empreintes complètes brutes et navigation sans rapport ne sont pas nécessaires pour identifier la branche d’une ligne horaire. Si une erreur existe, gardez une catégorie expurgée identifiant l’opération sans collecter de contenu de page étranger au problème.

FAQ : limites du rapport de fuseau

locationMeasured utilise-t-il l’autorisation de géolocalisation ?

Le producteur figé utilise des calculs historiques Date et Intl ainsi que sa liste de villes. Il ne demande pas de coordonnées. Son nom ne prouve ni dialogue d’autorisation, ni observation GPS, ni pays actuel.

locationEpoch est-il l’heure de collecte ?

Non. Il provient de la date historique locale de juillet construite avec 1113. L’heure de capture se note séparément. Réutiliser cet horodatage historique comme heure du rapport changerait sa signification.

Un décalage courant identique valide-t-il la comparaison historique ?

Non. offset et offsetComputed suivent des chemins courants ; les candidats utilisent l’année historique choisie. Une concordance ne prouve pas celle d’autres entrées ni de l’historique complet du fuseau.

Pourquoi une capture peut-elle montrer un seul décalage malgré une différence ?

Le rendu choisit offsetComputed lorsqu’il diffère de offset, sans les imprimer séparément. L’objet brut est nécessaire pour distinguer égalité et branche de sélection en cas de différence.

lied compte-t-il les différences de fuseau ?

Le collecteur examiné hérite de la première réserve vraie parmi trois entrées de méthodes. Il ne compte pas les différences des lignes affichées. L’origine de la réserve est une preuve distincte.

La configuration BotBrowser prouve-t-elle la position physique ?

Les contrôles de fuseau, région et langue décrivent la configuration du navigateur. Ils ne donnent pas les coordonnées d’une personne et ne garantissent pas la classification d’un détecteur. Fuseau déclaré et mesure physique répondent à des questions différentes.

Sources

Conclusion pratique

Un rapport de fuseau est utile si les champs gardent leurs producteurs et leurs dates. Séparez identifiant résolu et texte Date du chemin historique et des deux décalages courants. Examinez les deux valeurs brutes derrière une ligne sélectionnée, puis tracez la réserve héritée avant d’attribuer une cause. Ces distinctions permettent un diagnostic concret sans transformer la sortie horaire en position physique, identité personnelle ou verdict externe d’automatisation.

#fingerprinting#confidentialité#Timezone

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.