Fingerprinting MIME et codec : suivi multimedia
Comment les requêtes MediaCapabilities, canPlayType et de support codec créent des empreintes uniques, et les techniques pour contrôler l'identité des formats média.
Vous préférez la doc produit maintenue ?
Cet article a une page équivalente dans le centre de documentation. Utilisez les docs pour le flux canonique, les flags à jour et la référence durable.
Introduction
Les navigateurs modernes prennent en charge un large éventail de formats média, des standards établis comme H.264 et AAC aux codecs plus récents comme AV1, VP9 et Opus. Les développeurs web ont besoin de savoir quels formats un navigateur peut lire, et la plateforme fournit plusieurs API pour interroger les capacités média. Ces API aident les sites web à fournir le bon format vidéo et audio pour chaque visiteur, garantissant une qualité de lecture et des performances optimales.
Cependant, le support des codecs varie considérablement entre les navigateurs, les versions des systèmes d'exploitation et les configurations matérielles. Un navigateur sous Windows avec le décodage vidéo matériel rapporte des capacités différentes de la même version du navigateur sous Linux sans accélération matérielle. Ces différences créent une empreinte stable et interrogeable qui ne nécessite aucune permission et ne produit aucun indicateur visible pour l'utilisateur. N'importe quel site web peut énumérer le support des codecs en quelques millisecondes, construisant un profil détaillé des capacités média de votre appareil sans votre connaissance ni votre consentement.
C'est pourquoi le fingerprinting par format média est un problème de confidentialité sérieux, et pourquoi BotBrowser fournit une protection complète au niveau du moteur.
Impact sur la vie privée
Le fingerprinting des capacités média est particulièrement efficace parce que le paysage des codecs est très fragmenté. Contrairement aux signaux d'empreinte plus simples qui produisent une poignée de valeurs distinctes, le support des codecs crée une matrice de centaines de combinaisons potentielles. Cette haute entropie en fait l'une des techniques de fingerprinting les plus puissantes disponibles pour les sites web.
Considérez l'étendue de la variation qui existe entre les plateformes :
- Le décodage vidéo matériel dépend de la version du navigateur, du modèle de GPU et du système d'exploitation. La disponibilité de l'accélération matérielle pour des codecs spécifiques révèle des informations détaillées sur le matériel de votre système.
- Les codecs spécifiques à la plateforme sont disponibles sur certains systèmes d'exploitation mais pas d'autres. Certains codecs sont fournis par le framework média natif du système d'exploitation, ce qui en fait un indicateur direct de votre plateforme.
- Les codecs premium (comme Dolby Vision et Dolby Atmos) ne sont disponibles que sur des combinaisons spécifiques de matériel et de système d'exploitation, réduisant encore davantage l'identité de votre appareil.
- Les combinaisons conteneur et codec produisent des niveaux de support différents selon le navigateur et la plateforme, créant des points de données supplémentaires pour le fingerprinting.
- Le support des codecs audio varie entre les plateformes de manière subtile qui s'ajoute à l'empreinte globale, même si la plupart des navigateurs modernes partagent une base commune.
La combinaison des réponses à travers des dizaines de requêtes de formats média courants produit un profil hautement distinctif. Lorsque des requêtes de capacités plus avancées sont utilisées, des informations supplémentaires sur l'accélération matérielle, l'efficacité énergétique et la fluidité de lecture sont exposées, augmentant encore l'unicité de l'empreinte.
Une analyse de 2022 des 10 000 premiers sites Alexa a révélé que plus de 15% interrogeaient les capacités média dans le cadre de leurs scripts de fingerprinting. Les requêtes sont rapides, ne nécessitent aucune permission et sont indistinguables de la détection légitime de fonctionnalités pour la lecture média. Cela les rend difficiles à bloquer sans dégrader l'expérience web.
Pourquoi cela concerne votre vie privée
Votre matériel révélé
Chaque requête de capacité média révèle quelque chose sur votre matériel. Que votre GPU prenne en charge le décodage matériel pour un format spécifique, quels codecs votre système d'exploitation fournit nativement, et quel niveau de performance votre appareil peut atteindre pour différents types de média. Toutes ces informations sont exposées silencieusement, sans aucune notification ni demande de consentement.
Identification persistante
Contrairement aux cookies, qui peuvent être effacés, votre profil de support codec est lié à votre matériel et à votre système d'exploitation. Il reste le même entre les sessions de navigation, le mode navigation privée, et même après avoir effacé toutes les données du navigateur. Cette persistance rend le fingerprinting par codec particulièrement précieux à des fins de pistage.
Pistage inter-sites
Parce que votre profil de codecs est cohérent sur chaque site web que vous visitez, il peut être utilisé comme identifiant de liaison. Deux sites web différents qui interrogent vos capacités média recevront les mêmes réponses, leur permettant de corréler vos visites même sans cookies partagés ni informations de connexion.
Aucune sensibilisation de l'utilisateur
Il n'y a aucun indicateur visuel lorsqu'un site web interroge vos capacités média. Aucune boîte de dialogue de permission n'apparaît. Aucune icône n'est affichée dans la barre d'adresse. Les utilisateurs n'ont aucun moyen de savoir que leur profil de codecs est collecté, et aucun paramètre de navigateur pour l'empêcher.
Approches de protection courantes et leurs limites
VPN et serveurs proxy
Les VPN n'ont aucun effet sur les requêtes de support codec. La détection des capacités média se produit entièrement dans le navigateur et n'implique pas de requêtes réseau. Deux appareils derrière le même VPN rapportent des profils de codecs complètement différents en fonction de leur matériel et logiciel local. Les VPN protègent votre adresse IP, mais laissent votre empreinte média pleinement exposée.
Navigation privée et mode incognito
Les modes de navigation privée ne modifient pas le support des codecs. Les mêmes réponses sont retournées en mode privé qu'en fenêtre normale, car le support des codecs est déterminé par le binaire du navigateur et la configuration du système d'exploitation, pas par les données stockées. Le mode navigation privée est conçu pour empêcher la persistance des cookies et de l'historique, pas pour changer les capacités fondamentales de votre appareil.
Extensions de navigateur
Les extensions qui tentent de modifier les réponses de capacité média font face à plusieurs problèmes fondamentaux :
- Cohérence entre plusieurs API : le navigateur expose les informations de codec à travers plusieurs interfaces différentes. Modifier l'une sans modifier les autres crée des incohérences détectables qui sont en fait pires pour votre vie privée que l'empreinte originale.
- Impact fonctionnel : rapporter incorrectement un codec comme non supporté alors qu'il est réellement disponible peut casser la lecture vidéo et audio. Rapporter un codec comme supporté alors qu'il ne l'est pas cause des échecs de lecture. Dans les deux cas, l'expérience utilisateur en souffre.
- Surface de détection : la substitution des méthodes natives du navigateur au niveau JavaScript modifie leurs propriétés internes et peut être détectée par des techniques d'inspection.
- Limitations de portée : les extensions ne peuvent généralement pas intercepter les requêtes de capacité faites depuis les Web Workers ou les service workers, laissant ces contextes avec des informations non protégées.
Randomisation
Modifier aléatoirement les réponses de codec est impraticable. Contrairement au fingerprinting par Canvas ou audio où de petites perturbations de bruit sont possibles, le support des codecs est fondamentalement binaire : un format est soit supporté, soit il ne l'est pas. Des réponses aléatoires casseraient la lecture média et produiraient des combinaisons évidemment invalides qui attirent plus l'attention que l'empreinte originale.
L'approche de BotBrowser au niveau du moteur
BotBrowser contrôle les réponses de capacité média au niveau du moteur du navigateur, garantissant que toutes les API liées aux codecs retournent des résultats cohérents avec le profil d'empreinte chargé. Ce n'est pas un patch JavaScript ni une extension de navigateur. BotBrowser modifie le rapport interne de capacité média du navigateur, de sorte que chaque API retourne des résultats authentiques et cohérents avec le profil.
Capacités média basées sur le profil
Lorsqu'un profil d'empreinte est chargé, BotBrowser configure la matrice complète de support codec pour correspondre à la plateforme cible du profil :
chrome --bot-profile="/path/to/profile.enc" \
--user-data-dir="$(mktemp -d)"
Le profil définit l'ensemble complet des réponses de codec, capturées depuis un vrai appareil correspondant à la configuration du profil. Cela inclut :
- Les niveaux de support corrects pour chaque combinaison de format média et de codec
- Les flags d'accélération matérielle appropriés
- Les indicateurs de fluidité de lecture et d'efficacité énergétique précis pour la plateforme
- Des réponses cohérentes entre toutes les API de capacité média
Chaque réponse correspond à ce qu'un vrai appareil avec la configuration profilée rapporterait. Il n'y a pas de lacunes, pas d'incohérences et aucun signal qui pourrait indiquer que les réponses ont été modifiées.
Cohérence inter-API
BotBrowser garantit que toutes les API liées aux codecs sont en accord les unes avec les autres. Si une API rapporte le support pour un format donné, les autres API rapportent également un support cohérent avec les détails appropriés. Cette cohérence multi-API est essentielle car les scripts de fingerprinting interrogent régulièrement plusieurs API et comparent les résultats pour détecter les incohérences.
Réponses précises par plateforme
Un profil Windows rapporte les codecs spécifiques à Windows (y compris ceux fournis par le framework média natif de la plateforme), tandis qu'un profil Linux omet les codecs de plateforme qui ne sont pas disponibles sous Linux. Cet alignement s'étend à l'accélération matérielle : un profil ciblant un système avec un GPU spécifique rapporte les capacités de décodage matériel cohérentes avec le support du décodeur de ce GPU.
Cette précision de plateforme est ce qui sépare BotBrowser des approches superficielles. Chaque détail du profil de capacité média correspond à une configuration matérielle et logicielle réelle et cohérente.
Aucun impact fonctionnel
Parce que BotBrowser contrôle le rapport de codec au niveau du moteur plutôt que de bloquer les appels d'API, la lecture média continue de fonctionner normalement. Les sites web qui utilisent les requêtes de codec pour une sélection légitime de format reçoivent des informations appropriées sur ce que le navigateur peut lire. Votre vie privée est protégée sans sacrifier la fonctionnalité.
Configuration et utilisation
Utilisation CLI de base
La protection des codecs est automatique lors du chargement d'un profil :
chrome --bot-profile="/path/to/profile.enc" \
--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',
],
headless: true,
});
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
// Naviguer pour vérifier que les signaux codec sont cohérents
await page.goto('https://example.com');
// Vérifier que la protection codec est active
const codecInfo = await page.evaluate(() => {
const video = document.createElement('video');
const codecs = [
'video/mp4; codecs="avc1.42E01E"',
'video/webm; codecs="vp9"',
'video/mp4; codecs="av01.0.01M.08"',
'audio/mp4; codecs="mp4a.40.2"',
'audio/webm; codecs="opus"',
];
return codecs.map(c => ({
codec: c,
supported: video.canPlayType(c),
}));
});
console.log('Codec support:', JSON.stringify(codecInfo, null, 2));
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',
],
headless: true,
defaultViewport: null,
});
const page = await browser.newPage();
await page.goto('about:blank');
// Vérifier que les capacités média correspondent au profil
const capabilities = await page.evaluate(async () => {
const result = await navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/mp4; codecs="avc1.640028"',
width: 1920, height: 1080, bitrate: 5000000, framerate: 30,
},
});
return {
supported: result.supported,
smooth: result.smooth,
powerEfficient: result.powerEfficient,
};
});
console.log('Media capabilities:', capabilities);
await browser.close();
})();
Vérification
Après avoir lancé BotBrowser avec un profil, vérifiez que votre protection des capacités média fonctionne correctement :
- Les niveaux de support correspondent aux valeurs attendues pour la plateforme cible du profil. Chaque codec devrait retourner la réponse qu'un vrai appareil avec la configuration profilée produirait.
- La cohérence inter-API est maintenue. Toutes les API de capacité média devraient être en accord. Si l'une rapporte le support pour un format, les autres devraient être cohérentes.
- Les codecs spécifiques à la plateforme sont alignés avec le système d'exploitation du profil. Les codecs disponibles uniquement sur certaines plateformes devraient être présents ou absents selon le profil.
- Les résultats sont stables entre les rechargements de page et les redémarrages du navigateur. Votre empreinte de capacité média devrait être reproductible et cohérente à chaque fois.
- Les outils de test d'empreinte ne rapportent aucune anomalie dans la détection des capacités média. Vous pouvez utiliser des sites web populaires de test d'empreinte pour vérifier que votre profil de codec semble authentique.
Bonnes pratiques
-
Utilisez des profils complets. Le support des codecs est étroitement lié au système d'exploitation, à la version du navigateur et au GPU. Un profil complet garantit que ces trois dimensions sont cohérentes. Les profils BotBrowser sont capturés depuis de vrais appareils, donc la complétude est intégrée.
-
Faites correspondre le profil au cas d'usage prévu. Si votre workflow implique des sites riches en média, choisissez un profil qui prend en charge les codecs que ces sites attendent. Un profil qui manque certains codecs peut causer une dégradation de la qualité sur certains sites de streaming. BotBrowser offre des profils pour diverses configurations de plateformes pour répondre à vos besoins.
-
Vérifiez la cohérence inter-API. Confirmez toujours que plusieurs API de capacité média sont en accord. Les scripts de fingerprinting comparent les résultats entre les API, donc la cohérence est essentielle. BotBrowser gère cela automatiquement, mais la vérification vous donne confiance.
-
N'installez pas d'extensions de codec supplémentaires. Les extensions de navigateur qui ajoutent du support codec (comme h265ify) peuvent altérer le profil de codec et entrer en conflit avec le contrôle au niveau du moteur de BotBrowser. Laissez le profil gérer entièrement le rapport de codec.
-
Combinez avec la protection des signaux DRM. Les capacités de codec média et les capacités de codec DRM devraient raconter une histoire cohérente. Utiliser un seul profil BotBrowser garantit l'alignement entre les deux. Voir l'article sur la protection des signaux DRM pour les détails.
Questions fréquentes
Le fingerprinting par codec fonctionne-t-il sur tous les navigateurs ?
Oui. Tous les navigateurs majeurs implémentent les API de capacité média. Les requêtes fonctionnent de manière cohérente sur toutes les plateformes, ce qui explique pourquoi le fingerprinting par codec est une technique si largement utilisée. BotBrowser protège contre ces requêtes quel que soit le navigateur cible du profil.
Combien d'empreintes de codec distinctes existent ?
Le nombre est très grand. Avec des dizaines de chaînes de codec couramment interrogées, chacune retournant plusieurs valeurs possibles, l'espace de combinaison théorique est énorme. En pratique, les vrais appareils se regroupent en plusieurs centaines de configurations courantes, mais l'empreinte reste hautement distinctive. Les profils BotBrowser correspondent à des configurations réelles d'appareils, garantissant que votre empreinte se situe dans la distribution normale.
Le support des codecs change-t-il entre les versions du navigateur ?
Oui. Les nouvelles versions du navigateur ajoutent le support de nouveaux codecs et en déprécient parfois d'anciens. Les profils BotBrowser sont versionnés pour correspondre à des versions spécifiques du navigateur, donc votre profil de codec correspond toujours à une configuration réelle et valide.
Les sites web peuvent-ils détecter que les réponses de codec sont contrôlées ?
Si le contrôle est appliqué au niveau JavaScript (en substituant les méthodes natives), il peut être détecté. BotBrowser applique le contrôle au niveau du moteur, donc les méthodes natives elles-mêmes retournent les valeurs cohérentes avec le profil. Il n'y a pas de substitutions JavaScript à détecter. La protection est invisible pour le site web.
Cela affecte-t-il la lecture vidéo réelle ?
Le rapport de codec de BotBrowser est conçu pour être cohérent avec les capacités de lecture du navigateur sous le profil chargé. Les sites web qui utilisent les requêtes de codec pour la sélection de format reçoivent des réponses appropriées, et la lecture média fonctionne normalement. Vous obtenez la protection de la vie privée sans sacrifier votre expérience de navigation.
Qu'en est-il des requêtes de codec pour les médias chiffrés (EME) ?
Les requêtes de codec EME (utilisées pour le contenu protégé par DRM) sont également contrôlées par le profil. Voir l'article sur la protection des signaux DRM pour les détails sur les protections spécifiques à EME. BotBrowser garantit que les requêtes de codec générales et spécifiques au DRM sont cohérentes.
Comment cela interagit-il avec la négociation de codec WebRTC ?
WebRTC utilise une négociation de codec séparée via SDP (Session Description Protocol). Les profils BotBrowser contrôlent à la fois les requêtes de codec média web et les signaux de codec liés à WebRTC pour une cohérence complète. Votre empreinte média est protégée dans tous les contextes.
Résumé
Les requêtes de type MIME et de support codec sont une surface de fingerprinting à haute entropie qui révèle les détails du système d'exploitation, du matériel et de la configuration du navigateur. Ces requêtes s'exécutent silencieusement, ne nécessitent aucune permission et produisent des résultats stables qui persistent entre les sessions. BotBrowser contrôle toutes les API de capacité média au niveau du moteur via son système de profils, garantissant des réponses cohérentes et précises entre les API qui correspondent à la plateforme cible. Votre empreinte de codec est authentique, stable et indiscernable d'un vrai appareil. Combiné avec la protection des signaux DRM, le contrôle des empreintes audio et la gestion complète des profils, BotBrowser fournit une protection complète des empreintes média.
Articles Connexes
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.