J'ai un module Java
qui reçoit le User-Agent
String à partir d'un navigateur d'utilisateur final doit se comporter légèrement différemment en fonction du type de navigateur, de la version du navigateur et peut-être même du système d'exploitation. Par exemple.: {"FireFox", "7.0", "Win7"}
, {"Safari", "3.2", "iOS9"}
J'ai compris que le User-Agent
String peut varier dans son format pour la même configuration grâce à différentes installations de plug-in, etc.
Mes questions:
User-Agent
bien défini? Si oui - Où puis-je le trouver exactement? (De ma compréhension de la RFC, il n'y a pas beaucoup de normalisation ici).No
- Y a-t-il une bonne façon de l'analyser pour obtenir les informations dont j'ai besoin?User-Agent
chaîne de caractères?Note importante - Je parle d'une application Web, de sorte que mes capacités de collecte de données sont limitées à javascript
.
Pour Java, jetez un coup d'œil à ser-Agent-Utils . C'est assez compact (<50kb) et n'a aucune dépendance.
Remarque Bien que la dernière version soit assez récente (1.21, publiée 2018-01-24), la page de la bibliothèque indique:
AVERTISSEMENT: Ce projet est en fin de vie et ne sera plus mis à jour régulièrement.
Et sur la GitHUB Page Il dit:
AVERTISSEMENT EOL
Cette bibliothèque a atteint la fin de la vie et ne verra plus de mises à jour régulières.
La version 1.21 était la dernière version officielle en 2018.
Regardez le Java Library j'ai écrit à cet effet: YAUAA
J'ai fait un servlet très simple où vous pouvez l'essayer de voir si cela donne les réponses que vous recherchez: https://try.yauaa.basjes.nl/
C'est Apache 2 licencié et publié dans Maven afin qu'il l'utilise dans un Java application est vraiment facile. Il est actuellement utilisé dans la production sur l'un des sites Web les plus actifs des Pays-Bas (où je travaille).
Voir ce blog à ce sujet https://techlab.bol.com/making-sense-user-Agent-String/
- La structure de l'agent utilisateur est-elle bien définie? Si oui - Où puis-je le trouver exactement? (De ma compréhension de la RFC, il n'y a pas beaucoup de normalisation ici).
Non, la structure d'une chaîne d'agent utilisateur n'est pas normalisée mais est très similaire entre différents agents. Bien qu'ils soient très similaires, il est toujours nécessaire d'utiliser plusieurs modèles de détection.
- En supposant que la question du n ° 1 est non - y a-t-il une bonne façon de l'analyser pour obtenir les informations dont j'ai besoin?
Vous pouvez essayer la bibliothèque adetector . Il s'agit d'une enveloppe pour la base de données utilisateur-Agent de tilisateur-agent-string.info .
- Y a-t-il un meilleur moyen d'obtenir les informations dont j'ai besoin autres que la chaîne d'agent utilisateur?
Je ne dirais pas que c'est un moyen meilleur ou pire, mais une autre façon de détecter les agents d'utilisateur est l'utilisation du client de JavaScript pour collecter des informations sur l'agent utilisateur et la soumettre via des entrées HTML masquées ou XMLHTTPQUEST sur votre backend. Tout dépend de ce que vous voulez identifier. Pour une détection précise des webcrawlers, JavaScript ne sera pas capable d'aider.
La bibliothèque tilisateur-Agent-Utils a atteint la fin de la vie.
Il est prometteur multilingue libétaire appelé A-Parser qui est activement entretenu.
Pour une bibliothèque optimiste avec une réputation décente sur GitHub, on peut utiliser:
https://github.com/blueconic/browscap-java
Comme il est basé sur Browscap Son facile à mettre à niveau vers de nouveaux navigateurs à l'avenir.