Guide : comment utiliser des proxys avec Node-Fetch

Découvrez comment définir un proxy dans Node-Fetch dans ce guide étape par étape.
11 min read
Proxy in node fetch

Node.js est un environnement d’exécution JavaScript populaire qui vous permet de créer des applications côté serveur et côté réseau. Par exemple, si vous avez besoin de récupérer des données à partir d’une API distante ou d’un site web distant dans Node.js, vous pouvez utiliser un serveur proxy web qui servira d’intermédiaire entre votre application et Internet. Cela vous permet de contourner les restrictions du réseau, d’accéder à des contenus géo-restreints et de masquer votre adresse IP.

La plupart des applications JavaScript modernes utilisent l’API Fetch pour effectuer des requêtes HTTP. Cette API est disponible dans les navigateurs web en tant que fonctionnalité intégrée, et depuis Node.js v16, elle ne requiert aucune dépendance externe. Malgré tout, il y a un hic : la fonctionnalité Fetch intégrée de Node.js ne peut faire que ce qui est disponible dans les navigateurs web et ne peut pas travailler avec des proxys.

Heureusement, il existe une solution simple : la bibliothèque node-fetch. Cette bibliothèque inclut une API Fetch pour Node.js, qui fournit des fonctionnalités supplémentaires spécifiques à Node.js, y compris la possibilité de travailler avec des agents HTTP Node.js. Un agent HTTP est un outil qui gère le pooling de connexions, de manière à vous permettre de réutiliser des connexions pour vos requêtes HTTP. Cela signifie que vous pouvez utiliser un agent HTTP pour configurer vos requêtes Fetch au fur et à mesure qu’elles passent par le proxy.

Dans cet article, vous apprendrez à utiliser node-fetch avec la bibliothèque https-proxy-agent pour créer un agent HTTP capable de prendre en charge les proxys HTTP et HTTPS. Vous découvrirez également le service de proxys de Bright Data, qui propose divers types de proxys et de fonctionnalités pour vos besoins de web scraping.

Comment utiliser un proxy avec Node-Fetch

Avant de commencer ce tutoriel, vous aurez besoin des éléments suivants :

  • Une installation fonctionnelle de Node.js.
  • Un accès à un proxy web. Alternativement, à des fins de test, vous pouvez configurer votre propre proxy web en utilisant Node.js.

Une fois que tous ces éléments sont en place, vous êtes prêt à commencer.

Créer un projet Node.js

La première chose à faire est de créer un projet Node.js et de l’initialiser avec npm. Pour ce faire, ouvrez un terminal et exécutez les commandes suivantes :

mkdir node-fetch-proxy
cd node-fetch-proxy
npm init -y

Cette commande crée un dossier appelé node-fetch-proxy, s’y rend et crée un fichier package.json avec certaines valeurs par défaut.

Installer node-fetch et https-proxy-agent

Ensuite, vous devez installer les bibliothèques node-fetch et https-proxy-agent comme dépendances pour votre projet ; utilisez la commande suivante :

npm install –-save node-fetch https-proxy-agent

Cette commande installe les bibliothèques dans le dossier node_modules de votre projet et met à jour votre fichier package.json en conséquence.

Utiliser HttpsProxyAgent et node-fetch pour effectuer des appels HTTP via un proxy

Après avoir installé les bibliothèques node-fetch et https-proxy-agent, vous devez utiliser la classe HttpsProxyAgent de la bibliothèque https-proxy-agent ainsi que la fonction fetch de la bibliothèque node-fetch pour effectuer des appels HTTP via un proxy. Pour ce faire, créez un fichier appelé proxy.mjs dans le dossier de votre projet, puis ajoutez le code suivant :

import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';

// Replace <proxy_url> with your actual proxy URL
const agent = new HttpsProxyAgent('<proxy_url>');

// Use fetch with the agent option to make an HTTP request through the proxy
// Replace <target_url> with the URL you want to request
fetch('<target_url>', { agent })
  .then((response) => response.text())
  .then((text) => console.log(text))
  .catch((error) => console.error(error));

