Node.js est un environnement d’exécution JavaScript populaire qui vous permet de créer des applications côté serveur et réseau. Par exemple, si vous devez récupérer des données depuis une API ou un site distant dans Node.js, vous pouvez utiliser un serveur proxy web qui agit comme intermédiaire entre votre application et internet. Cela vous permet de contourner les restrictions réseau, d’accéder à du contenu géo-restreint et de masquer votre adresse IP.
La plupart des applications JavaScript modernes utilisent l’ API Fetch pour effectuer des requêtes HTTP. Elle est disponible dans les navigateurs web en tant que fonctionnalité native, et depuis Node.js v16, elle est disponible sans aucune dépendance externe. Cependant, il y a un hic : la fonctionnalité fetch intégrée à Node.js reflète celle disponible dans les navigateurs web et ne peut pas fonctionner avec des proxies.
Heureusement, il existe une solution simple : la bibliothèque node-fetch. Cette bibliothèque inclut une API Fetch pour Node.js qui ajoute des fonctionnalités supplémentaires spécifiques à Node.js, notamment la capacité de fonctionner avec des agents HTTP Node.js. Un agent HTTP est un outil qui gère le pooling de connexions, vous permettant de réutiliser des connexions pour les requêtes HTTP. Cela signifie que vous pouvez utiliser un agent HTTP pour configurer vos requêtes fetch afin 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 prenant en charge les proxies HTTP et HTTPS. Vous découvrirez également le service proxy Bright Data proxy service, qui propose une variété de types de proxies et de fonctionnalités pour vos besoins de scraping web.
Comment utiliser un proxy avec node-fetch
Avant de commencer ce tutoriel, vous avez besoin des prérequis 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 avec Node.js.
Une fois ces prérequis réunis, 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 nommé node-fetch-proxy, y accède, 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 en tant que dépendances de votre projet avec 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 nommé proxy.mjs dans le dossier de votre projet et ajoutez le code suivant :
import fetch from 'node-fetch';
import { HttpsProxyAgent } from 'https-proxy-agent';
// Remplacez <proxy_url> par l'URL réelle de votre proxy
const agent = new HttpsProxyAgent('<proxy_url>');
// Utilisez fetch avec l'option agent pour effectuer une requête HTTP via le proxy
// Remplacez <target_url> par l'URL que vous souhaitez demander
fetch('<target_url>', { agent })
.then((response) => response.text())
.then((text) => console.log(text))
.catch((error) => console.error(error));
Ce code effectue les actions suivantes :
- Il importe la fonction
fetchde la bibliothèquenode-fetch, qui fournit une API Fetch compatible navigateur pour Node.js. - Il importe la classe
HttpsProxyAgentde la bibliothèquehttps-proxy-agent, qui crée un agent HTTP prenant en charge les proxies HTTPS. - Il crée une instance
HttpsProxyAgentavec 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
fetchavec l’option agent pour effectuer une requête HTTP via le proxy. Vous devez remplacer<target_url>par l’URL que vous souhaitez demander, qui peut être toute URL HTTP ou HTTPS valide. - Il gère la réponse et affiche toutes les erreurs qui surviennent.
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 la réponse ou les erreurs éventuelles dans votre terminal.
Limites de l’utilisation d’un proxy avec node-fetch
Bien que cette approche fonctionne bien pour un proxy simple, vous constaterez que de nombreux cas d’usage réels, comme le scraping web, nécessitent une approche plus sophistiquée. De nombreux sites web et API web bloquent les adresses IP des proxies connus, rendant difficile la collecte des données dont vous avez besoin.
De plus, les sites peuvent avoir des restrictions géographiques qui masquent le contenu aux visiteurs selon leur localisation. Par exemple, certains journaux américains bloquent les visiteurs européens de leurs sites web en raison de difficultés à se conformer au Règlement général sur la protection des données (RGPD) et à la directive ePrivacy.
Heureusement, des proxies plus sophistiqués, comme ceux proposés par le service proxy Bright Data, offrent plusieurs types de proxies qui aident les utilisateurs à contourner ces limitations.
Service Proxy Bright Data
Si vous recherchez un service proxy fiable et évolutif pour le scraping web, ne cherchez pas plus loin. Bright Data est un fournisseur leader de solutions proxy, offrant 400M+ monthly adresses IP dans 195 pays, avec un temps de disponibilité de 99,9 %.
Avec les serveurs proxy Bright Data, vous pouvez choisir parmi différents types de proxies, tels que résidentiel, centre de données, fournisseur d’accès internet (ISP), mobile, ou super proxies, selon votre cas d’usage et votre budget. Cette gamme de choix est utile lors de la création d’un scraper web qui doit obtenir du contenu depuis des sites qui bloquent les adresses IP de proxies connus.
Plutôt que de dépendre d’un proxy générique fonctionnant dans un emplacement que vous ne pouvez pas contrôler, les proxies Bright Data vous permettent de choisir le type de proxy qui correspond le mieux au type d’utilisateur qui accède habituellement au contenu que vous essayez de scraper. Vous pouvez également accéder à des fonctionnalités avancées, telles que le ciblage géographique, la rotation d’IP et le contrôle de session, qui garantissent que votre application ne soit pas bloquée.
Types de proxy Bright Data
Bright Data propose différents types de proxies pour différents scénarios de scraping web. Voici quelques-uns des proxies qu’ils offrent :
- Le proxy résidentiel achemine vos requêtes internet via de véritables appareils, comme des ordinateurs personnels ou des ordinateurs portables, connectés au web via un FAI résidentiel. Ces proxies excellent dans les activités de scraping web car ils se fondent parmi les utilisateurs ordinaires, ce qui réduit le risque que vos requêtes proxifiées soient bloquées.
- Les serveurs proxy agissent comme une passerelle et vous donnent accès au vaste réseau de proxies résidentiels de Bright Data. Avec une seule URL de super proxy, 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 offre la flexibilité d’ajuster plusieurs paramètres, notamment le choix 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 allouée à un serveur situé dans une installation de centre de données. Les proxies de centre de données sont sujets à détection et à blocage ultérieur par les sites web et les API, mais ils restent utiles pour les applications accédant à des données depuis des URL qui ne tentent pas de bloquer les requêtes proxy. Ils sont les plus appropriés pour les projets de scraping web où votre trafic de scraping n’a pas besoin de provenir d’adresses IP résidentielles, professionnelles ou mobiles.
- Le proxy ISP est une adresse IP assignée à un serveur hébergé par un FAI. Les proxies ISP sont similaires aux proxies résidentiels, à la différence que leurs adresses IP peuvent être résidentielles ou professionnelles. Cela les rend adaptés au scraping de sites qui s’attendent à un mélange de trafic résidentiel et professionnel.
Gestionnaire de proxy et API
Avec autant de choix, la gestion de votre utilisation de proxy peut s’avérer compliquée. Heureusement, le Bright Data Proxy Manager vous permet de configurer et gérer facilement vos proxies, surveiller votre utilisation et vos performances, et résoudre tout problème éventuel.
De plus, vous pouvez utiliser les API et intégrations Bright Data pour intégrer facilement des proxies dans votre code. L’ API du navigateur de scraping facilite l’utilisation de proxies avec des outils que vous connaissez probablement (par exemple Playwright et Puppeteer), et le Web Unlocker vous aide à surmonter les blocages qui empêcheraient normalement votre scraper d’accéder à un site.
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 prenant en charge les proxies HTTPS. Vous avez également découvert le service proxy Bright Data, qui propose une variété de types de proxies et de fonctionnalités pour vos besoins de scraping web.
Utiliser un proxy web avec des requêtes fetch dans Node.js peut vous aider à contourner les restrictions réseau, accéder à du contenu géo-restreint, ou masquer votre adresse IP. Cependant, le proxying simple avec node-fetch et https-proxy-agent peut ne pas suffire pour certains scénarios de scraping web, surtout si vous avez besoin d’anonymat, de ciblage géographique, de rotation d’IP, ou d’autres fonctionnalités avancées. Dans ces cas, vous devriez envisager d’utiliser un proxy Bright Data à la place.
Les services proxy de Bright Data offrent une large gamme de fonctionnalités qui peuvent vous aider à accéder à n’importe quel site web ou API sans être bloqué ou ralenti. Vous pouvez également choisir parmi différents types de proxies selon votre cas d’usage et votre budget. Pour commencer avec le service proxy Bright Data, inscrivez-vous dès aujourd’hui.