Reconnaître un navigateur sans cookie ni connexion
FingerprintJS lit des dizaines de caractéristiques du navigateur (rendu canvas et audio, polices installées, WebGL, fuseau horaire, écran) et en tire un hash, le visitorId. Ce hash ne repose sur aucun cookie : recalculé à chaque passage, il reste le même en navigation privée ou après un effacement des données du navigateur. Un site reconnaît ainsi un navigateur déjà vu sans exiger de compte. Tout le calcul a lieu côté client, et conserver puis rapprocher les identifiants revient au serveur de l'application.
42 sources d'entropie, détaillées et remplaçables
- Signaux exposés :
fp.get()renvoie, avec levisitorId, la valeur des 42 sources de la v5.3.0 et le temps de lecture de chacune. L'une d'elles,domBlockers, repère les bloqueurs de publicité. - Empreinte recomposable : une source trop instable se retire, une source maison s'ajoute, et
hashComponents()recalcule l'identifiant sur la liste obtenue. - Navigation privée couverte : le hash y reste identique, Firefox compris depuis la v5.1.0, sans garantie quand sa protection renforcée contre le pistage est activée.
- Migration documentée : chaque résultat porte la version de l'algorithme, et la politique de version montre comment charger deux versions côte à côte pour migrer une base d'identifiants sans perdre les visiteurs connus.
- npm ou CDN : le paquet
@fingerprintjs/fingerprintjs, ou des modules ESM, IIFE et UMD servis par openfpcdn.io.
Identifiant de quelques semaines, télémétrie active sur npm
L'identifiant dure quelques semaines et les collisions sont courantes. Le tableau comparatif publié dans le dépôt donne à l'empreinte libre une durée de vie de quelques semaines au plus et des collisions assez fréquentes, car le hash exige que tous les attributs soient identiques. L'offre commerciale, elle, rapproche les visiteurs côté serveur par correspondance approximative. Le score de confiance de la bibliothèque est fixé par plateforme dans le code, de 0,3 (WebKit mobile, Safari récent) à 0,7 (Linux de bureau, par exemple), et son commentaire renvoie vers l'offre payante. Le README admet aussi que l'empreinte peut être falsifiée : des navigateurs modifiés comme Camoufox répondent en C++ aux API d'écran, de WebGL, de polices et d'audio avec les valeurs d'un autre appareil.
Le paquet npm envoie des statistiques d'usage à l'éditeur. Installée par npm, la bibliothèque a 0,1 % de chances, à chaque appel de load(), de contacter les serveurs de Fingerprint, au plus une fois par semaine et par navigateur. Selon la référence de l'API, la requête contient la version de la bibliothèque, les en-têtes HTTP du client (origine et referrer de la page compris) et son adresse IP. L'option monitoring: false la coupe. Les scripts d'openfpcdn.io l'ont désactivée, mais le README prévient que leur import échoue avec un bloqueur de publicité, dans Brave ou dans Firefox.
Le README fait de la bibliothèque un point de départ vers l'offre payante. Il réserve la précision « production-grade » à Fingerprint Identification, service commercial à code fermé du même éditeur, qui traite les signaux côté serveur. La détection de navigation privée et les Smart Signals (bots, VPN, navigateur falsifié) n'existent que là. Pour la version libre, le tableau comparatif laisse le stockage, la sécurité des données et la conformité à l'infrastructure de l'intégrateur, sans SLA.
Dernière version : v5.3.0, du 7 octobre 2026, sous MIT depuis la v5. La v5.0.0 du 22 octobre 2025 a fait passer la licence de BUSL-1.1 à MIT et la cible de compilation d'ES5 à ES2018. Les versions 4.x restent sous BUSL-1.1, qui ne bascule en MIT que quatre ans après chaque publication. Quatre versions ont suivi, et le dernier commit date du 21 octobre 2026. L'éditeur s'efforce de garder les identifiants stables au sein d'une version mineure, sans le promettre : une montée de version mineure peut les changer.