Ce code effectue les tâches suivantes :

  • Il importe la fonction fetch de la bibliothèque node-fetch, ce qui fournit une API Fetch compatible avec les navigateurs pour Node.js.
  • Il importe la classe HttpsProxyAgent de la bibliothèque https-proxy-agent, ce qui crée un agent HTTP capable de prendre en charge les proxys HTTPS.
  • Il crée une instance HttpsProxyAgent avec l’URL de votre proxy. Vous devez remplacer <proxy_url> par l’URL réelle de votre proxy, qui doit avoir le format suivant : http://username:password@host:port.
  • Il utilise la fonction fetch avec l’option agent pour effectuer une requête HTTP via le proxy. Vous devez remplacer <target_url> par l’URL vers laquelle vous souhaitez lancer votre requête ; n’importe quelle URL HTTP ou HTTPS valide peut convenir.
  • Il gère la réponse et retourne toutes les erreurs qui se produisent.

Enregistrez le code et exécutez la commande suivante :

node proxy.mjs

Cette commande exécute votre code et effectue une requête HTTP via le proxy. Vous devriez voir le texte de réponse ou les erreurs éventuelles sur votre terminal.

Limitations de l’utilisation d’un proxy avec Node-Fetch

Même si cette approche fonctionne bien lors de l’utilisation d’un proxy isolé, vous constaterez que de nombreux cas d’utilisation réels, comme le web scraping, nécessitent une approche plus sophistiquée. De nombreux sites web et API web bloquent les adresses IP de certains proxys bien connus, ce qui complique la collecte des données dont vous avez besoin.

En outre, les sites peuvent être soumis à des restrictions géographiques, de sorte que certains contenus peuvent être cachés aux visiteurs selon leur emplacement. Par exemple, certains journaux américains bloquent les visiteurs européens de leurs sites web pour cause de problèmes de conformité aux réglementations RGPD et ePrivacy.

Heureusement, les proxys plus sophistiqués, comme ceux offerts par le service de proxys Bright Data, fournissent différents types de proxys qui aident les utilisateurs à contourner ces limitations.

Le service de proxys Bright Data

Si vous recherchez un service de proxys fiable pour faire du web scraping sur de gros volumes de données, ne cherchez pas plus loin. Bright Data est l’un des principaux fournisseurs de solutions de proxys et propose un accès à plus de 72 millions d’adresses IP réparties dans 195 pays, avec une disponibilité de 99,9 %.

Avec les serveurs proxy Bright Data, vous pouvez choisir différents types de proxys – résidentiels, de datacenter, de fournisseur d’accès Internet (FAI), de mobile ou super proxys, en fonction de votre cas d’utilisation et de votre budget. Cette gamme de choix peut s’avérer utile si vous devez créer un web scraper pour extraire le contenu de sites qui bloquent des adresses IP de proxys connues.

Plutôt que d’utiliser un proxy générique exécuté dans un emplacement que vous ne pouvez pas contrôler, les proxys Bright Data vous permettent de choisir le type de proxy qui correspond le mieux au type d’utilisateur qui accède généralement aux contenus que vous essayez de scraper. Vous pouvez également accéder à des fonctionnalités avancées, telles que le géo-ciblage, la rotation des adresses IP et le contrôle de session, de manière à ce que votre application ne se fasse pas bloquer.

Les types de proxys de Bright Data

