Scraper le web à grande échelle
(incolumitas.com)<p>- Si l’on créait un service qui exécute des millions de recherches Google, il faudrait une alternative qui ne se fasse pas bloquer<br />
- Le plus simple est d’utiliser des proxys payants, mais c’est assez coûteux <br />
→ D’où ce billet intéressant où l’auteur détaille les approches qu’il a essayées<br />
<br />
- Au départ, il utilisait AWS Lambda + Puppeteer <br />
→ AWS propose 16 régions dans le monde, et après 3 exécutions de Lambda, une nouvelle IP est attribuée <br />
→ En lançant 1 000 Lambdas en parallèle, on utilise environ 250 IP publiques<br />
→ 16 régions * 250 = 4 000 adresses IP, ce qui suffit pour effectuer des recherches Google à l’échelle du million par semaine <br />
→ Il a aussi essayé sur GCP, et c’est assez drôle : Google bloque plus agressivement les IP de son propre cloud (par rapport à AWS)<br />
→ Cela concerne la période 2019~2020, donc cela a pu changer <br />
<br />
- Cette méthode peut servir à scraper Google / Bing / Amazon, mais elle a ses limites<br />
→ Elle ne fonctionne pas si la cible utilise des sociétés anti-bot comme DataDome, Akamai ou Imperva <br />
→ Elles détectent si c’est un bot grâce au browser fingerprinting, avec des méthodes extrêmement variées<br />
→ Google Picasso, fingerprinting Font/TLS/WebGL...<br />
→ En réalité, la plupart des services de scraping à grande échelle utilisent le cloud + des conteneurs Docker, donc ils sont faciles à identifier<br />
<br />
- Une infrastructure de scraping évolutive et difficile à détecter <br />
→ Deux règles pour réussir à scraper efficacement <br />
1. Ne pas falsifier la configuration du navigateur <br />
2. Et surtout, ne falsifier la configuration du navigateur que si « personne ne peut s’en apercevoir »<br />
→ La conclusion est que, pour cela, le mieux est tout simplement d’« utiliser de vrais appareils »<br />
⇨ Acheter 500 appareils Android bon marché auprès de plusieurs fabricants et souscrire à des forfaits data peu chers<br />
⇨ Les répartir dans plusieurs villes (près des antennes)<br />
⇨ Utiliser des outils open source comme DeviceFarmer/stf pour contrôler les appareils en parallèle <br />
⇨ Installer un OS léger comme Android Go et activer le mode avion toutes les 5 minutes afin d’obtenir sans cesse de nouvelles adresses IP<br />
⇨ « 4G carrier grade NAT » : un NAT opérateur 4G conçu pour éviter l’épuisement des adresses IPv4, où des centaines de milliers d’utilisateurs partagent la même IP, ce qui rend le blocage impossible<br />
→ Il y a toutefois beaucoup d’inconvénients : il faut acheter 500 appareils Android, trouver où les installer, assurer la maintenance matérielle, etc. <br />
<br />
- Amélioration : émuler Android <br />
→ Au lieu d’acheter des appareils Android, pourquoi ne pas utiliser Android-X8, Bluestacks ou l’émulateur Android Studio ?<br />
→ Proxidize permet de créer des proxys mobiles 4G<br />
→ Installer 50 dongles 4G sur un seul serveur<br />
→ Émuler 50 à 100 appareils Android sur chaque serveur <br />
→ Installer ces stations dans 5 villes <br />
→ Gérer ces stations avec des commandes shell robustes </p>
12 commentaires