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.
Josh Vanderwillik
Josh Vanderwillik | Product Manager
03-Dec-2020

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 :

syntax for choosing a user agent - User-Agent: Mozilla/5.0 (<system-information.) <platform> (<platform-details>) <extensions> white text on grey background

User-Agent: 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 :

Crawler string example - white text on grey background - 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 :

white text on grey background - user agent to collect data as a android linux device or some other mobile device such as an apple iphone

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

Agent utilisateur pour tablette :

White text on grey background - syntax for user-agent to appear as either android tablet or apple ipad

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

Mettez votre web scraping sur pilote automatique dès maintenant !

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 la 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 ?

Une solution serait de modifier l’adresse IP de la requête à l’aide de proxys rotatifs. 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 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 :

white text on grey background coding environment, python code on how to rotate user agents

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.

Accédez à la technologie Data Unlocking

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. Il s’agit notamment de :

  • 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, like 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, like 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, like 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, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
  • Bing’s Search Engine Bot: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
  • Google’s Search Engine Bot: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Apple iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
  • Apple iPad: Mozilla/5.0 (iPad; CPU OS 8_4_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like 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) like 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, like 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, like 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.

Josh Vanderwillik
Josh Vanderwillik | Product Manager

Josh is a product manager at Bright Data working on next-gen technology,
specifically in the field of automated data collection: building fingerprint-proof, high
scale web crawlers that are simple to use. He is an active participant in global
webinars which help companies learn cutting edge data collection techniques, and
is now expanding that knowledge base through blogging.

Vous pourriez aussi être intéressé par

Data delivering

Pourquoi recourir à des proxys pour utiliser des services de streaming ?

Les services de streaming sont aujourd’hui plus populaires que jamais, notamment dans le domaine du gaming et de la vidéo.
Python web scraping guide

Le web scraping avec Python : guide pour débutants

Apprenez à faire du web scraping avec Python afin de recueillir rapidement des données sur plusieurs sites web, ce qui vous permet d’économiser du temps et des efforts.

Le scraping de données en temps réel

La technologie du web scraping, c’est-à-dire de la collecte automatisée de gros volumes de données publiques sur Internet, n’est plus à présenter. Diverses sociétés proposent des services de web scraping et un nombre croissant d’entreprises y recourent désormais. Cependant, le web scraping peut être utilisé de différentes manières : ainsi, certains utilisateurs peuvent se contenter de […]

Les 9 plus grands mythes au sujet du web scraping

Le web scraping a mauvaise réputation parce qu’il peut être utilisé à des fins malveillantes. Mais le web scraping peut également être utilisé à bon escient ! Dans ce post, nous allons dissiper quelques mythes répandus sur le web scraping afin que vous puissiez comprendre comment cette technologie peut être utilisée à bon escient
Youtube Scraper

L’importance du web scraping pour le commerce en ligne

Nous assistons aujourd’hui à un changement de paradigme technologique accompagné d’innovations qui conduisent les entreprises à repenser leurs pratiques. Internet a pris le pas sur l’environnement
Web scraping with PHP

Le web scraping avec PHP : un guide pas-à-pas

Apprenez à créer et à programmer facilement votre propre web scraper en PHP, à partir de zéro.

Guide pour le Scraping avec Java

Vous ne savez pas quels outils télécharger pour vous aider à créer un environnement Java idéal pour la collecte de données ? Vous ne voyez pas clairement comment extraire/analyser des points de données au format HTML, puis les convertir au format CSV ? Ce post vous aidera à mettre les choses au point.
What is alternative data

Que sont les données alternatives et comment les utiliser ?

Les sociétés d’investissement surveillent les médias sociaux, les moteurs de recherche ainsi que les données de demande des consommateurs, et reçoivent des alertes en temps réel lorsque les entreprises de leur portefeuille sont mentionnées. Voici comment.