Quelle est la meilleure méthode pour analyser une chaîne User-Agent en Python afin de détecter de manière fiable
- Navigateur
- Version du navigateur
- OS
Ou peut-être toute bibliothèque d'aide qui le fait
Quelle est la meilleure méthode pour analyser une chaîne User-Agent en Python afin de détecter de manière fiable
Ou peut-être toute bibliothèque d'aide qui le fait
J'ai finalement décidé d'écrire le mien, et je suis heureux du résultat. N'hésitez pas à utiliser/modifier/m'envoyer des patchs, etc.
C'est ici : http://pypi.python.org/pypi/httpagentparser
Exemple d'utilisation :
>>> import httpagentparser
>>> s = "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.9 (KHTML, like Gecko) \
Chrome/5.0.307.11 Safari/532.9"
>>> print(httpagentparser.simple_detect(s))
('Linux', 'Chrome 5.0.307.11')
>>> print(httpagentparser.detect(s))
{'os': {'name': 'Linux'},
'browser': {'version': '5.0.307.11', 'name': 'Chrome'}}
>>> s = "Mozilla/5.0 (Linux; U; Android 2.3.5; en-in; HTC_DesireS_S510e Build/GRJ90) \
AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
>>> print(httpagentparser.simple_detect(s))
('Android Linux 2.3.5', 'Safari 4.0')
>>> print(httpagentparser.detect(s))
{'dist': {'version': '2.3.5', 'name': 'Android'},
'os': {'name': 'Linux'},
'browser': {'version': '4.0', 'name': 'Safari'}}
Cela ne semble pas fonctionner particulièrement bien pour les téléphones mobiles. En particulier, le blackberry n'est pas détecté. (mais vous avez mon +1 pour l'avoir écrit !)
@Jason Sundram Si vous aidez en fournissant les chaînes d'agents et les résultats attendus, blackberry, d'autres peuvent être supportés. Vérifiez github.com/shon/httpagentparser/issues
UASparser pour Python par Hicro Kee. Mise à jour automatique du fichier de données et du cache à partir d'un serveur distant avec vérification de la version.
Werkzeug intègre l'analyse des agents utilisateurs.
Nouveau lien (juin 2018) http://werkzeug.pocoo.org/docs/0.14/utils/#module-werkzeug.useragents
Intéressant. J'ai rapidement vérifié le code. C'est vraiment simple, un code agréable, essentiellement une série de regex pour correspondre à une chaîne d'agents. Ce qui est intéressant, c'est de voir comment cela fonctionne. Un avantage de Werkzeug est qu'il détecte aussi la langue, tandis que l'avantage de httpagentparaser est qu'il détecte aussi la version du système d'exploitation.
Le lien actuel est tool.pocoo.org/docs/0.14/utils/#module-tool.useragents ; SO rejette ce changement car il est trop petit.
Les autres réponses à cette question sont plutôt anciennes maintenant. Je pense que la nouvelle norme en matière d'analyse de l'agent utilisateur du navigateur est la méthode de Browserscope analyseur d'agent utilisateur .
Également disponible de manière pratique avec le les mêmes modèles de correspondance sur de nombreuses autres langues . Un jour, vous voudrez peut-être aussi analyser certaines chaînes UA en JavaScript et vous n'aurez pas à vous soucier d'une analyse incohérente.
Après avoir comparé ces suggestions avec le corpus complet des agents utilisateurs de Firefox J'ai trouvé que l'analyse du numéro de version pour la comparaison est assez pauvre.
Si c'est ce dont vous avez besoin, je vous suggère de jeter un coup d'oeil à UAparser qui faisait autrefois partie de la browserscope projet. Documentation ici.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Plus précisément, dépendre des systèmes d'exploitation et des versions des navigateurs pour la détection des capacités n'est pas une bonne stratégie. Quel problème essayez-vous de résoudre ?
1 votes
Nous avons un simple formulaire de rapport de ticket pour notre application web. Et nous demandons fréquemment aux utilisateurs quel est le serveur/OS, etc. Nous pourrions donc simplement le détecter à l'avance et demander à l'utilisateur de confirmer. Si ce n'est pas si simple, nous nous contenterons d'effacer l'agent utilisateur, mais nous devrons toujours poser des questions, car l'utilisateur peut utiliser un autre navigateur pour soumettre le ticket.
0 votes
Vous pouvez laisser Python rendre le formulaire et utiliser Javascript pour modifier les valeurs des champs de saisie en fonction du système d'exploitation actuel et de tout ce que vous souhaitez.