web-dev-qa-db-fra.com

Y a-t-il une bonne méthode pour analyser la chaîne d'agent utilisateur?

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:

  1. Est la structure du 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).
  2. En supposant que la question du n ° 1 est No - Y a-t-il une bonne façon de l'analyser pour obtenir les informations dont j'ai besoin?
  3. Y a-t-il un meilleur moyen d'obtenir les informations dont j'ai besoin autres que le 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.

28
RonK

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.

17
Ted Hopp

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/

17
Niels Basjes
  1. 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.

  1. 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 .

  1. 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.

12
before

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.

3
tworec

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.

0
Fritz Duchardt