Empreinte

Fingerprinting Network Info API : identite de connexion

Comment les propriétés navigator.connection comme effectiveType, RTT et downlink créent des empreintes réseau, et comment les contrôler.

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.

Introduction

Les navigateurs web modernes exposent les détails de connexion via l'API Network Information (navigator.connection). Cette API a été conçue à l'origine pour aider les développeurs web à diffuser du contenu plus efficacement. Par exemple, un site web pourrait servir des images de résolution inférieure aux utilisateurs sur des connexions plus lentes, ou différer les ressources non critiques lorsque la bande passante est limitée. Des propriétés comme effectiveType, rtt (temps aller-retour), downlink (estimation de bande passante) et type (type de connexion) contribuent toutes à ces décisions adaptatives.

Bien que cette fonctionnalité améliore l'expérience de navigation, elle introduit également une surface de fingerprinting significative. Chaque fois que votre navigateur rapporte ses caractéristiques de connexion, il partage des informations sur votre environnement réseau, votre FAI, et potentiellement même votre emplacement géographique. Ces détails, combinés avec d'autres signaux du navigateur, créent un profil plus spécifique qui peut être utilisé pour identifier et suivre les utilisateurs entre les sessions de navigation sans leur connaissance ou consentement.

BotBrowser fournit une protection d'empreinte au niveau du moteur pour toutes les propriétés navigator.connection, garantissant que les valeurs rapportées par le navigateur correspondent au profil d'empreinte chargé plutôt que de révéler votre environnement réseau réel.

Pourquoi les informations réseau comptent pour la confidentialité

Les données de connexion réseau posent un défi de confidentialité unique car les valeurs sont dynamiques. Contrairement aux propriétés statiques du navigateur comme la résolution d'écran ou les polices installées, les métriques réseau changent avec le temps. Cependant, les motifs créés par ces valeurs changeantes peuvent toujours servir d'aides au suivi puissantes, surtout lorsqu'ils sont combinés avec d'autres signaux d'empreinte.

Voici pourquoi les informations réseau soulèvent des préoccupations de confidentialité pour les chercheurs, testeurs et quiconque valorise sa confidentialité en ligne :

  • Exposition géographique : les valeurs de latence de connexion sont corrélées avec la distance physique aux serveurs. Si votre navigateur rapporte constamment une faible latence vers les serveurs d'une région et une haute latence vers les serveurs d'une autre, ce motif révèle votre emplacement approximatif, même sans données de géolocalisation IP.
  • Profilage du FAI et du type de connexion : différents fournisseurs d'accès internet et technologies de connexion produisent des signatures réseau caractéristiques. Une connexion fibre optique produit des motifs de latence et de bande passante mesurablemenent différents par rapport à une connexion de données cellulaire ou un lien satellite. Ces différences aident à réduire votre identité.
  • Exposition proxy et VPN : lorsque vous vous connectez via un proxy ou VPN, les valeurs navigator.connection peuvent ne pas s'aligner avec le comportement réseau attendu pour l'emplacement de sortie du proxy. Cette inadéquation entre vos données de connexion rapportées et votre adresse IP apparente peut révéler que vous utilisez un proxy, sapant la confidentialité que le proxy était censé fournir.
  • Corrélation de session : bien que les lectures réseau individuelles fluctuent, la distribution statistique de vos valeurs de connexion dans le temps forme un motif reconnaissable. Ce motif peut être utilisé pour lier des sessions de navigation séparées au même utilisateur.

La propriété saveData, qui indique si un utilisateur a activé une préférence d'économie de données, ajoute une autre dimension à cette empreinte. Seul un petit pourcentage d'utilisateurs active cette fonctionnalité, en faisant un identifiant distinctif à elle seule.

Des recherches de l'INRIA ont montré que les informations réseau, combinées avec l'analyse temporelle, pouvaient améliorer la précision d'identification des utilisateurs entre sessions jusqu'à 8 % par rapport au fingerprinting sans données réseau. L'API ne nécessite aucune permission et fonctionne silencieusement en arrière-plan, ce qui la rend particulièrement préoccupante du point de vue de la confidentialité.

Comprendre l'API Network Information

Quelles propriétés sont exposées

L'API Network Information rend plusieurs propriétés disponibles via navigator.connection :

  • effectiveType : classifie la connexion comme slow-2g, 2g, 3g ou 4g en fonction des métriques de performance observées.
  • rtt : une estimation du temps aller-retour en millisecondes, arrondi aux 25 ms les plus proches.
  • downlink : une estimation de la bande passante descendante en mégabits par seconde, arrondie aux 25 Kbps les plus proches.
  • type : la technologie de connexion sous-jacente, comme wifi, cellular, ethernet ou unknown.
  • saveData : un booléen indiquant si l'utilisateur a demandé une utilisation réduite des données.

