Browser Language Fingerprinting : navigator.languages vous piste
Navigateur & Appareil

Browser Language Fingerprinting : navigator.languages vous piste

navigator.languages expose silencieusement votre liste complète de préférences linguistiques à chaque site — les traceurs l'utilisent pour ancrer votre empreinte sans cookie. RGPD, CNIL, Brave expliqués.

8 min de lecture·

Le browser language fingerprinting est une technique de pistage qui lit navigator.languages — une propriété JavaScript qui expose votre liste complète et ordonnée de langues préférées — pour construire un identifiant persistant pour votre navigateur sans rien stocker sur votre appareil. Découvrez exactement ce que votre navigateur révèle sur whatsmy.fyi.

En résumé

Chaque navigateur expose une liste classée de vos préférences linguistiques via navigator.languages. Les traceurs lisent ce tableau — aux côtés de votre fuseau horaire, géolocalisation IP et taille d'écran — pour vérifier ou préciser votre empreinte navigateur. Seule, la préférence linguistique est un signal à faible entropie. Combinée avec une douzaine d'autres signaux, elle devient un outil de cohérence fiable qui confirme que vous êtes la même personne à travers les sites et les sessions, même après avoir effacé les cookies.

Qu'est-ce que le browser language fingerprinting ?

Le browser language fingerprinting est l'une des composantes du kit de browser fingerprinting. Il exploite deux API navigateur étroitement liées : navigator.languages (un tableau ordonné de codes de langue) et navigator.language (la préférence principale unique). Les deux sont disponibles à tout JavaScript exécuté sur la page sans aucune interaction utilisateur ni permission requise.

Ce qui rend les données linguistiques utiles pour les traceurs n'est pas qu'elles soient très uniques en elles-mêmes — la plupart des francophones rapportent ["fr-FR", "fr", "en"]. Plutôt, elles servent deux fonctions : elles ajoutent à l'entropie de l'empreinte lorsque la combinaison est inhabituelle, et elles agissent comme un signal de cohérence que les validateurs croisent avec l'en-tête HTTP Accept-Language, la géolocalisation IP et le fuseau horaire système. Tout décalage entre ces couches est lui-même un signal de pistage — qui signale les utilisateurs de VPN, les émulateurs de navigateur et les outils de confidentialité.

Comment fonctionne navigator.languages ?

navigator.languages retourne un tableau en lecture seule de balises de langue BCP 47 ordonnées de la plus préférée à la moins préférée. Le premier élément égale toujours la valeur de navigator.language. Le même tableau est envoyé comme en-tête HTTP Accept-Language à chaque chargement de page.

// Lecture des préférences linguistiques — disponible à tout script de site
console.log(navigator.language);
// → "fr-FR"

console.log(navigator.languages);
// → ["fr-FR", "fr", "en", "de"]
// Chaque préférence est listée par ordre de priorité.
// Un utilisateur bilingue qui a ajouté l'anglais et l'allemand
// est bien plus identifiable qu'un francophone monolingue.

// Le navigateur envoie les mêmes préférences dans chaque requête HTTP :
// Accept-Language: fr-FR,fr;q=0.9,en;q=0.8,de;q=0.7

// Un script de fingerprinting combine cela avec d'autres signaux :
function getLanguageFingerprint() {
  return {
    language: navigator.language,
    languages: navigator.languages,
    // Vérification croisée : la langue correspond-elle au fuseau horaire ?
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
    // Vérification croisée : la langue correspond-elle à la locale système ?
    locale: Intl.DateTimeFormat().resolvedOptions().locale,
  };
}

navigator.language vs navigator.languages

PropriétéType de retourExemple de valeurRôle dans le fingerprinting
navigator.languageChaîne"fr-FR"Faible entropie ; correspond à la plupart des utilisateurs d'une région
navigator.languagesTableau de chaînes["fr-FR", "de", "ja"]Entropie plus élevée ; les combinaisons inhabituelles sont distinctives
En-tête Accept-LanguageChaîne d'en-tête HTTPfr-FR,fr;q=0.9,de;q=0.8Envoyé avec chaque requête ; vecteur de fingerprinting côté serveur
Locale depuis l'API IntlChaîne"fr-FR"Vérification croisée de cohérence avec le tableau de langues

