Qu'est-ce qu'Axios ?
Axios est une bibliothèque client HTTP populaire, basée sur les promesses, qui vous permet d'effectuer des requêtes HTTP dans Node.js. Légère et facile à utiliser, elle constitue un excellent choix pour les projets de web scraping.
Axios prend en charge un large éventail de fonctionnalités, telles que les proxys, la conversion automatique des données JSON, la prise en charge de l'annulation des requêtes et la prise en charge des intercepteurs, ce qui vous permet de gérer des tâches telles que l'authentification et la gestion des erreurs.
Que sont les proxys ?
Les proxys, également appelés serveurs proxy, agissent comme des intermédiaires entre un client (tel qu'un navigateur web ou un scraper) et un serveur cible (tel qu'un site web).
Le proxy reçoit les requêtes du client et les transmet au serveur cible. Le serveur cible renvoie ensuite la réponse au proxy, qui la transmet à son tour au client.
En matière de web scraping, vous pouvez utiliser des proxys pour masquer l'adresse IP du scraper, afin que le site web que vous scrapez ne détecte pas et ne bloque pas la requête. De plus, l'utilisation de plusieurs proxys peut aider à éviter la détection et à ne pas se faire bloquer.
Certains fournisseurs de proxys proposent des options de rotation d'IP, ce qui vous permet de faire tourner les proxys pour éviter d'être bloqué.
Prérequis
Pour utiliser un proxy avec Axios et Node.js, vous devez avoir installé Node.js et npm (Node Package Manager) sur votre ordinateur. Si ce n'est pas déjà fait, vous pouvez les télécharger et les installer depuis le site web de Node.js.
Une fois Node.js et npm installés, ouvrez le terminal, créez un nouveau dossier pour le projet et exécutez la commande `npm init`. Suivez les instructions et créez un fichier package.json de base.
Installez Axios à l'aide de cette commande :
npm install axiosEffectuer une requête HTTP
Effectuons notre première requête avec Axios. Nous allons envoyer une requête GET à l'endpoint ipify. La requête renverra notre adresse IP.
Créez un fichier index.js et collez-y le code suivant :
// Import axios
const axios = require('axios');
(async () => {
// For storing the response
let res
try {
// Make a GET request with Axios
res = await axios.get('https://api.ipify.org?format=json')
// Log the response data
console.log(res.data)
} catch(err) {
// Log the error
console.log(err)
}
// Exit the process
process.exit()
})()
Nous commençons par importer la bibliothèque axios et utilisons la méthode get pour envoyer une requête au point de terminaison api.ipify.org.
Vous pouvez exécuter le code à l'aide de la commande `node index.js` dans le terminal. Le résultat devrait afficher votre adresse IP. Vérifiez le résultat en accédant à l'URL dans votre navigateur.
Utilisation de proxys avec Axios
Avant d'écrire le moindre code, rendez-vous sur le site Web Free Proxy List et choisissez un proxy situé le plus près possible de votre emplacement. Dans mon cas, je vais choisir un proxy pour l'Allemagne.
La méthode `get` d'Axios prend en charge un deuxième paramètre appelé options. À l'intérieur de ce paramètre, nous pouvons définir les détails du proxy.
Notre requête GET précédente avec un proxy ressemblera à ceci :
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
protocol: 'http',
host: '217.6.28.219',
port: 80
}
})
En exécutant le code, vous constaterez que l'adresse IP renvoyée est différente de la vôtre. Cela s'explique par le fait que la requête est acheminée via un serveur proxy, ce qui masque votre adresse IP.
Qu'en est-il de l'authentification ?
Lorsque vous vous abonnez à un service de proxy premium, vous recevez un nom d'utilisateur et un mot de passe à utiliser dans votre application pour l'authentification.
L'objet `proxy` d'Axios dispose d'une propriété `auth` qui peut recevoir les identifiants d'authentification. Voici un exemple de requête GET utilisant cette configuration :
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
protocol: 'http',
host: '217.6.28.219',
port: 80,
auth: {
username: "PROVIDED_USER",
password: "PROVIDED_PASSWORD"
}
}
})Définition du proxy en tant que variable d'environnement
Une autre façon de configurer un proxy dans Axios consiste à définir les variables d'environnement `http_proxy` ou `https_proxy`. Cette méthode vous permet d'éviter de configurer les détails du proxy dans les commandes Axios, car ceux-ci seront automatiquement récupérés à partir des variables d'environnement.
Pour assurer la compatibilité multiplateforme, je recommande l'installation du paquet `cross-env`, qui implémente une commande de type `export` pour Windows.
Installez le paquet globalement à l'aide de cette commande :
npm install -g cross-env
Nettoyons le code `axios.get` et ramenons-le à sa version initiale. Le code devrait ressembler à ceci :
res = await axios.get('https://api.ipify.org?format=json')
Au lieu de simplement exécuter le code avec `node index.js`, nous allons inclure l'URL du proxy devant la commande comme suit :
cross-env https_proxy=http://217.6.28.219:80/ node index.js
La sortie du script devrait être l'adresse IP du proxy, plutôt que la vôtre. Pour le vérifier, vous pouvez vous rendre sur l'URL ipify dans votre navigateur.
Rotation des proxys
La rotation des proxys est une bonne idée, car elle permet d'éviter la détection et empêche les sites web de bloquer votre adresse IP. Les sites web peuvent suivre et bloquer les adresses IP qui effectuent trop de requêtes en peu de temps, ou celles associées à des activités de scraping.
Nous pouvons utiliser le site Web Free Proxy List pour compiler une liste de proxys que nous pouvons faire tourner à chaque requête `axios`.
Veuillez noter que la liste de proxys que vous trouverez sur le site web peut différer de celle que j'ai compilée. La liste que j'ai créée ressemble à ceci :
const proxiesList = [
{
protocol: 'http',
host: '217.6.28.219',
port: 80
},
{
protocol: 'http',
host: '103.21.244.152',
port: 80
},
{
protocol: 'http',
host: '45.131.4.28',
port: 80
}
];
Très bien, remettons donc la propriété `proxy` dans la configuration `axios`. Mais au lieu d'utiliser un seul proxy, nous en choisirons un au hasard dans notre liste de proxys. Le code ressemblera à ceci :
res = await axios.get('https://api.ipify.org?format=json', {
proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]
})
Voici le contenu du fichier index.js :
// Import axios
const axios = require('axios');
const proxiesList = [
{
protocol: 'http',
host: '217.6.28.219',
port: 80
},
{
protocol: 'http',
host: '172.67.180.244',
port: 80
},
{
protocol: 'http',
host: '45.131.4.28',
port: 80
}
];
(async () => {
// For storing the response
let res
try {
// Make a GET request with Axios
res = await axios.get('https://api.ipify.org?format=json', {
proxy: proxiesList[Math.floor(Math.random() * proxiesList.length)]
})
// Log the response data
console.log(res.data)
} catch(err) {
// Log the error
console.log(err)
}
// Exit the process
process.exit()
})()Utilisation des proxys WebScrapingAPI
Il est préférable d'utiliser des proxys premium provenant d'un service comme WebScrapingAPI plutôt que des proxys gratuits, car ils sont plus fiables, plus rapides et offrent une meilleure sécurité. Les proxys premium sont moins susceptibles d'être bloqués par les sites web et présentent une latence plus faible.
À l'inverse, les proxys gratuits peuvent être lents, peu fiables, contenir des logiciels malveillants et sont susceptibles d'être bloqués par les sites web.
Vous souhaitez essayer WebScrapingAPI ? Pas de problème, inscrivez-vous simplement à notre essai gratuit de 14 jours et vous aurez accès à toutes les fonctionnalités intéressantes, ainsi qu'à 5 000 crédits pour tester le service.
Une fois que vous avez un compte, rendez-vous sur l'API Playground et sélectionnez l'onglet « Proxy Mode » dans la section « Code Samples »
Utilisons l'URL du proxy dans notre code. La requête GET axios ressemblera à ceci :
res = await axios.get('https://api.ipify.org?format=json', {
proxy: {
host: 'proxy.webscrapingapi.com',
port: 80,
auth: {
username: 'webscrapingapi.render_js=0.device=desktop.proxy_type=datacenter',
password: '[YOUR_API_KEY]'
}
}
})
La propriété `username` vous permet d'activer ou de désactiver des fonctionnalités spécifiques de l'API. N'oubliez pas que vous devez également définir votre clé API dans la propriété `password`. Vous pouvez consulter la documentation complète ici.
Chaque fois que vous exécuterez ce code, vous recevrez une adresse IP différente, car WebScrapingAPI fait tourner les adresses IP à chaque requête. Vous pouvez en savoir plus sur cette fonctionnalité en consultant la documentation sur le mode proxy.
De plus, vous avez la possibilité de basculer entre les proxys de centre de données et les proxys résidentiels. Pour en savoir plus sur les différents types de proxys que nous proposons, consultez la documentation sur les proxys.
Conclusion
L'utilisation d'un proxy est un aspect important du web scraping, car elle vous permet de masquer votre adresse IP et d'accéder à des sites web bloqués. Axios est une bibliothèque puissante pour le scraping de données, et lorsqu'elle est associée à un proxy fiable, vous pouvez obtenir une extraction de données efficace et rapide.
En utilisant un service de proxy premium comme WebScrapingAPI, vous aurez accès à un large éventail de fonctionnalités, notamment la rotation d'adresses IP et la possibilité de basculer entre des proxys de centre de données et des proxys résidentiels.
Nous espérons que cet article vous a permis de mieux comprendre l'utilisation d'un proxy avec Axios et Node.js, ainsi que les avantages que cela peut apporter à vos besoins en matière de scraping. N'hésitez pas à vous inscrire à notre essai gratuit de 14 jours pour tester notre service et découvrir toutes ses fonctionnalités.




