Dans cette vidéo, vous apprendrez à :
- Faire en sorte que votre crawler soit perçu comme un ‘utilisateur réel’ et ne soit pas bloqué
- Sélectionner les bons outils pour l'automatisation du navigateur
- Selenium vs. Puppeteer, avantages et inconvénients
- Configurer Selenium et Puppeteer pour travailler avec un proxy
- Manipulation de proxy pour un crawler automatisé
- Configurer votre gestionnaire de proxy avec Selenium et Puppeteer
Comment les sites savent-ils que vous utilisez un "bot" ou un "crawler" ?
Principalement à cause des cookies, de l'agent utilisateur du navigateur et de votre IP.
Lorsque vous récupérez ou publiez des informations sur un site web, le site visité enregistre des cookies dans votre navigateur.
Le site reconnaît un vrai navigateur en vérifiant l'adresse IP et en lisant les en-têtes de requête qui incluent des informations sur l'agent utilisateur.
Un manque de cookies ou un agent utilisateur incorrect peut amener le site à vous bloquer pour récupérer des informations.
Les deux peuvent être programmés pour s'assurer que cela ne se produise pas.
Votre IP, cependant, est la seule chose qui ne peut pas être codée car elle fait partie de l'infrastructure réseau.
Nous allons sur ‘whoer.net’ et vérifier quelles informations mon ordinateur envoie sur le web.
Notre navigateur prend en charge JavaScript et à partir de cela, le site cible est capable de collecter le navigateur, le système d'exploitation, les couleurs d'écran, la résolution d'écran, la version de Flash et le support Java.
WebRTC est utilisé pour la communication en temps réel d'un navigateur à un autre et récupère mon IP, mon port et mon protocole pour les comparer aux données réseau.
De plus, l'heure de votre ordinateur peut être collectée et comparée au fuseau horaire de l'IP.
Nous pouvons également trouver l'*en-tête de requête* envoyé au site cible dans la console du navigateur en sélectionnant F12 et en allant dans l'onglet Réseau dans Chrome, ou en sélectionnant ctrl+R.
En cliquant sur le document, nous trouverons les informations d'en-tête et la requête que nous avons envoyée à whoer.net.
L'en-tête de requête contient les cookies et l'agent utilisateur qui est le type et la version du navigateur.
Les sites cibles qui comparent les informations de mon PC et vérifient les sessions avec des cookies exigent que lorsque nous envoyons des requêtes via une API, nous fournissions un nouveau cookie toutes les quelques requêtes.
Cela ainsi que le même agent utilisateur exact et parfois même l'accept-language.
C'est parce qu'un agent utilisateur défectueux ou l'absence d'agent utilisateur peut à lui seul déclencher une réponse d'erreur de la part du site cible.
Nous pouvons gérer des opérations de scraping complexes en utilisant des outils d'automatisation tels que Selenium ou Puppeteer, qui ouvrent réellement un vrai navigateur, ou même utiliser un navigateur sans tête open source comme Chromium.
Les navigateurs sont un outil que nous pouvons utiliser si nous avons besoin d'exécuter du JS ou si nous ne voulons pas écrire nous-mêmes des chaînes de requêtes complexes.
L'inconvénient est que faire fonctionner un navigateur est plus lent et consomme plus de RAM que d'utiliser un script personnalisé.
L'automatisation sur un vrai navigateur rendra le scraping plus simple car cela signifie que nous n'avons pas besoin de nous soucier de collecter une base de données de cookies à faire tourner ou de corriger les agents utilisateurs.
Cela augmentera mon taux de réussite avec les sites cibles qui vérifient cela.
Vous vous demandez peut-être, pourquoi un navigateur sans tête ?
Principalement pour exécuter le scraping automatiquement.
Un navigateur sans tête n'a pas Flash Player et de gestion des droits numériques qui peuvent envoyer plus d'informations sur mon PC et nous pouvons facilement augmenter mon taux de réussite en ne les ayant pas du tout.
Avec quel outil d'automatisation devrions-nous travailler ?
Eh bien, cela dépend de vos compétences techniques et du site web que vous ciblez.
Par exemple, nous allons comparer Puppeteer, un outil d'automatisation facile à utiliser, à Selenium qui nécessite plus d'expertise technique.
Puppeteer, développé par Google, est facile à installer avec une ligne de commande : npm install puppeteer. Il ne prend en charge que le navigateur sans tête Chromium et est basé sur Node.
Très rapidement, nous sommes capables de commencer à travailler avec Puppeteer et de tester une démo rapide.
D'un autre côté, Puppeteer ne prend pas en charge l'automatisation inter-navigateurs et Selenium est l'outil le plus flexible en termes d'automatisation et de fonctionnalités disponibles.
Selenium prend en charge de nombreux navigateurs, systèmes d'exploitation et langages de programmation tels que Java, C#, Ruby, Python et JavaScript.
Selenium fonctionnera sur la plupart des sites cibles et peut être automatisé pour n'importe quel scénario raisonnable.
D'un autre côté, l'installation et l'utilisation de Selenium nécessitent certaines compétences techniques en termes de compréhension des technologies web et des API.
Avec Selenium WebDriver, vous pouvez télécharger ou télécharger des fichiers, travailler avec des pop-ups et surmonter les barrières de dialogue.
Pour résumer, à la fois Puppeteer et Selenium prennent en charge les applications web de bureau, les pages réactives et JavaScript.
Cependant, Puppeteer ne fonctionne qu'avec Chrome et Chromium, tandis que Selenium prend en charge tous les navigateurs courants tels que Chrome, Firefox, Explorer et d'autres navigateurs sans tête.
Nous tenons à mentionner que Puppeteer et Selenium NE prennent PAS en charge les applications mobiles natives par défaut.
Cependant, Appium développé par la fondation JS ou Selendroid développé par la fondation logicielle eBay vous permettront d'automatiser des applications mobiles natives.
Les deux, Selendroid et Appium, nécessitent Selenium et la connaissance de la façon de travailler avec l'API Selenium et WebDriver.