Introduction aux agents utilisateurs pour le web scraping

L’utilisation de l’agent utilisateur approprié lors de vos tâches d’extraction de données est essentielle pour réussir la collecte de vos données cibles et éviter les blocages. Voici le seul guide dont vous avez besoin pour démarrer.
9 min read

Dans ce post, vous découvrirez :

Qu’est-ce qu’un agent utilisateur ?

Ce terme désigne tout logiciel qui facilite l’interaction d’un utilisateur final avec des contenus web. Une chaîne d’agent utilisateur est un texte que le logiciel de l’ordinateur client envoie par le biais d’une requête.

La chaîne de l’agent utilisateur aide le serveur de destination à identifier le navigateur, le type d’appareil et le système d’exploitation utilisés. Par exemple, la chaîne indique au serveur que vous utilisez le navigateur Chrome et Windows 10 sur votre ordinateur. Le serveur peut ensuite utiliser ces informations pour ajuster sa réponse en fonction du type d’appareil, du système d’exploitation et du navigateur considérés.

La plupart des navigateurs envoient un en-tête d’agent utilisateur au format suivant, bien que le choix des agents utilisateurs soit loin d’obéir à des règles strictes :

syntaxe pour choisir un agent utilisateur - Agent utilisateur : Mozilla/5.0 (<system-information.) <platform> (<platform-details>) <extensions> texte blanc sur fond gris
Agent utilisateur : Mozilla/5.0 () ()

Chaque navigateur ajoute ses propres éléments de commentaire – plateforme ou numéro de version, par exemple. Mozilla propose des exemples de chaînes à utiliser pour les robots d’indexation :