Pourquoi les outils de confidentialité standard ne suffisent pas

Comprendre pourquoi les approches courantes ne traitent pas adéquatement le fingerprinting réseau aide à expliquer pourquoi BotBrowser adopte une approche différente.

Les VPN et serveurs proxy changent votre adresse IP visible, mais ne modifient pas les valeurs rapportées par navigator.connection. Votre navigateur continue de mesurer et rapporter les conditions réseau réelles. Dans de nombreux cas, la surcharge de routage supplémentaire d'un VPN rend en fait l'empreinte réseau plus distinctive en créant une combinaison inhabituelle de haute latence avec une adresse IP qui suggère un emplacement proche.

Les modes de navigation privée et incognito n'altèrent pas du tout les informations réseau. L'API navigator.connection rapporte les mêmes valeurs que vous soyez en session de navigation privée ou non.

Les extensions de navigateur peuvent tenter de remplacer les propriétés de navigator.connection, mais elles font face à des défis fondamentaux de cohérence. Définir des valeurs de remplacement statiques crée un profil réseau qui ne change jamais, ce qui est en soi inhabituel. Plus important encore, les extensions opèrent à une couche au-dessus du moteur du navigateur, ce qui signifie que d'autres API et mécanismes internes du navigateur peuvent toujours rapporter l'état réseau réel, créant des contradictions faciles à identifier.

Bloquer l'API entièrement est également problématique. Si navigator.connection est manquant ou retourne des valeurs inattendues, cette absence même devient un signal distinctif. Très peu de configurations de navigateur légitimes n'ont pas cette API du tout.

Ces limitations existent parce que les informations réseau sont profondément intégrées dans le moteur du navigateur. Une protection efficace nécessite un contrôle au même niveau où les valeurs sont originées.

Comment BotBrowser protège votre identité réseau

BotBrowser traite le fingerprinting des informations réseau au niveau du moteur du navigateur. Plutôt que de tenter d'intercepter ou de modifier les valeurs après leur génération, BotBrowser contrôle les valeurs que l'API navigator.connection rapporte dès le départ. Cela garantit une cohérence complète à travers toutes les méthodes d'accès, que ce soit un site web qui lit les propriétés directement, écoute les événements de changement, ou vérifie les références internes du navigateur.

Protection réseau basée sur le profil

Chaque profil d'empreinte BotBrowser inclut des valeurs d'information réseau réalistes capturées à partir de configurations d'appareils réels. Lorsque vous chargez un profil, le navigateur applique automatiquement ces valeurs :

chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

Le profil contient des valeurs rtt, downlink, effectiveType, type et saveData appropriées qui sont cohérentes en interne et réalistes pour le type de connexion que le profil représente. Cela signifie que vous n'avez pas besoin de configurer manuellement les propriétés réseau individuelles. Le profil les gère toutes ensemble, maintenant les relations entre les valeurs qu'un vrai navigateur exhiberait.

Remplacement explicite des informations réseau

Pour les scénarios où vous avez besoin d'un contrôle explicite sur le rapportage des informations réseau, BotBrowser fournit le flag --bot-network-info-override :

chrome --bot-profile="/path/to/profile.enc" \
       --bot-network-info-override \
       --user-data-dir="$(mktemp -d)"

Lorsque ce flag est activé, le navigateur rapporte les valeurs d'information réseau exclusivement à partir du profil plutôt que de mesurer la connexion réseau réelle. Cela contrôle également les en-têtes Client Hints correspondants (RTT, Downlink, ECT, Save-Data), garantissant la cohérence entre les valeurs de l'API JavaScript et les valeurs des en-têtes HTTP. Le remplacement s'applique à toutes les propriétés et empêche les changements d'état réseau réels de fuiter via l'API pendant votre session.

Protection cohérente lors de l'utilisation de proxys

L'un des cas d'utilisation les plus importants pour la protection des informations réseau est le maintien de la cohérence lors de la navigation via un proxy. BotBrowser garantit que les valeurs navigator.connection s'alignent avec les caractéristiques réseau attendues pour l'emplacement du proxy :

chrome --bot-profile="/path/to/profile.enc" \
       --proxy-server="http://us-proxy:8080" \
       --bot-network-info-override \
       --user-data-dir="$(mktemp -d)"

Lorsqu'un profil est configuré avec des valeurs réseau appropriées pour la région géographique du proxy, l'identité de navigation entière reste cohérente. Les caractéristiques de connexion rapportées correspondent à ce qui serait attendu pour un utilisateur à cet emplacement, éliminant les inadéquations qui exposent traditionnellement l'utilisation de proxy.

