Admin/Dev

18
Mars
2018

L'intérêt d'une détection fiable des agents utilisateurs

Publié par sky

Comme je vous en parlais il y a quelques mois, Apple s'amusait à utiliser un Agent Utilisateur peu orthodoxe pour le chargement de la prévisualisation d'un site internet via iMessage.

Si l'on arrive à le détecter maintenant que l'on le connait, nous ne sommes pas à l'abri d'un changement de la part des développeurs, et nous ne sommes pas forcément au courant de tous les autres subterfuges de la sorte, qu'elles viennent d'Apple ou d'autres.

 

Qu'est ce qu'un agent utilisateur et à quoi ça sert

Un agent utilisateur, ou user agent en anglais, est une simple chaine de texte transmise par le navigateur au serveur lors de la requête d'une page. Il est d'ordinaire utilisé pour décrire le logiciel exécuté, qu'il s'agisse d'un navigateur internet, d'un robot, ou autre ...

Basiquement, ils servent à savoir qui visite le site. Cela permet pour le site internet de distinguer les vrais internautes des robots ou encore des fausses visites.

Voici quelques exemples d'agents utilisateur. Par exemple pour Safari sur Mac OS 10.12 (Sierra)

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.7

ou encore pour Firefox, toujours sur Mac, mais en version 10.13 (High Sierra)

Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0

et Edge, le successeur bienvenue à Internet Explorer

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393

Voici un autre exemple, venant d'un mobile Samsung S8 utilisant Chrome

Mozilla/5.0 (Linux; Android 7.0; SM-G950F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36

Comme vous pouvez le voir, Chrome indique aussi qu'il est Safari, cela vient du fait que Chrome est basé sur le WebKit d'Apple (aussi visible dans l'agent), et il faudra faire la distinction entre les deux.

Impossible de continuer sans regarder les agents utilisateurs de robots parmi les plus connus, tel que le GoogleBot

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) 

ou encore le robot de Bing

Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

 

Quel intérêt d'une fiabilité optimale de leur détection ?

Il y a de nombreux intérêts à avoir une détection des agents utilisateurs qui soit fiable.

Principalement, cela permet d'avoir des statistiques très proches de la vérité sur les visites effectuées sur le site, ainsi que pour les pages vues. Et pour cela, il faut savoir faire la distinction entre internautes, robots et fausses visites.

Les robots sont nombreux, très nombreux, si vous n'êtes pas le métier, vous pourriez être surpris. En effet, chacun peut créer son propre robot, réalisant des tâches automatiquement sur Internet. De plus, lorsque l'on pense robot, on pense directement aux robots des moteurs de recherche, mais en plus des "crawlers", il existe de nombreux autres types de robots.

Par exemple, lorsque vous demandez à Google si votre site est optimisé pour les mobiles, à partir de son outil Pagespeed Insights, celui ci doit effectuer plusieurs requêtes à votre site, et ne se camoufle presque pas, voici son User Agent :

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Mobile Safari/537.36

comme vous pouvez le voir, au premier abord, on peut croire à un Nexus 5X, mais un peu plus loin, on remarque la signature caractéristique de l'outil.

Lorsque vous passez votre site dans l'outil, vous savez que ces visites n'en seront pas des vraies, mais lorsqu'il s'agit de quelqu'un d'autre qui teste votre site, il est préférable que votre site sache faire la différence.

Il est possible de détecter des agents utilisateurs malicieux, qui sont en fait des robots qui lisent votre site internet, soit à la recherche de failles de sécurité, soit de formulaires en libre accès pour y injecter leurs pubs. Heureusement, il facile de détecter une partie de ces mauvais robots, grâce à un agent utilisateur, pas toujours très bien choisi. Quelques exemples :

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_32_85) AppleWebKit/532.91.44 (KHTML, like Gecko) Chrome/57.4.0331.5603 Safari/534.52 Edge/34.67820 

Mac OS 10.32.85 est une version totalement fantaisiste du système, et de plus, n'a jamais fait tourner Edge, le navigateur de Microsoft.