Exemple de chaîne de crawler – texte blanc sur fond gris – Mozilla/5.0 (compatible ; Googlebot/2.1 ; +http:://www.google.com/bot.html

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

Pour en savoir plus sur les différentes chaînes que vous pouvez utiliser pour le navigateur Mozilla, vous pouvez consulter le “>site de Mozilla dédié aux développeurs.

Vous trouverez ci-dessous, sur le site de Chrome dédiés aux développeurs, des exemples de formats de chaîne d’agent utilisateur pour différents appareils et navigateurs :

Chrome pour Android

Agent utilisateur pour téléphone :

texte blanc sur fond gris – agent utilisateur pour collecter des données en tant qu’appareil android linux ou autre appareil mobile tel qu’un iphone apple

Mozilla/5.0 (Linux; ; )AppleWebKit/ (KHTML, comme Gecko) Chrome/Mobile Safari/

Agent utilisateur pour tablette :

texte blanc sur fond gris – syntaxe permettant à un agent utilisateur de passer pour une tablette android ou un ipad apple

Mozilla/5.0 (Linux; ; )AppleWebKit/(KHTML, comme Gecko) Chrome/Safari/

Pourquoi utiliser un agent utilisateur ?

Lorsque vous faites du web scraping, vous constatez parfois que le serveur cible bloque certains agents utilisateurs. C’est principalement parce qu’il attribue ces agents à un bot ; et certains sites web n’autorisent pas les robots d’indexation ou les web scrapers. Les sites web plus sophistiqués font l’inverse, c’est-à-dire qu’ils autorisent uniquement les agents utilisateurs qu’ils croient aptes à effectuer des tâches de web crawling. Les plus sophistiqués vérifient que le comportement du navigateur correspond réellement à l’agent utilisateur que vous présentez.

Vous pensez peut-être que la bonne solution serait de ne pas inclure d’agent utilisateur dans vos requêtes. Cependant, cela entraîne l’utilisation d’un agent utilisateur par défaut. Dans de nombreux cas, le serveur de destination le met sur liste noire et le bloque.

Alors comment vous assurer que votre agent utilisateur ne se fait pas interdire ?

Conseils pour éviter l’interdiction de votre agent utilisateur lorsque vous faites du web scraping :

1. Utilisez un agent utilisateur réel

Si votre agent utilisateur n’appartient pas à un navigateur réputé, certains sites web bloquent ses requêtes. De nombreux web scrapers utilisant des bots ignorent l’étape de définition d’un agent utilisateur ; le résultat est qu’ils se font détecter et interdire parce qu’ils recourent à un agent utilisateur incorrect/par défaut.

Vous pouvez éviter ce problème en définissant un agent utilisateur communément utilisé pour votre robot d’indexation. Vous pouvez trouver une liste étendue d’agents utilisateurs populaires ici. Vous pouvez compiler une liste de chaînes couramment utilisées et les utiliser en rotation en effectuant une requête cURL pour un site web donné. Néanmoins, nous vous recommandons d’utiliser l’agent utilisateur de votre navigateur car le comportement de votre navigateur a plus de chances de correspondre à ce qui est attendu de cet agent utilisateur si vous ne le modifiez pas trop.

2. Effectuez une rotation des agents utilisateurs

Si vous faites de nombreuses requêtes pendant vos tâches de web scraping, vous devez les randomiser. Cela réduira la possibilité pour le serveur web d’identifier et de bloquer vos agents utilisateurs.

Comment randomiser les requêtes ?

La solution serait de modifier l’adresse IP de la requête à l’aide de proxys en rotation. De cette façon, vous envoyez un jeu différent d’en-têtes à chaque fois. Du côté du serveur web, il semble que la requête provient de différents ordinateurs et navigateurs.

Conseil de pro :un agent utilisateur est un en-tête, mais les en-têtes comprennent bien plus que des agents utilisateurs. Vous ne pouvez pas vous contenter d’envoyer des en-têtes aléatoires ; vous devez vous assurer que l’agent utilisateur que vous envoyez correspond aux en-têtes que vous envoyez.

Vous pouvez utiliser botcheck.luminatio.io pour vérifier si les en-têtes que vous envoyez correspondent à ce qui est attendu de la part de l’agent utilisateur.

Comment assurer la rotation des agents utilisateurs

Tout d’abord, vous devez collecter une liste de chaînes d’agent utilisateur. Nous vous recommandons d’utiliser des chaînes provenant de navigateurs réels, que vous pouvez trouver ici. L’étape suivante consiste à ajouter ces chaînes à une liste Python. Enfin, vous devez faire en sorte que chaque requête choisisse une chaîne aléatoire dans la liste.

Vous pouvez voir un exemple de rotation d’agents utilisateurs à l’aide de Python 3 et de Selenium 4 dans cette discussion sur le site stackoverflow. L’exemple de code se présente comme suit :

texte blanc sur fond gris avec environnement de programmation – code python pour illustrer la manière d’assurer la rotation des agents utilisateurs

Quel que soit le programme ou la méthode que vous choisissiez d’utiliser pour assurer la rotation de vos en-têtes d’agent utilisateur, vous devez suivre les mêmes techniques pour éviter de vous faire détecter et bloquer :

  • 1. Faites tourner un jeu complet d’en-têtes associés à chaque agent utilisateur
  • 2. Envoyez ces en-têtes dans l’ordre qu’utiliserait un vrai navigateur
  • 3. Utilisez la page précédente que vous avez visitée comme « en-tête de référent »

Conseil de pro : Vous devez vous assurer que l’adresse IP et les cookies ne changent pas lorsque vous utilisez un en-tête de référent. Idéalement, vous visiterez effectivement la page précédente afin qu’il y en ait un enregistrement sur votre serveur cible.

3. Faites tourner vos agents utilisateurs à l’aide d’un proxy

Vous pouvez éviter les tracas liés à la configuration manuelle de listes et à la rotation manuelle d’adresses IP en utilisant un réseau de proxys rotatifs. Les proxys ont la capacité de configurer la rotation automatique des adresses IP et la rotation des chaînes d’agents utilisateurs. Cela signifie que vos requêtes semblent provenir de différents navigateurs. Cela réduit considérablement les blocages et augmente les taux de réussite car vos requêtes semblent provenir d’utilisateurs réels. Gardez à l’esprit que seuls des proxys très spécifiques, qui utilisent la technologie Data Unlocking, ont la capacité de gérer et de faire tourner correctement vos agents utilisateurs.

Liste d’agents utilisateurs pour le web scraping

Il existe toutes sortes d’agents utilisateurs, basés sur navigateur/téléphone/périphérique/bot/moteur de recherche/outils de développement, qui peuvent être employés pour émuler divers navigateurs en utilisant des outils tels que wget et curl. Par exemple :

  • Lynx : Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23
  • Wget : Wget/1.15 (linux-gnu)
  • Curl : curl/7.35.0
  • HTC : Mozilla/5.0 (Linux ; Android 7.0 ; HTC 10 Build/NRD90M) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36
  • Google Nexus : Mozilla/5.0 (Linux ; U ; Android-4.0.3 ; en-us ; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, like Gecko) CrMo/16.0.912.75 Mobile Safari/535.7
  • Samsung Galaxy Note 4 : Mozilla/5.0 (Linux ; Android 6.0.1 ; SAMSUNG SM-N910F Build/MMB29M) AppleWebKit/537.36 (KHTML, comme Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  • Samsung Galaxy Note 3 : Mozilla/5.0 (Linux ; Android 5.0 ; SAMSUNG SM-N900 Build/LRX21V) AppleWebKit/537.36 (KHTML, comme Gecko) SamsungBrowser/2.1 Chrome/34.0.1847.76 Mobile Safari/537.36
  • Samsung Phone : Mozilla/5.0 (Linux ; Android 6.0.1 ; SAMSUNG SM-G570Y Build/MMB29K) AppleWebKit/537.36 (KHTML, comme Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  • Bot du moteur de recherche Bing : Mozilla/5.0 (compatible ; bingbot/2.0 ; +http://www.bing.com/bingbot.htm)
  • Bot du moteur de recherche Google : Mozilla/5.0 (compatible ; Googlebot/2.1 ; +http://www.google.com/bot.html)
  • iPhone Apple : Mozilla/5.0 (iPhone ; CPU iPhone OS 10_3_1 comme Mac OS X) AppleWebKit/603.1.30 (KHTML, comme Gecko) Version/10.0 Mobile/14E304 Safari/602.1
  • iPad Apple : Mozilla/5.0 (iPad ; CPU OS 8_4_1 comme Mac OS X) AppleWebKit/600.1.4 (KHTML, comme Gecko) Version/8.0 Mobile/12H321 Safari/600.1.4
  • Microsoft Internet Explorer 11 / IE 11 : Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3 ; Trident/7.0 ; rv :11.0) comme Gecko
  • Microsoft Internet Explorer 10 / IE 10 : Mozilla/5.0 (compatible ; MSIE 10.0 ; Windows NT 6.2 ; Trident/6.0 ; MDDCJS)
  • Microsoft Internet Explorer 9 / IE 9 : Mozilla/5.0 (compatible ; MSIE 9.0 ; Windows NT 6.0 ; Trident/5.0 ; Trident/5.0)
  • Microsoft Internet Explorer 8 / IE 8 : Mozilla/4.0 (compatible ; MSIE 8.0 ; Windows NT 5.1 ; Trident/4.0 ; .NET CLR 1.1.4322 ; .NET CLR 2.0.50727 ; .NET CLR 3.0.4506.2152 ; .NET CLR 3.5.30729)
  • Microsoft Internet Explorer 7 / IE 7 : Mozilla/5.0 (Windows ; U ; MSIE 7.0 ; Windows NT 6.0 ; en-US)
  • Microsoft Internet Explorer 6 / IE 6 : Mozilla/4.0 (compatible ; MSIE 6.0 ; Windows NT 5.1 ; SV1)
  • Microsoft Edge : Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
  • Mozilla Firefox : Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64 ; rv :53.0) Gecko/20100101 Firefox/53.0
  • Google Chrome : Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/58.0.3029.110 Safari/537.36

Au final

Étant donné que la plupart des sites web bloquent les requêtes dépourvues d’agent utilisateur de navigateur valide ou reconnaissable, il est important d’apprendre à faire tourner correctement vos agents utilisateurs pour éviter de vous faire bloquer par des sites. L’utilisation de l’agent utilisateur approprié indiquera à votre site cible que votre demande provient d’une origine valide, ce qui vous permettra d’y collecter des données librement.

Bright Data a développé une solution de Data Unlocking entièrement automatisée qui permet aux équipes d’économiser du temps et des ressources en utilisant des algorithmes d’apprentissage automatique pour générer des agents utilisateurs de navigateur qui sont spécifiques aux sites ciblés, et contourner les systèmes de détection de bots.