Utiliser Node Unblocker pour le Scraping Web

Dans ce tutoriel, vous expliquerez aux lecteurs ce qu’est node-unblocker, ses avantages dans les projets de scraping web et comment l’utiliser.
11 min de lecture
Node Unblocker for Web Scraping

Lors du scraping web avec Node.js, vous pouvez rencontrer des obstacles tels que la censure d’internet et des proxys lents. Heureusement, il existe une solution appelée node unblocker qui peut vous aider.

Unblocker est un proxy web qui permet aux développeurs de contourner la censure d’internet et d’accéder à du contenu géo-restreint. C’est une solution open source avec des avantages incluant un relais de données rapide, des options de personnalisation faciles, et le support de plusieurs protocoles. Avec unblocker, vous pouvez surmonter les restrictions internet et extraire efficacement des données de sites web qui seraient autrement inaccessibles.

Dans cet article, vous apprendrez tout sur unblocker, y compris ses avantages dans les projets de scraping web. Vous apprendrez également comment l’utiliser pour créer un proxy permettant d’extraire du contenu géo-restreint.

Avantages de l’utilisation de Node Unblocker

Node Unblocker offre un large éventail d’avantages et de fonctionnalités qui en font un outil précieux pour les utilisateurs souhaitant accéder librement au contenu web. En plus d’être une solution open source, ses autres avantages incluent les éléments suivants :

  • agit comme intermédiaire
  • Relaie les données rapidement et efficacement : Unblocker excelle dans la transmission de données au client sans mise en mémoire tampon. Il est ainsi l’une des solutions de Proxy les plus rapides disponibles.
  • Est facile à utiliser : Unblocker fournit une interface conviviale adaptée aux utilisateurs de tous niveaux. Si vous souhaitez intégrer la solution dans votre projet, unblocker propose une API accessible et facile à implémenter.
  • Peut être hautement personnalisable : Avec unblocker, les développeurs ont la flexibilité de personnaliser le Proxy selon leurs besoins de scraping spécifiques. Par exemple, vous pouvez configurer des paramètres comme les en-têtes de requêtes et la gestion des réponses, offrant un processus de scraping personnalisé et efficace.
  • Prend en charge plusieurs protocoles : Unblocker supporte divers protocoles tels que HTTP, HTTPS et WebSockets. Cette polyvalence permet une intégration transparente avec différents scénarios de scraping, offrant aux développeurs la flexibilité nécessaire pour interagir avec une large gamme de sources de données.

Comment démarrer avec Unblocker

Maintenant que vous connaissez tous les avantages qu’offre unblocker, il est temps de commencer à l’utiliser. Avant de commencer, vous devez vous assurer que Node.js et npm sont installés sur votre système. Vous avez également besoin d’un navigateur web pour tester le projet et d’un compte Render gratuit pour héberger la solution.

Une fois ces prérequis complétés, il est temps de créer le proxy web. Pour ce faire, créez un dossier nommé node-unblocker-proxy, ouvrez-le dans votre terminal, et exécutez la commande suivante pour initialiser un nouveau projet Node.js :

npm init -y

Exécutez ensuite la commande suivante pour installer les dépendances dont vous avez besoin :

npm install express unblocker

express est le framework d’application web que vous utilisez pour configurer un serveur web. node-unblocker est le package npm qui vous aide à créer le proxy web.

Écrire le script pour créer le Proxy

Une fois toutes vos dépendances configurées, il est temps d’implémenter le script du proxy web.

Créez un fichier index.js dans le dossier racine du projet et collez-y le code suivant :

// import required dependencies
const express = require("express");
const Unblocker = require("unblocker");

// create an express app instance
const app = express();
// create a new Unblocker instance
const unblocker = new Unblocker({ prefix: "/proxy/" });

// set the port
const port = 3000;

// add the unblocker middleware to the Express application
app.use(unblocker);

// listen on specified port
app.listen(port).on("upgrade", unblocker.onUpgrade);
console.log(`proxy running on http://localhost:${port}/proxy/`);

Dans ce code, vous importez les dépendances requises et créez une instance de l’application Express. De plus, vous créez une nouvelle instance Unblocker, qui permet un large éventail d’options de configuration. Ici, vous définissez uniquement l’option prefix, spécifiant le chemin par lequel les URLs proxifiées doivent commencer.