Gestion des événements de changement

Sur un navigateur standard, l'objet navigator.connection déclenche un événement change chaque fois que les conditions réseau changent. Ces transitions peuvent révéler des informations sur votre environnement réel, par exemple, le passage du Wi-Fi aux données cellulaires. BotBrowser gère l'événement change pour correspondre à la stabilité réseau attendue du profil, garantissant que les changements réels de votre réseau hôte ne fuient pas pendant une session.

Exemples de configuration

Utilisation CLI de base

# Profile-based network info protection
chrome --bot-profile="/path/to/profile.enc" \
       --user-data-dir="$(mktemp -d)"

# With explicit network info override for full control
chrome --bot-profile="/path/to/profile.enc" \
       --bot-network-info-override \
       --user-data-dir="$(mktemp -d)"

Intégration Playwright

const { chromium } = require('playwright-core');

(async () => {
  const browser = await chromium.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
      '--bot-network-info-override',
    ],
    headless: true,
  });

  const context = await browser.newContext({ viewport: null });
  const page = await context.newPage();

  const networkInfo = await page.evaluate(() => {
    const conn = navigator.connection;
    return {
      effectiveType: conn.effectiveType,
      rtt: conn.rtt,
      downlink: conn.downlink,
      type: conn.type,
      saveData: conn.saveData,
    };
  });

  console.log('Network info:', networkInfo);
  await browser.close();
})();

Intégration Puppeteer

const puppeteer = require('puppeteer-core');

(async () => {
  const browser = await puppeteer.launch({
    executablePath: '/path/to/botbrowser/chrome',
    args: [
      '--bot-profile=/path/to/profile.enc',
      '--bot-network-info-override',
    ],
    headless: true,
    defaultViewport: null,
  });

  const page = await browser.newPage();
  await page.goto('about:blank');

  const connInfo = await page.evaluate(() => ({
    effectiveType: navigator.connection.effectiveType,
    rtt: navigator.connection.rtt,
    downlink: navigator.connection.downlink,
  }));

  console.log('Connection info:', connInfo);
  await browser.close();
})();

Cohérence d'identité complète

Pour une protection d'empreinte complète, combinez le contrôle des informations réseau avec d'autres paramètres d'identité pour créer un profil de navigation entièrement cohérent :

chrome --bot-profile="/path/to/profile.enc" \
       --proxy-server="socks5://user:pass@us-proxy:1080" \
       --bot-network-info-override \
       --bot-config-timezone="America/New_York" \
       --bot-config-locale="en-US" \
       --user-data-dir="$(mktemp -d)"

Cette configuration garantit que votre fuseau horaire, locale, informations réseau et adresse IP racontent tous la même histoire géographique, créant une identité de navigation cohérente et réaliste.

Vérification

Après avoir lancé BotBrowser avec un profil, vous pouvez vérifier que la protection des informations réseau fonctionne correctement :

const conn = navigator.connection;
console.log('effectiveType:', conn.effectiveType);
console.log('downlink:', conn.downlink, 'Mbps');
console.log('rtt:', conn.rtt, 'ms');
console.log('type:', conn.type);
console.log('saveData:', conn.saveData);

// Verify values remain stable over time
setTimeout(() => {
  console.log('After 5s - rtt:', conn.rtt, 'downlink:', conn.downlink);
}, 5000);

Points à vérifier :

  1. effectiveType est approprié pour la classe réseau du profil (4g pour les connexions haut débit, 3g pour les connexions plus lentes)
  2. La valeur rtt est cohérente avec l'emplacement du proxy (valeurs plus basses pour les serveurs proches, plus élevées pour les distants)
  3. downlink est réaliste pour le type de connexion représenté par le profil
  4. Les valeurs restent stables pendant la session sans changements inattendus
  5. saveData correspond à la configuration du profil
  6. Les outils de test d'empreinte ne rapportent aucune anomalie ou incohérence