Bright Data propose différents types de proxys pour le web scraping, adaptés à différents cas d’utilisation. Voici quelques-uns des proxys proposés :

  • Le proxy résidentiel achemine vos requêtes Internet via des appareils d’utilisateurs réels, comme des PC ou des ordinateurs portables, qui sont reliés au web via un FAI résidentiel. Ces proxys excellent dans les activités de web scraping parce qu’ils sont indistinguables des utilisateurs ordinaires, ce qui réduit le risque que vos requêtes proxys se fassent bloquer.
  • Les serveurs proxys agissent comme une passerelle et vous donnent accès au vaste réseau de proxys résidentiels de Bright Data. Avec une URL de super proxy unique, vous pouvez vous connecter à n’importe quel proxy résidentiel sans avoir besoin de désigner une adresse IP particulière. De plus, le super proxy vous donne la flexibilité de préciser différents paramètres, notamment la sélection du pays, de la ville, du FAI ou de l’ASN du proxy résidentiel que vous souhaitez utiliser.
  • Le proxy de centre de données utilise une adresse IP attribuée à un serveur situé dans une installation de centre de données. Les proxys de centres de données peuvent se faire détecter puis bloquer par des sites web et des API, mais ils sont malgré tout utiles pour les applications devant accéder à des données provenant d’URL qui n’essaient pas de bloquer les requêtes de proxys. Ils sont les plus appropriés pour les projets de web scraping dans lesquels votre trafic n’a pas besoin de provenir d’adresses IP résidentielles, professionnelles ou mobiles.
  • Le proxy de FAI est une adresse IP attribuée à un serveur hébergé par un FAI. Les proxys de FAI sont similaires aux proxys résidentiels, à la différence que leurs adresses IP peuvent être des adresses IP résidentielles ou professionnelles. Cela en fait un très bon choix lorsque vous devez scraper des sites qui s’attendent à un mélange de trafic résidentiel et professionnel.
  • Les proxys mobiles sont des adresses IP liées à des appareils mobiles (typiquement, smartphones ou tablettes) qui se connectent à Internet via des réseaux cellulaires. Les proxys mobiles de Bright Data sont pratiquement indétectables et simulent efficacement les activités d’utilisateurs mobiles réels. Ils s’avèrent particulièrement utiles lorsque vous devez faire en sorte de collecter des contenus issus de sites web et d’API spécifiquement destinés aux mobiles, sans vous faire bloquer en essayant d’accéder à ces données à partir d’une adresse IP non mobile.

Proxy Manager et API

Avec autant de choix, la gestion de votre utilisation de proxys peut s’avérer complexe. Heureusement, le Proxy Manager de Bright Data vous permet de configurer et de gérer facilement vos proxys, de surveiller votre utilisation et vos performances, et de résoudre les problèmes éventuels.

De plus, vous pouvez utiliser les API et les intégrations Bright Data pour intégrer des proxys dans votre code de manière transparente. L’API Scraping Browser facilite l’utilisation des proxys à partir d’outils bien connus (notamment Playwright et Puppeteer), et Web Unlocker vous aide à surmonter les blocages qui empêchent bien souvent les web scrapers d’accéder à leur site cible.

Conclusion

Dans cet article, vous avez appris à utiliser la bibliothèque node-fetch avec la bibliothèque https-proxy-agent pour créer un agent HTTP capable de prendre en charge les proxys HTTPS. Vous avez également découvert le service de proxys de Bright Data, qui propose divers types de proxys et de fonctionnalités pour vos besoins de web scraping.

L’utilisation d’un proxy web avec des requêtes Fetch dans Node.js peut vous aider à surmonter les restrictions du réseau, à accéder à des contenus géo-restreints ou à masquer votre adresse IP. Cependant, un simple proxy utilisant node-fetch et https-proxy-agent peut ne pas être suffisant pour certaines tâches de web scraping, en particulier si vous avez des besoins particuliers en matière d’anonymat, de géo-ciblage, de rotation d’adresses IP ou d’autres fonctionnalités avancées. Dans ces cas, vous avez plutôt intérêt à envisager d’utiliser un proxy Bright Data.

Les services de proxys de Bright Data offrent un large éventail de fonctionnalités qui peuvent vous aider à accéder à n’importe quel site web ou API sans vous faire bloquer ou ralentir. Vous pouvez également choisir différents types de proxys en fonction de votre cas d’utilisation et de votre budget. Pour commencer à utiliser le service de proxys Bright Data, inscrivez-vous dès aujourd’hui pour un essai gratuit.