DataDome

BaaS : l’arme secrète du scraping à grande échelle

Table des matières

Incroyable mais vrai : il n’est plus nécessaire d’être un expert du scraping pour scraper un site web.

Autrefois, quiconque voulait scraper un site devait savoir coder des bots, falsifier des empreintes et faire tourner des proxys de manière cohérente. Mais aujourd’hui, les fournisseurs de bot as a service (BaaS) permettent aux utilisateurs de lancer des bots à grande échelle sans aucune compétence en développement de bots ni en ingénierie inverse.

Un BaaS est simplement une API REST sur laquelle un utilisateur fournit l’URL qu’il souhaite scraper. Le modèle économique est simple : les utilisateurs ne paient que lorsque leur requête aboutit. Ainsi, tant que la requête est bloquée, l’utilisateur ne paie rien. Plus besoin de se soucier de la bande passante des proxys, qui peut coûter cher lorsqu’on utilise des proxys résidentiels.

Les fournisseurs de BaaS peuvent également gagner de l’argent en augmentant la concurrence/le parallélisme (c’est-à-dire que plus un utilisateur souhaite effectuer de requêtes en parallèle, plus il doit payer). Les services BaaS tels que ScraperAPI ont gagné en popularité auprès des pirates en raison de leur commodité et de leur rentabilité.

Comment ça fonctionne ?

Un utilisateur peut envoyer n’importe quelle URL à scraper à l’API du BaaS, avec des instructions complémentaires. Par exemple : utiliser des proxys résidentiels (plus coûteux que les proxys de data centers), ou exécuter du JavaScript (nécessite de lancer un navigateur réel/headless).

Les utilisateurs peuvent aussi spécifier l’emplacement des proxys, pour que les adresses IP soient localisées dans le même pays que le site ou l’application cible. Ainsi, pour appeler mywebsite.com/product/a, ils peuvent envoyer une requête API comme :

https://baas-service.com/?url=https://mywebsite.com/product/a&js=true&residential_proxy=true&location=usa

La requête ci-dessus permettrait de scraper mywebsite.com/product/a avec un navigateur réel/headless utilisant des proxys résidentiels situés aux États-Unis.

En retour, le BaaS commencera à envoyer une ou plusieurs requêtes vers mywebsite.com/product/a. Si mywebsite.com n’est pas protégé, le BaaS récupérera automatiquement le contenu de la page et le renverra à l’utilisateur. Sinon, si le site est protégé, la requête pourra être bloquée.

Si la requête est bloquée, le BaaS tentera plusieurs requêtes en parallèle pour contourner la protection. Par exemple, il pourra :

  • changer le user-agent,
  • usurper de nouveaux en-têtes HTTP,
  • changer d’adresse IP via de nouveaux proxys,
  • falsifier un CAPTCHA.

Si à un moment donné, le BaaS parvient à récupérer le contenu sans être bloqué, il le renvoie à l’utilisateur. L’utilisateur ne paie qu’un seul appel API, même si le BaaS a dû faire des dizaines de requêtes pour y parvenir.

En revanche, si la protection de mywebsite.com bloque totalement la tentative, le BaaS renvoie un message d’erreur et l’utilisateur ne paie rien.

BaaS Schema

Le BaaS en situation réelle

Comme il devient plus facile et plus rentable de créer des bots avancés sans être un expert, il n’est pas surprenant que DataDome observe une hausse du trafic BaaS.

Le graphique ci-dessous montre une attaque menée par des bots fonctionnant via un BaaS.

BaaS Attack Graph

L’attaque a duré environ 19 heures et a généré près de 15,5 millions de requêtes depuis plus de 500 000 proxys résidentiels. En moyenne, cela représentait ~150 000 requêtes toutes les 10 minutes sur les serveurs du client.

Comme le montre la carte ci-dessous, l’attaque était largement distribuée sur des adresses IP issues de plusieurs pays :

La carte montre également que la majorité des requêtes venaient d’Europe, car la cible était un site leader européen. Le BaaS ou l’attaquant a donc automatiquement sélectionné des IP localisées dans des pays réalistes pour éviter un blocage immédiat.

Toutes les requêtes visaient des pages produits ou de recherche produit, avec des user-agents variés :

  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4885.3889 Safari/537.36
  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.6615.2377 Safari/537.36
  • Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:93.0) Gecko/20100101 Firefox/93.0
  • Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76

En plus de changer de user-agent, un BaaS tentera aussi d’utiliser des en-têtes HTTP cohérents avec le user-agent choisi. Par exemple, si un navigateur Safari obsolète est utilisé, le BaaS évitera un en-tête propre à une version récente de Chrome.

Nous avons également constaté que le BaaS choisissait automatiquement un en-tête HTTP Accept-Language cohérent (en lien avec la géolocalisation du proxy ou la langue du site cible).

Pour contrer les scrapers massivement distribués, il est essentiel de bloquer dès la première requête.

Lorsque nous avons affiché un CAPTCHA ou une page de blocage, nous avons pu collecter des signaux supplémentaires via JavaScript. Leur analyse a révélé que les bots utilisaient Puppeteer extra stealth (https://github.com/berstend/puppeteer-extra), une librairie open source qui permet d’utiliser une version modifiée de Puppeteer avec une empreinte numérique difficile à détecter.

Cette librairie comprend aussi un plugin pour falsifier automatiquement des CAPTCHA via des fermes de CAPTCHA. Rien d’étonnant à ce qu’elle soit massivement utilisée par les BaaS et les développeurs de bots.

Conclusion

Désormais, les attaquants peuvent accéder facilement à des services de BaaS pour scraper sans effort, ce qui rend les attaques plus fréquentes et plus intenses. Pour empêcher le vol de données sur votre site, les attaques distribuées doivent être bloquées dès la toute première requête.

Une protection efficace contre les bots bloque dès la première tentative et vous permet d’analyser vos menaces en détail pour mieux protéger votre entreprise et vos clients. Pour visualiser votre trafic de bots sur un tableau de bord détaillé, essayez gratuitement DataDome.