Quelle est l'unicité d'une empreinte linguistique ?

SignalEntropie approximativeSource
Chaîne user agent10–15 bitsEFF Cover Your Tracks
Rendu canvas8–12 bitsEFF / recherche BrowserLeaks
Renderer WebGL6–10 bitsÉtudes académiques de fingerprinting
Fuseau horaire système3–4 bitsEFF Panopticlick, 2010
Tableau de langues (monolingue)< 1 bitAnalyse EFF / 404privacy.com
Tableau de langues (multilingue, combinaison inhabituelle)3–6 bitsÉtudes de terrain académiques
Empreinte complète (30+ signaux combinés)18+ bits (1 sur 287 000)Recherche originale EFF Panopticlick

L'étude Panopticlick 2010 de l'EFF — qui a analysé plus de 500 000 empreintes de navigateurs — a trouvé que 84 % des navigateurs étaient complètement uniques. La préférence linguistique contribue à cette unicité, en particulier pour les configurations multilingues ou avec des langues peu courantes. Fait notable : le fingerprinting linguistique a un impact disparate sur les locuteurs de langues minoritaires et les utilisateurs multilingues, qui présentent des taux d'unicité plus élevés et donc une exposition au pistage plus grande.

RGPD et browser language fingerprinting en France

Selon le RGPD, les données de préférence linguistique contribuent à une empreinte navigateur qui constitue des données personnelles lorsqu'elles peuvent être raisonnablement liées à un individu. La CNIL a explicitement requis un consentement éclairé pour le browser fingerprinting utilisé à des fins publicitaires, avec une exception d'intérêt légitime étroite pour la prévention de la fraude et la sécurité. Sous le CCPA et le CPRA californiens, les données de fingerprinting — incluant les identifiants basés sur la langue — sont traitées comme des informations personnelles soumises aux droits d'opt-out.

Les directives de fingerprinting du W3C identifient spécifiquement navigator.languages comme une surface de fingerprinting et conseillent aux éditeurs de navigateurs de limiter son exposition. Cette directive a influencé le comportement de Safari, Brave et du mode privé de Firefox.