Mozilla/7.0 (compatible; MSIE3.00; Windows 2005)
Mozilla/8.0 (compatible; MSIE7.00; Windows 2008)
Mozilla/2.0 (compatible; MSIE7.00; Windows 2007)

En voila un totalement farfelu, qui se pense plus malin que tout le monde en mettant des valeurs de Mozilla, de MSIE et de Windows au hasard.

L'agent utilisateur permet aussi au site de savoir s'il s'agit d'un mobile, d'une tablette ou d'un ordinateur. Si la plupart des sites récents sont dits adaptatifs, ce n'est pas toujours le cas des anciens. Dans ce cas, il est souvent plus facile de créer une version mobile en parallèle, avec des layouts adaptés, et pour que le site sache quel layout afficher, cela passe par la détection du format via l'agent utilisateur.

Concernant les mobiles, les agents utilisateurs sont généralement très complets, et il est souvent possible de savoir quel est le modèle utilisé par le visiteur.

Plus basiquement, cela permet aussi au site de savoir quel navigateur utilise l'internaute pour éventuellement adapter le code selon ce dernier. Il n'est pas rare de voir, sur les sites internet, du code spécifiquement écrit pour Internet Explorer. A une certaine époque, il régnait en maitre sur Internet, en dictant ses propres standards, alors que face à lui Firefox, puis Safari et enfin Chrome ont toujours misé sur un respect des standards pour une compabilité simplifiée pour les web-développeurs. Si avec Edge Microsoft se rattrape enfin, il est parfois toujours nécessaire d'écrire du code spécifique pour les vieilles versions d'Internet Explorer.

 

Comment les récupérer et les tester ?

Il est possible de récupérer cette valeur du côté serveur, puisque transmise par le navigateur lors des requêtes, par exemple en PHP :

print_r ($_SERVER['HTTP_USER_AGENT']);

mais aussi du côté client, avec du script Javascript :

console.log(navigator.userAgent);

Vous pouvez voir ou modifier l'agent utilisateur de votre navigateur. Sur Safari, cela se fait via le menu développement, disponible en option, sur FireFox, il existe de nombreux modules qui permettent de faire cela.

Sélectionner l'agent utilisateur dans Apple Safari

Vous pouvez changer votre user agent, mais votre expérience sur les sites peut changer si ceux-ci adapte scripts, styles et contenus selon votre navigateur, automatiquement détecté via le user agent.

Changer l'agent utilisateur dans Apple Safari

Il existe de nombreux outils en ligne pour vérifier quel est notre agent utilisateur ou pour en tester d'autres.

En voici un dernier, faisant la requête à de nombreux moteurs pour obtenir plusieurs avis. Sachant que tous les outils ne se valent pas, et ne sont pas tous corrects sur tous les types d'agent, obtenir plusieurs avis à la fois permet de trouver la petite subtilité d'un agent utilisateur un peu original.

 

Pourquoi ai-je autant d'intérêt pour les agents utilisateurs ?

CaMykS, le CMS sur lequel je travaille, dispose d'une librairie permettant la détection du client, comme elle y référence de nombreux robots, navigateurs, modèles d'appareil, il s'agit de la librairie la plus grande, et de loin, du CMS. Il s'agit aussi de la librairie que nous mettons le plus souvent à jour, jusqu'à 3 fois par semaine pour la conserver la plus à jour possible, voir plus précise que les outils cités ci-dessus. Le CMS dispose d'un module, disponible en standard, permettant de référencer tous les agents utilisateurs qui passeraient sur le site, dont nous nous servons pour tracker les nouveaux appareils ou robots qui apparaissent chaque jour sur Internet.

 
 
Commentaires
Aucun commentaire pour le moment.

 

Poster un commentaire
En postant sur skymac.org, je m'engage à être courtois et à ce que mon message soit pertinent avec le sujet de l'article.
En outre, j'accepte, sans condition, que mon message soit refusé et supprimé si ces règles ne sont pas appliquées.
Les cookies assurent le bon fonctionnement de nos services. En continuant, vous acceptez leur utilisation sur notre site internet.
Accepter