# Web scraping

Le web scraping, parfois appelé harvesting ou en français moissonnage, est une technique de « récupération et organisation automatisées des données Web » ; c'est la principale forme de data mining et d'extraction des données de sites web, via un script ou un programme. Il vise à capter des données, pour les transformer et/ou les réutiliser dans un autre contexte comme l'enrichissement de bases de données, le référencement ou l'exploration de données, ou l'apprentissage profond pour une intelligence artificielle. L'objectif est souvent commercial, mais parfois scientifique ou politique.
Profitant des progrès logiciels et de la science des données, dans le cadre de l'économie numérique ou au sein de l'économie de la surveillance, l'exploitation commerciale et politique du big data le moissonnage du Web s'est exponentiellement généralisé, illégalement parfois, ou en bénéficiant de flous ou vides juridiques.
Les enjeux sont notamment commerciaux et politiques, mais aussi éthiques, juridiques et philosophiques, car le scraping met en péril la protection des données et la sécurité des individus et de certains groupes. Ces enjeux deviennent critiques avec l'émergence des intelligences artificielles (génératives et multimodales notamment) qui permettent d'utiliser à mauvais escient des données volées et/ou apparemment banales et sans intérêt massivement scrapées sur l'Internet pour des activités criminelles ou pour la propagande, y compris électorale, comme l'ont montré le scandale Facebook-Cambridge Analytica/AggregateIQ et la diffusion croissante de fake news ciblées. Parmi les enjeux émergents figurent l'utilisation de l'intelligence artificielle qui à la fois facilite le moissonnage et permet d'en tirer beaucoup plus d'informations, y compris des informations sensibles et sur la vie privée. « Aujourd’hui, les chercheurs s'appuient de plus en plus sur l'intelligence artificielle (par exemple, l'apprentissage automatique, l'analyse de sentiments et/ou l'apprentissage profond) pour extraire le sens et l’interférence des données Web »).

## Le Web scraping comme source de préoccupation

Les outils récents de « moissonnage des données » (originelles ou dupliquées) permettent d'extraire et collecter, puis traiter (classer, vérifier, nettoyer, agréger et structurer) la donnée, généralement à partir « Big Web Data » dont le volume croît exponentiellement (multiplié par plus de trente en 10 ans, passant de 2 zettaoctets en 2010 à 64 zettaoctets en 2023. Cette donnée est le plus souvent directement captée dans le code source de pages web (actuelles ou archivées) et dans les plateformes du Web (réseaux sociaux notamment). Selon Statista, en 2020, environ 64 000 milliards de gigaoctets de données ont été générées, dont seul un petit pourcentage sera conservé car la capacité de stockage mondiale n'était "que" de 6,7 zettaoctets en 2020 (environ 6,7 milliards de gigaoctets). le volume de la donnée du Web devrait cependant dépasser 180 zettaoctets vers 2025, à cause du développement des objets connectés et de la 5G.
Avec une efficacité et une rapidité croissante (liée aux progrès de l'informatique), ces outils permettent, à grande échelle, d'extraire, structurer, analyser et évaluer, puis stocker et manipuler, et éventuellement commercialiser, ces données et des données dérivées (secondaires). Les bases de données ainsi produites peuvent inclure un grand nombre de renseignements personnels et des données sur toutes sortes d'entités socioéconomiques, culturelles, médiatiques, militaires, etc. Elles permettent de réaliser des profils psychologiques, sociaux et économiques très poussés de centaines de milliards de personnes, ainsi que des profils d'entreprises, d'ONG, etc.
Ces données, anonymisées, ont d'abord été utilisées pour diverses études scientifiques (en épidémiologie et en sociologie et anthropologie par exemple), mais dans un monde de plus en plus axé sur l'économie de l'information, ces données sont maintenant devenues une « ressource stratégique comparable en valeur à la terre, à l'or et au pétrole »$^,$, très recherchées par des officines ou entreprises spécialisées qui vendent ces données agrégées aux banques, aux assureurs, à certains groupes politiques, des États autoritaires et dictatures (qui les utilisent pour cibler et contrôler des citoyens et diverses entités).
Alors que les algorithmes sophistiqués et l'intelligence artificielle peuvent aisément désanonymiser un grand nombre de données personnelles (données de santé y compris), le moissonnage massif et permanent des données du Web, par les gouvernements et par un nombre croissant de plateformes Web privées et d'officines dont le commerce de la donnée fonde le modèle économique soulève de graves préoccupations éthiques et politiques en matière de protection de la vie privée et de données sensibles.
Parmi les dérives souvent citées figurent l'espionnage massif des citoyens (y compris les leurs), et des concurrents économiques par les États-Unis, la Russie et la Chine, notamment. Les systèmes américains d'espionnage généralisé (mis au jour par divers lanceurs d'alerte dont Julian Assange, Chelsea Manning, Edward Snowden), les fermes de Trolls russes ou l'approche chinoise du système de crédit social (SCS), « le premier système de notation sociale mis en œuvre numériquement à l'échelle nationale, vise à améliorer la fiabilité au sein de la société chinoise et constitue un exemple essentiel de la transformation numérique de la société Il est en outre conçu pour améliorer le comportement moral, la fiabilité financière et le contrôle social ».
Le scraping du web menace les quatre droits et « états de base de la vie privée » énoncés par Westin en 1962 (droit à la solitude, à l'intimité, à l'anonymat dans la foule et à la réserve) qui sont menacés dans un nombre croissant de situations, de même que la protection du contenu des courriers électroniques qui fait partie du droit à la vie privée.

## Légalité

Le scrapping doit respecter la propriété commerciale et/ou intellectuelle et, dans l'Union européenne, le RGPD. Sans autorisation préalable, il n'est autorisé que pour des données nativement légalement publiques, ou tombées dans le domaine public, ou pour des données stockées sur des sites ou plateformes sous une licence libre le permettant (certaines licences ouvertes (Creative Commons Attribution par exemple) stipulent que le droit de réutilisation et/ou de transformation de la donnée ne vaut que pour les usages non commerciaux et/ou que les nouvelles donnés soient également publiées sous une licence ouverte similaire, en mentionnant l'auteur initial, la source, la licence, etc.). Il doit tenir compte des usages selon les paramètres binaires suivant :
* usage commercial / non commercial (NC dans le système de la Licence Creative Commons) ;
* produit modifiable / non modifiable (ND) ;
* créations dérivées dont la licence est laissée au choix du créateur final / créations dérivées à partager selon la licence originale de la donnée (SA). Quand la donnée est une œuvre, la plupart des licences ouvertes impliquent l'obligation d'attribuer l'œuvre à son créateur (attribution - BY).
Dans les métadonnées d'un site internet, des fichiers robots.txt peuvent indiquer aux bots de scrapping les zones autorisées ou interdites au scraping.
Tout viol de ces règles peut entraîner des poursuites judiciaires et des amendes pour violation de droits d'auteur ou de la protection des données, et conséquemment une perte de réputation et d'e-réputation pour les entreprises ou personnes responsables d'un scrapping illégal.

### Aux États-Unis

Aux États-Unis, la société hiQ Labs utilise le web scraping sur les données de LinkedIn à des fins de recrutement. À la suite d'un procès, la Cour d'appel des États-Unis pour le neuvième circuit donne raison à hiQ en septembre 2019 : la cour considère notamment que les utilisateurs conservent la propriété de leurs profils, et que les données étant librement diffusées sur Internet, elles peuvent être collectées. L'affaire est ensuite portée devant la Cour suprême.
En novembre 2022, la cour du district nord de Californie juge en faveur du réseau social LinkedIn sur décision du juge Edward Chen, invoquant le fait que hiQ pratique la rétro-ingénierie afin de contourner sciemment et de manière répétée les protections contre les robots en simulant des utilisateurs humains.

### En Europe

Dans un jugement de 2013, la Cour de justice de l'Union européenne condamne le métamoteur de recherche Innoweb, qui réutilise les données de l'entreprise de vente d'automobiles Wegener sans modification de celles-ci.

#### En France

Le 30 avril 2020, la Commission nationale de l'informatique et des libertés (CNIL) publie de nouvelles directives sur le web scraping. Les lignes directrices de la CNIL précisent que les données accessibles au public sont toujours des données personnelles et qu'elles ne peuvent pas être réutilisées à l'insu de la personne à laquelle ces données appartiennent.
En décembre 2021, une start-up de la Station F est condamnée pour piratage informatique. À l'aide d'une technique de web scraping, elle récolte des données de l'annuaire d'une école de commerce parisienne, afin de solliciter les anciens élèves de l'établissement en vue d'alimenter un financement participatif. La condamnation porte sur la méthode d'accès à la donnée, c'est-à-dire une usurpation d'identité permettant un « accès frauduleux à un système de traitement automatisé de données », et non le web scraping lui-même.

## Technologies

De nombreuses technologies permettent d'extraire du contenu de sites web via le web scraping. Certaines nécessitent des connaissances en développement de logiciels (les frameworks et bibliothèques, ou les API par exemple) tandis que d'autres sont accessibles au grand public et peuvent être utilisés à travers une interface graphique (c'est le cas des extensions de navigateur ou des logiciels en tant que service).

### Frameworks et bibliothèques

Il existe de multiples frameworks et bibliothèques logicielles, disponibles pour plusieurs langages de programmation, pour écrire des applications de web scraping.
Certains reposent sur l'émulation d'une instance d'un navigateur web afin de réaliser des actions sur des pages web (telles que cliquer sur un lien ou remplir un champ de formulaire) utiles pour réaliser des tests automatisés, ou dans le cadre du web scraping, pour extraire des données. On dit alors que le web scraping est réalisé côté client, ce qui a pour avantage de pouvoir extraire du contenu dynamique généré par le code JavaScript présent sur la page. La bibliothèque Node.js Puppeteer, par exemple, émule une instance du navigateur Chromium et permet de réaliser des actions automatisées en mode headless ou non.
D'autres frameworks et bibliothèques reposent sur l'analyse du code HTML de la page obtenu en réalisant une requête HTTP. Ce code HTML n'étant dans ce cas pas interprété par un moteur JavaScript, il n'est pas interprété. Cela est un inconvénient dans le cadre du web scraping à l'ère du web moderne où le contenu des pages web est souvent généré dynamiquement par du code JavaScript. N'ayant pas besoin d'interpréter le JavaScript, ni de télécharger toutes les ressources de la page (les feuilles de style, images etc.) cette méthode est en revanche généralement bien plus économe en ressources (mémoire vive, bande passante, etc.) et donc plus rapide. C'est le fonctionnement, par exemple, de la bibliothèque Goutte (PHP).
Les bibliothèques et frameworks les plus populaires pour le web scraping sont :
| Nom | Langage | Site web | Open source | Toujours maintenu |
| Beautiful Soup | Python | Lien | Oui | Oui |
| Puppeteer | JavaScript (Node.js) | Lien | Oui | Oui |
| Goutte | PHP (Symfony) | Lien | Oui | Oui |
| Scrapy | Python | Lien | Oui | Oui |
| Selenium | Multiples | Lien | Oui | Oui |
| woob | Python | Lien | Oui | Oui |
| PhantomJS | JavaScript | Lien | Oui | Non |

### Interfaces de programmation (API)

L'utilisation d'interfaces de programmation est une bonne alternative aux bibliothèques et frameworks pour les développeurs souhaitant accélérer le développement de leurs applications de web scraping. Ces interface de programmation (API) fonctionnent généralement de la façon suivante : l'utilisateur réalise une requête HTTP vers un point de terminaison présent sur un serveur distant contrôlé par le prestataire du service. Cette requête porte dans sa charge utile l'adresse (URL) de la page web de laquelle il faut extraire les données et parfois d'autres paramètres tels qu'un sélecteur CSS ou XPath permettant d'identifier un ou plusieurs éléments HTML précis desquels extraire le contenu. Le serveur répond alors par le contenu demandé.
De nombreuses sociétés proposent des API de web scraping, généralement payantes, dont voici une liste non exhaustive des options les plus populaires :
* ScraperAPI
* ScrapingBee
* Scrapfly
* ScrapingFish
* Apify
* Bright Data
* Scraping bot
* Diffbot
* Wrapapi

### Autres logiciels

De très nombreux logiciels permettent d'automatiser le web scraping, certains nécessitant quelques connaissances en développement informatique et d'autres non. On peut les classer en :
* logiciels SaaS, Software as a Service (Logiciel en tant que Service), installés sur un serveur distant, accessibles depuis un navigateur internet et entièrement hébergés par un prestataire. Ils ne nécessitent aucune installation, sont généralement payants et reposent pour la plupart sur un modèle économique basé sur l'usage ou sur un abonnement mensuel ou annuel.
* logiciels exécutables, dont les parts de marché s'effondrent ces dernières années en faveur des applications web en raison de leurs inconvénients par rapport à ces dernières (prérequis de configuration système, obligation de télécharger le logiciel et toutes les mises à jour postérieures etc.)
* extensions de navigateur, téléchargeables depuis les annuaires d'extensions et ont la particularité d'être exécutées à l'intérieur de l'instance du navigateur. Elles proposent généralement moins de fonctionnalités que les autres catégories de logiciel mais sont également majoritairement moins coûteuses et plus faciles d'utilisation.
Parmi les plus utilisés figurent :
* Lobstr.io
* StablerTech
* Scrapebox
* Zennoposter
* Captaindata
* Phantombuster
* Webscraper.io
* Octoparse

## Parades

Peu après l'expansion des réseaux sociaux de l'Internet dans le monde, l'extraction de données à partir de leurs sites est devenu un moyen courant d'obtenir des ensembles de données par exemple utilisées pour former des intelligences artificielles, ou pour profiler les personnes, parfois massivement, comme on l'a vu dans le cas du scandale Scandale Facebook-Cambridge Analytica/AggregateIQ.
Parmi les parades possibles contre le scraping figurent :
* l'utilisation de marquages cachés dans la donnée (filigrane numérique) qui doivent être robustes, c'est-à-dire impossibles ou très difficiles à séparer de l'image, du son, de la vidéo ou du texte qui a été ainsi « tatoué »$^,$ ; Des filigranes ont récemment aussi été utilisés pour protéger des modèles d'intelligence artificielle ou d'apprentissage profond$^,$$^,$ ;
* l'« empoisonnement des données », qui les rendent inutilisables (« inapprenables » par les IA). Cet « empoisonnement » numérique se fait en intégrant dans les données d'imperceptibles perturbations. Certains de ces mécanismes d'empoisonnement sont « génériques, peuvent être appliquées à différents ensembles de données et peuvent empoisonner différentes architectures ».
Le scrapeur de données peut de son côté à son tour utiliser des parades (l'une des plus courantes étant par exemple l'entraînement contradictoire et les fortes augmentations de données) qui vont toutefois lui demander de consommer plus de ressource en temps et en ressources informatiques.