Ce dépôt contient un ensemble de données normalisé et soigneusement sélectionné sur les chaînes d'agent utilisateur, stocké sous forme de fichiers JSON et conçu pour être utilisé comme une table de recherche afin de dériver des données simples sur l'agent utilisateur, telles que le client de l'agent utilisateur et le système d'exploitation.
Il est utilisé comme composant de PageviewsOnline, mais il est publié ici pour un usage général.
Le jeu de données est complété par des scripts d'aide simples pour valider les données et les exporter vers d'autres formats ou langages de programmation (comme Java).
Philosophie Du Projet
Le but de ce projet n'est pas de proposer un système de détection d'agent utilisateur infaillible ou parfaitement précis, mais plutôt une solution pragmatique, du mieux possible, qui s'améliore au fil du temps grâce à une utilisation réelle et aux contributions de la communauté.
La détection de l’agent utilisateur est intrinsèquement imparfaite. Plutôt que de viser une précision absolue, ce projet se concentre sur le fait d’être :
- Pratique
- Maintenable
- Transparente
- Assez bon pour l’analyse et la classification dans le monde réel
La précision s'améliore avec le temps grâce à des mises à jour triées sur le volet, à l'utilisation réelle et aux contributions de la communauté.
L'analyse heuristique et les expressions régulières complexes sacrifient souvent la prévisibilité au profit de maigres gains de précision.
Ce projet privilégie :
- La transparence plutôt que la magie
- Des données soigneusement sélectionnées plutôt qu'une logique opaque
- Des résultats explicables plutôt que des détections spéculatives
Fonctionnalités
- Ensemble de données sur les agents utilisateurs, normalisé et revu par des humains
- Comportement de recherche simple et prévisible
- Format basé sur JSON, facile à inspecter et à versionner
- Scripts de validation légers
- Exporter des helpers pour d'autres langages (par ex. Java)
- Utilisé activement dans un environnement SaaS de production
Chaînes d'agents utilisateurs normalisées
L'objectif principal de ce projet est d'extraire des informations de haut niveau et stables à partir des chaînes d'agents utilisateurs de manière rapide et prévisible.
Pour soutenir cela, chaque chaîne d’agent utilisateur est normalisée avant le traitement. La normalisation élimine les variations instables (comme les numéros de version et les différences de casse) tout en préservant le sens structurel et sémantique de l’agent utilisateur.
Les chaînes d’agent utilisateur sont normalisées selon les étapes suivantes :
- Remplacez tous les chiffres numériques (0-9) par le caractère de remplacement x. Cela élimine le bruit causé par les changements de version tout en préservant la structure et la longueur des jetons.
- Convertissez toute la chaîne en minuscules. Les jetons d'agent utilisateur sont insensibles à la casse par convention, et la mise en minuscules garantit des recherches cohérentes et fiables.
Par exemple, la chaîne d'agent utilisateur suivante :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Est normalisé à :
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Cette approche de normalisation facilite le regroupement, la comparaison et la maintenance des agents utilisateurs au fil du temps, tout en restant suffisamment précise pour une classification de haut niveau des clients et des systèmes d'exploitation.
En éliminant les variations liées à la version et à la casse, le processus de recherche devient plus prévisible et résistant aux futurs changements d'agent utilisateur.
Format des données
Chaque entrée normalisée d'agent utilisateur comprend :
- id - La chaîne d'agent utilisateur normalisée
- client_family - Classification de haut niveau du client (par ex. navigateur, bot, application)
- os_family - Classification du système d'exploitation de haut niveau
Les champs exacts peuvent évoluer au fil du temps à mesure que l'ensemble de données se développe.
Comportement de Recherche
L'appariement de l'agent utilisateur est effectué sur des chaînes normalisées.
Les correspondances exactes sont préférées ; les correspondances partielles ou heuristiques sont intentionnellement évitées afin de maintenir un comportement prévisible et débogable.
Contribuer
Les contributions sont les bienvenues et aident à améliorer la qualité et l'exactitude globales de ce projet.
La façon la plus efficace de contribuer est d'ajouter ou de mettre à jour les entrées normalisées des agents utilisateurs dans le fichier user_agents.json, ainsi que les données de classification pertinentes.
Une fois que vos modifications sont prêtes, veuillez soumettre une pull request contenant les données et/ou les mises à jour de code nécessaires.
Même des informations partielles ou incomplètes sont utiles et appréciées — chaque contribution contribue à améliorer la couverture et la fiabilité à long terme.
Premiers Pas (Guide Rapide)
Le cœur de ce projet est l'ensemble des fichiers de données JSON, situés dans le répertoire data/.
Pour faciliter la maintenance et la réutilisation de ces données, le dépôt comprend un petit ensemble de scripts Node.js simples qui effectuent des validations de base et des tâches d’exportation.
Commandes courantes disponibles :
- npm run test - Valide les données JSON et vérifie les erreurs de structure ou de cohérence.
- Construit, trie et exporte les données normalisées vers d'autres formats compatibles avec les langages de programmation (comme Java) pour une intégration plus facile.
Ces outils sont délibérément minimalistes, en se concentrant sur l'exactitude des données et la portabilité plutôt que sur des traitements complexes.
Les Chaînes D'Agent Utilisateur Ne Sont Pas Fiables
Obtenir des informations précises à partir des chaînes d'agent utilisateur est intrinsèquement peu fiable pour plusieurs raisons :
- Il n'existe pas de norme formelle ni de spécification régissant la structure ou le contenu des chaînes d'agent utilisateur.
- De nombreux agents utilisateurs usurpent ou imitent délibérément d'autres agents utilisateurs pour des raisons de compatibilité et de rétrocompatibilité
En raison de cela, il est extrêmement difficile de déterminer les données de l'agent utilisateur de manière entièrement précise et cohérente.
Cette bibliothèque doit donc être considérée comme une solution qui fait de son mieux, et non comme une source de vérité garantie ou faisant autorité.
Avec une utilisation continue et les contributions de la communauté, la précision peut s'améliorer avec le temps.
Versionnage & Stabilité
Le jeu de données peut changer au fil du temps à mesure que les agents utilisateurs évoluent.
Les classifications ne sont pas considérées comme des changements qui cassent la compatibilité, même entre les versions mineures.
Les consommateurs doivent considérer les résultats comme des indications fournies à titre indicatif et non comme des garanties contractuelles.
Licence
Ce projet et ses données sont publiés sous la licence Apache 2.0 (Apache-2.0).
L'utilisation commerciale, la modification et la redistribution sont autorisées.
Les contributions sont les bienvenues et appréciées.
Marque déposée
PageviewsOnline, Two-Dot-Oh, et tous les logos associés, noms de service ou identité de marque, sont des marques déposées de Two-Dot-Oh.
Ce projet est open source ; toutefois, l'utilisation du nom PageviewsOnline ou de toute marque associée dans le cadre d'un produit, d'un service ou d'une offre n'est pas autorisée sans consentement écrit préalable.
Les Forks et les œuvres dérivées doivent utiliser un nom et une identité visuelle différents et ne doivent pas laisser entendre qu'ils bénéficient de l'approbation ou d'une affiliation avec PageviewsOnline ou Two-Dot-Oh.