Comme unblocker exporte une API compatible Express, l’intégrer dans une application Express est simple. Il vous suffit d’appeler la méthode use() de l’instance de l’application Express et de passer l’instance Unblocker. Ensuite, vous démarrez l’application Express avec la méthode listen(). .on("upgrade", unblocker.onUpgrade) garantit que les connexions WebSocket sont correctement gérées par unblocker.

Tester le Proxy localement

Pour tester l’implémentation du proxy localement, exécutez la commande suivante dans votre terminal :

node index.js

Vous pouvez également utiliser la commande DEBUG=unblocker:* node index.js si vous souhaitez voir des informations détaillées sur chaque requête effectuée via le proxy.

Ensuite, prenez n’importe quelle URL et préfixez-la avec localhost/proxy/ (ex. localhost/proxy/https://brightdata.com/), et ouvrez-la dans votre navigateur web.

Vous devriez voir la page d’accueil de Bright Data. Inspectez rapidement l’onglet Réseau de votre navigateur, et vous verrez que toutes les requêtes passent par le proxy (vous pouvez le voir en consultant la colonne Domaine dans l’onglet Réseau) :

Commandes de test du proxy local et vérification dans le navigateur

Déployer le Proxy sur Render

Maintenant que vous avez testé le proxy, il est temps de le déployer. Avant cela, ouvrez le fichier package.json dans le dossier racine du projet et modifiez la paire clé-valeur scripts avec ce qui suit :

"scripts": {
   "start": "node index"
}

Cela fournit une commande pour démarrer le serveur web Express une fois hébergé sur Render.

Pour déployer le proxy web, téléchargez le code du proxy dans un dépôt GitHub. Puis connectez-vous à votre compte Render :

Configuration et déploiement du proxy sur Render.

Cliquez sur le bouton New + et sélectionnez Web Service :

Connectez votre dépôt de proxy web en sélectionnant le bouton Connect. Vous devrez peut-être configurer votre compte pour que Render puisse accéder au dépôt. Cela n’est nécessaire que si vous n’avez pas configuré Render pour accéder au dépôt GitHub spécifique :

Remplissez les détails requis pour votre service web et sélectionnez Create Web Service en bas de la page :

Vous pouvez laisser la commande de démarrage telle quelle si vous préférez utiliser Yarn, ou la changer en npm run start si vous souhaitez utiliser npm.

Une fois le proxy web déployé avec succès, il est temps de le tester. Prenez n’importe quelle URL et préfixez-la avec l’URL déployée <DEPLOYED-APP-URL>/proxy/ (ex. https://node-web-proxy-gvn6.onrender.com/proxy/https://brightdata.com/). Ouvrez-la ensuite dans votre navigateur web.

Inspectez l’onglet réseau de votre navigateur, et vous devriez voir que toutes les requêtes passent par le proxy déployé :

Utiliser le Proxy pour effectuer des requêtes de scraping

Une fois que vous avez vérifié que toutes les requêtes passent par le proxy déployé, il est temps d’effectuer une requête de scraping. Dans ce tutoriel, vous utiliserez la bibliothèque Puppeteer, mais toute autre bibliothèque de test, comme Cheerio ou Nightmare, fonctionne également.

Si Puppeteer n’est pas encore installé, faites-le maintenant en exécutant npm i puppeteer. Créez ensuite un fichier scrape.js dans le dossier racine du projet et ajoutez le code suivant :

// import puppeteer
const puppeteer = require("puppeteer");

const scrapeData = async () => {
   // launch the browser
   const browser = await puppeteer.launch({
    headless: false,
   });

   // open a new page and navigate to the defined URL
   const page = await browser.newPage();
   await page.goto("<DEPLOYED-APP-URL>/proxy/https://brightdata.com/blog");

   // get the content of the webpage
   const data = await page.evaluate(() => {
    // variable to hold all the posts data
    let blogData = [];

    // extract all elements with the specified class
    const posts = document.querySelectorAll(".post_item");

    // loop through the posts object, extract required data and push it to the blogData array
    for (const post of posts) {
        const title = post.querySelector("h5").textContent;
        const link = post.href;
        const author = post
            .querySelector(".author_box")
            .querySelector(".author_box__details")
            .querySelector("div").textContent;

        const article = { title, link, author };

        blogData.push(article);
    }

    return blogData;
   });

   // log the data to the console
   console.log(data);

   // close the browser instance
   await browser.close();
};

// call the scrapeData function
scrapeData();

N’oubliez pas de remplacer <DEPLOYED-APP-URL> par l’URL de l’application que vous avez déployée sur Render.

Ce snippet de code configure Puppeteer et extrait les données des articles de blog depuis le blog Bright Data. Toutes les cartes d’articles sur le site Bright Data ont un nom de classe .post_item. Il récupère tous les articles, parcourt l’objet posts, extrait le titre, le lien et l’auteur de chaque article, pousse ces données dans le tableau blogData et enregistre finalement toutes ces informations dans la console.

Comment choisir le meilleur Proxy pour votre Node Unblocker ?

Lors de l’intégration d’un proxy avec Node Unblocker, il est essentiel d’adapter votre choix aux exigences de votre projet et aux défis spécifiques que vous anticipez. Voici plusieurs aspects clés à considérer lors de la sélection d’un proxy :

  1. Performance et fiabilité : Optez pour un proxy reconnu pour ses vitesses de connexion rapides et sa haute disponibilité afin d’assurer un accès aux données fluide et une efficacité de scraping web optimale.
  2. Flexibilité géographique : Choisissez un proxy offrant une large gamme de localisations géographiques. Cette fonctionnalité est essentielle pour contourner les restrictions régionales et accéder au contenu localisé.
  3. Rotation d’IP : Pour réduire le risque d’être bloqué par des sites web, sélectionnez un service de proxy qui fournit des adresses IP rotatives. Cette fonctionnalité aide à maintenir l’accès en présentant de nouvelles IPs à chaque requête.
  4. Protocoles de sécurité : Assurez-vous que le service de proxy inclut des mesures de sécurité robustes comme le chiffrement SSL pour protéger l’intégrité et la confidentialité de vos données, notamment si vous traitez des informations sensibles.
  5. Évolutivité : Déterminez si le service de proxy peut évoluer pour répondre à des demandes croissantes à mesure que vos besoins de scraping augmentent. La flexibilité dans la mise à l’échelle des ressources est cruciale pour prendre en charge des tâches de scraping plus importantes ou complexes.
  6. Support et documentation : Un support complet et une documentation détaillée peuvent grandement faciliter le processus d’intégration, notamment lors de la configuration de configurations complexes avec Node Unblocker.

En évaluant soigneusement ces facteurs, vous pouvez sélectionner un service de proxy qui correspond non seulement à vos besoins actuels, mais qui s’adapte également à la croissance future et aux évolutions de vos activités de scraping.

Conclusion

Node Unblocker fournit une solution robuste pour le scraping web dans Node.js, offrant aux développeurs la capacité de contourner la censure internet et d’accéder à du contenu géo-restreint. Son interface conviviale, ses nombreuses options de personnalisation et son support de plusieurs protocoles en font un outil précieux pour extraire efficacement des données de sites web. Dans ce guide, vous avez tout appris sur unblocker, ses avantages dans les projets de scraping web et comment l’utiliser.

Dans le monde actuel axé sur les données, le scraping web est devenu un outil indispensable pour recueillir des informations et des insights précieux. Cependant, le scraping web présente son lot de défis, tels que le blocage d’IP, la limitation de débit et les restrictions géographiques, qui peuvent entraver les efforts de collecte de données.

Bright Data propose une infrastructure complète qui répond à ces défis. Avec un vaste réseau d’IPs résidentielles, ISP, datacenter et mobiles, Bright Data permet aux utilisateurs de router leurs requêtes de scraping via une gamme diversifiée d’adresses IP du monde entier. Cela garantit non seulement l’anonymat, mais offre également la possibilité d’accéder à du contenu géo-restreint et de surmonter les obstacles pouvant entraver la collecte de données.

Vous ne savez pas quel Proxy Bright Data vous convient ? Inscrivez-vous maintenant et parlez à l’un de nos experts en données pour trouver la meilleure solution adaptée à vos besoins.