Bonnes pratiques

  1. Toujours utiliser --bot-network-info-override lors de l'utilisation de proxys. C'est la recommandation la plus importante. Sans le remplacement, les mesures réseau réelles peuvent fuiter et contredire les caractéristiques attendues pour l'emplacement du proxy, sapant potentiellement votre configuration de confidentialité.

  2. Faire correspondre les valeurs réseau à la géographie. Choisissez des profils avec des valeurs réseau réalistes pour l'emplacement du proxy que vous utilisez. Un profil configuré pour une connexion haut débit devrait avoir des valeurs de latence cohérentes pour la région géographique de votre serveur proxy.

  3. Utiliser des profils capturés à partir d'appareils réels. Les profils BotBrowser incluent des valeurs d'information réseau provenant de captures d'appareils réels, garantissant que les valeurs sont réalistes et cohérentes en interne. C'est bien plus fiable que de spécifier manuellement des paramètres réseau individuels.

  4. Combiner la protection réseau avec d'autres contrôles d'empreinte. Les informations réseau sont plus efficaces comme signal d'empreinte lorsqu'elles sont combinées avec d'autres points de données. De même, la protection des informations réseau est plus efficace lorsqu'elle est combinée avec les autres contrôles d'empreinte de BotBrowser, incluant le fuseau horaire, la locale et la protection WebRTC.

  5. Vérifier votre configuration avant de démarrer des sessions importantes. Utilisez le script de vérification ci-dessus pour confirmer que toutes les valeurs réseau sont rapportées correctement et restent stables dans le temps.

Questions fréquentes

L'API Network Information est-elle disponible sur tous les navigateurs ?

Non. L'API complète avec toutes les propriétés est disponible dans Chrome, Edge et Opera. Firefox a un support limité, et Safari ne la prend pas en charge du tout. Les profils BotBrowser tiennent compte du niveau de support API du navigateur cible, de sorte que l'empreinte reste cohérente avec la marque de navigateur émulée.

BotBrowser contrôle-t-il aussi les en-têtes Client Hints liés aux informations réseau ?

Oui. Lorsque --bot-network-info-override est activé, BotBrowser contrôle à la fois les valeurs de l'API JavaScript et les en-têtes HTTP Client Hints correspondants (RTT, Downlink, ECT, Save-Data). Cela garantit la cohérence entre ce que la page peut lire via JavaScript et ce que le serveur voit dans les en-têtes de requête.

Les sites web peuvent-ils mesurer la latence réseau réelle via d'autres API ?

Oui. L'API Resource Timing (performance.getEntriesByType('resource')) peut mesurer la latence réelle des requêtes. Les contrôles de timing de BotBrowser via --bot-time-scale aident à maintenir la cohérence entre les valeurs navigator.connection et le timing des requêtes observable, fournissant une couche supplémentaire de protection d'empreinte.

La propriété saveData compte-t-elle pour le fingerprinting ?

Oui. Seul un petit pourcentage d'utilisateurs active le mode d'économie de données, ce qui en fait un signal distinctif lorsqu'il est présent. Les profils BotBrowser définissent saveData pour correspondre à la configuration de l'appareil cible. Pour la plupart des profils de bureau, c'est défini sur false, reflétant les schémas d'utilisation typiques.

Comment BotBrowser gère-t-il les changements d'état réseau pendant une session ?

BotBrowser gère l'événement change sur navigator.connection de sorte que les transitions réseau réelles sur la machine hôte ne fuient pas vers la page web. L'état réseau rapporté reste cohérent avec le profil chargé tout au long de la session entière, indépendamment de ce qui se passe sur le réseau réel.

Cela protège-t-il contre la mesure de latence côté serveur ?

Non. La mesure de latence côté serveur, où le serveur mesure le temps aller-retour de ses propres requêtes, opère en dehors du navigateur et ne peut être contrôlée par aucun outil côté client. La protection des informations réseau de BotBrowser contrôle les valeurs de l'API côté client. Pour la cohérence au niveau réseau, utilisez un serveur proxy approprié qui fournit des caractéristiques de latence réalistes pour la région géographique cible.

Puis-je définir des valeurs d'information réseau personnalisées sans profil ?

Le flag --bot-network-info-override fonctionne en conjonction avec un profil chargé. Le profil fournit les valeurs spécifiques à rapporter. Si vous avez besoin de caractéristiques réseau différentes, utilisez un profil différent qui correspond à votre configuration souhaitée, ou combinez votre profil actuel avec une configuration proxy appropriée.

Résumé

L'API Network Information expose des caractéristiques de connexion qui servent de signaux de fingerprinting et peuvent révéler l'utilisation de proxy à travers des incohérences de latence et de bande passante. BotBrowser fournit une protection d'empreinte complète pour toutes les propriétés navigator.connection au niveau du moteur, utilisant des profils et le flag --bot-network-info-override pour garantir que les valeurs rapportées sont réalistes, stables et cohérentes avec votre identité de navigation globale. En contrôlant à la fois l'API JavaScript et les en-têtes Client Hints correspondants, BotBrowser offre une protection complète des informations réseau qui fonctionne en harmonie avec les configurations proxy, les paramètres de fuseau horaire et autres contrôles d'identité. Pour une protection associée, consultez configuration proxy, prévention des fuites DNS et configuration fuseau horaire et locale.

#Network-Info#Connection#Rtt#fingerprinting#Privacy#Downlink

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.