Comment se protéger du browser language fingerprinting

  • Brave Browser (recommandé pour l'usage quotidien) : Les Shields de Brave implémentent une protection contre le fingerprinting linguistique par défaut. En mode standard, Brave ne rapporte que votre préférence de langue principale plutôt que le tableau complet. En mode strict, il rapporte toujours "en-US" quelle que soit votre configuration réelle, vous plaçant dans l'ensemble d'anonymat le plus large. La protection s'étend également à l'en-tête Accept-Language, assurant la cohérence entre la couche HTTP et la couche JavaScript.
  • Firefox avec privacy.resistFingerprinting : L'activation de ce paramètre dans about:config fait rapporter à Firefox uniquement ["en-US", "en"] quelle que soit votre configuration de langues, correspondant à la base de référence de Tor Browser.
  • Tor Browser (protection maximale) : Tor Browser rapporte une configuration linguistique uniforme identique pour tous ses utilisateurs — rendant le pistage linguistique individuel impossible au sein du réseau Tor.
  • Safari (protection partielle intégrée) : Safari sur iOS et macOS ne rapporte que la préférence de langue principale de l'utilisateur, pas le tableau complet. Ce n'est pas une protection complète mais réduit significativement le signal disponible pour les traceurs.
  • Réduire votre liste de langues : Si vous avez ajouté plusieurs langues à vos paramètres de navigateur, envisagez de supprimer les moins utilisées. Une combinaison inhabituelle comme ["fr-FR", "ja", "ar", "tr"] est bien plus distinctive que ["fr-FR"]. C'est un changement peu contraignant qui réduit significativement l'entropie linguistique.
  • Utiliser un VPN — mais comprendre ses limites : Un VPN change votre géolocalisation IP, ce qui peut introduire une discordance langue-localisation qui devient elle-même un signal. Un VPN ne change pas ce que navigator.languagesrapporte. Vérifiez si votre VPN et vos signaux de langue sont cohérents sur whatsmy.fyi.

Foire aux questions

Le fingerprinting linguistique fonctionne-t-il en navigation privée ?

Oui. La navigation privée empêche votre navigateur d'enregistrer l'historique, les cookies et les données de formulaire — mais elle ne change pas vos paramètres de langue. navigator.languages retourne les mêmes valeurs en fenêtre de navigation privée qu'en fenêtre normale. Seuls les navigateurs avec des protections actives des empreintes — Brave, Firefox avec privacy.resistFingerprinting, ou Tor Browser — se comportent différemment.

Quelle est la différence entre navigator.language et navigator.languages ?

navigator.language retourne une chaîne unique — votre préférence de langue principale. navigator.languages retourne un tableau ordonné de toutes vos préférences de langue configurées, de la plus à la moins préférée. Le premier élément de navigator.languages égale toujours navigator.language. Les traceurs lisent le tableau complet car il contient plus d'entropie — un utilisateur qui a configuré ["fr-FR", "ja-JP", "ko"] est bien plus identifiable que quelqu'un qui rapporte seulement "fr-FR".

Un VPN peut-il empêcher le fingerprinting linguistique ?

Non. Un VPN route votre trafic via un serveur différent pour changer votre adresse IP visible, mais il n'a aucun effet sur ce que JavaScript lit depuis les paramètres de langue de votre navigateur. En fait, un VPN peut aggraver la cohérence de votre empreinte : si votre IP suggère un pays mais que votre tableau de langues en suggère un autre, cette discordance est elle-même un signal de pistage distinctif.

L'en-tête Accept-Language HTTP est-il identique à navigator.languages ?

Ils partagent les mêmes données source. L'en-tête Accept-Language est construit à partir de vos préférences linguistiques et envoyé avec chaque requête HTTP avant l'exécution de tout JavaScript — ce qui signifie que les systèmes de fingerprinting côté serveur peuvent le lire sans avoir besoin d'exécuter un script. Les traceurs croisent les deux pour détecter les incohérences pouvant indiquer une usurpation. La protection linguistique de Brave couvre à la fois l'en-tête HTTP et l'API JavaScript pour les maintenir cohérents.

Le fingerprinting linguistique affecte-t-il davantage les locuteurs de langues minoritaires ?

Oui. La recherche de l'étude Panopticlick de l'EFF a trouvé que les locuteurs non anglophones et les utilisateurs multilingues ont des taux d'unicité d'empreinte navigateur plus élevés — et donc une exposition au pistage plus grande — que les utilisateurs uniquement anglophones. Un utilisateur dont le tableau de langues inclut une balise de langue peu fréquente, ou une combinaison inhabituelle de langues, est significativement plus identifiable que quelqu'un qui ne rapporte que ["en-US"]. Cet impact disparate est l'une des raisons pour lesquelles les défenseurs de la vie privée soutiennent que le fingerprinting devrait nécessiter un consentement explicite plutôt que de s'appuyer sur des exceptions d'intérêt légitime.

Comment la protection linguistique de Brave fonctionne-t-elle techniquement ?

Les Shields de Brave interceptent les appels à navigator.languages et à l'en-tête HTTP Accept-Language au niveau du moteur du navigateur. En mode Shields standard, Brave ne retourne que la préférence de langue principale, supprimant les langues secondaires du tableau. En mode strict, il retourne toujours ["en-US"] et définit l'en-tête HTTP correspondant, plaçant l'utilisateur dans le même ensemble d'anonymat que la majorité des internautes.

Articles connexes

Vérifiez votre adresse IP, localisation et score de confidentialité — instantanément.

Zéro log. Zéro tracking. Zéro API externe.

Lancer la vérification →

Articles connexes

Browser Language Fingerprinting : navigator.languages vous piste | whatsmy.fyi