Comment définir un proxy dans Axios : guide complet

Découvrez comment configurer des proxys dans Axios et découvrez les proxys Bright Data compatibles avec Axios.
11 min de lecture
How To Set a Proxy in Axios

Ce guide des proxys dans Axios couvre les sujets suivants :

  • Pourquoi utiliser des proxys dans Axios.
  • Comment utiliser un proxy HTTP, HTTPS ou SOCKS avec Axios.
  • Comment gérer l’authentification et la rotation des proxys.

Qu’est-ce qu’Axios et pourquoi pourriez-vous avoir besoin d’un proxy ?

Axios est l’un des clients HTTP les plus utilisés dans l’écosystème JavaScript. Il offre une API intuitive, facile à utiliser et basée sur des promesses pour exécuter des requêtes HTTP et traiter des en-têtes personnalisés, des configurations et des cookies.

Pourquoi utiliser un proxy dans Axios ? C’est très simple : en acheminant vos requêtes via un proxy, vous pouvez masquer votre adresse IP ; le serveur cible a donc plus de mal à vous identifier et à vous bloquer. Cette couche supplémentaire de confidentialité vous aide à maintenir l’intégrité de votre application et évite les interdictions ou restrictions d’adresses IP. Vous pouvez obtenir le même résultat avec Fetch, comme nous l’expliquons dans notre guide des proxys dans Node-Fetch.

Utiliser un proxy dans Axios

Dans cette section, consacrée à l’utilisation des proxys avec Axios, vous allez découvrir comment définir un proxy HTTP, HTTPS ou SOCKS.

Prérequis

Tout d’abord, vous devez vous assurer que le package npm axios est bien installé. Ajoutez-le aux dépendances de votre projet avec :

npm install axios 

Dans Node.js, Axios prend nativement en charge les proxys HTTP et HTTPS via la config proxy. Dès lors, si vous voulez utiliser des proxys HTTP/HTTPS avec Axios dans une application Node.js, vous êtes prêt à commencer.

Si vous souhaitez plutôt utiliser un proxy non-HTTP/S, vous devez utiliser le projet Proxy Agents. Celui-ci ci fournit des implémentations http.Agent pour intégrer Axios avec les proxys dans différents protocoles. Plus précisément, les différentes bibliothèques npm exposées par le projet catégorisé par le protocole sont :

Parfait ! Vous êtes prêt à définir des proxys dans Axios.

Proxys HTTP/HTTPS

Voici à quoi devrait ressembler l’URL de votre proxy HTTP/HTTPS :

"<PROXY_PROTOCOL>://<PROXY_HOST>:<PROXY_PORT>" 

sera “http” pour les proxys HTTP et “https” pour les proxys HTTPS. est généralement une adresse IP brute, tandis que est le port écouté par le serveur proxy.

Par exemple, voici l’URL de votre produit HTTP :

"http://47.88.62.42:80"

Vous pouvez définir ce proxy dans Axios comme ceci :

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "48.88.62.42",

        port: "80"

    }

})

Comme vous pouvez le voir, tout se résume à diviser l’URL du proxy en deux parties et à les spécifier correctement dans la configuration du proxy. Axios va maintenant adresser la requête à l’URL passée comme paramètre via le serveur proxy HTTP spécifié.

Vérifions que l’approche ci-dessus permet bien de définir un proxy dans Axios.

Récupérez l’URL d’un serveur proxy HTTP ou HTTPS gratuit en ligne. Regardez par exemple :

Protocol: HTTP; IP Address: 52.117.157.155; Port: 8002

L’URL complète du proxy sera “http://52.117.157.155:8002.”

Pour vérifier que le proxy fonctionne comme prévu, vous pouvez cibler le nœud final /ip à partir du projet HTTPBin. Cette API publique retourne l’adresse IP de la requête entrante ; elle doit donc renvoyer l’adresse IP du serveur proxy.

Le code du script Node.js sera :

import axios from "axios"

async function testProxy() {

    // perform the desired request through the HTTP proxy

    const response = axios.get("https://httpbin.io/ip", {

        proxy: { 

            protocol: "http", 

            host: "52.117.157.155",

            port: "8002" 

        }

    })

    // print the result

    console.log(response.data)

}

testProxy()

Exécutez le script ; vous devriez voir s’afficher :

{ "origin": "52.117.157.155" }

C’est précisément l’adresse IP du serveur proxy, ce qui signifie que le serveur proxy fonctionne comme prévu et que votre adresse IP est sûre !

Malheureusement, vous n’obtiendrez pas le même résultat si vous exécutez le script dans un cas réel. Plus précisément, cela se terminera par une erreur. Pourquoi ? Parce que les proxys gratuits ont une espérance de vie très courte et sont peu fiables ! Vous pouvez les utiliser à des fins d’apprentissage, mais pas vous fier à eux pour une application concrète.

Attention : les services de proxys gratuits sont peu fiables, lents, sujets à des erreurs, gourmands en données et leur espérance de vie est très courte. Évitez-les !

La solution ? Les proxys Premium de Bright Data – le meilleur fournisseur du marché. Abonnez-vous pour essayer gratuitement des proxys fiables.

Proxys SOCKS

Si vous essayez de définir la chaîne “SOCKS” dans le champ de protocole de l’objet de configuration de proxy, vous obtiendrez l’erreur suivante :

AssertionError [ERR_ASSERTION]: protocol mismatch

  // ...

 {

  generatedMessage: false,

  code: 'ERR_ASSERTION',

  actual: 'dada:',

  expected: 'http:',

  operator: '=='

}

Cela est dû au fait qu’Axios ne prend pas en charge nativement les proxys SOCKS. Vous avez donc besoin d’une dépendance supplémentaire pour obtenir le résultat souhaité.

Ajoutez la bibliothèque npm SOCKS-proxy-agent aux dépendances de votre projet avec la commande suivante :

npm install socks-proxy-agent

Ce package vous permet de vous connecter à un serveur proxy SOCKS tout en effectuant des requêtes HTTP ou HTTPS dans Axios.

Ensuite, importez l’implémentation de l’agent de proxy SOCKS à partir de la bibliothèque :

const SocksProxyAgent = require("socks-proxy-agent")

Ou si voOu si vous utilisez les modules ECMAScript (ESM) :us utilisez les modules ECMAScript (ESM) :

import { SocksProxyAgent } from "socks-proxy-agent"

Supposez que l’URL de votre proxy SOCKS soit :

"socks://183.88.74.73:4153"

Notez que le protocole de proxy peut prendre l’une ou l’autre des valeurs suivantes : “chaussettes”, “socks5”, “socks4”.

Stockez cette valeur dans une variable et passez-la au constructeur SocksProxyAgent :

const proxyURL = "socks://183.88.74.73:4153"

const proxyAgent = new SocksProxyAgent(proxyURL)

SocksProxyAgent() initialise une instance http.Agent pour effectuer des requêtes HTTP/HTTPS via l’URL du proxy.

Vous pouvez maintenant utiliser un proxy SOCKS avec Axios comme ceci :

axios.get(targetURL, { 

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

httpAgent et httpsAgent définissent respectivement l’agent personnalisé à utiliser lors de l’exécution de requêtes HTTP et HTTPS. En d’autres termes, la requête HTTP ou HTTPS effectuée par Axios passera par le proxy SOCKS spécifié. De la même manière, vous pouvez utiliser le package npm https-proxy-agent à titre d’alternative pour définir des proxys HTTP/HTTPS dans Axios.

Au final :

import axios from "axios"

import { SocksProxyAgent } from "socks-proxy-agent"

async function testProxy() {

    // replace with the URL of your SOCKS proxy 

    const proxyURL = "socks://183.88.74.73:4153"

    // define the HTTP/HTTPS proxy agent

    const proxyAgent = new SocksProxyAgent(proxyURL)

    // perform the request via the SOCKS proxy

    const response = await axios.get("https://httpbin.io/ip", { 

        httpAgent: proxyAgent,     

        httpsAgent: proxyAgent 

    })

    // print the result

    console.log(response.data) // { "origin": "183.88.74.73" }

}

testProxy()

Suivez le lien suivant pour d’autres exemples de configuration d’un proxy SOCKS dans Axios.

Proxy Axios : cas d’utilisation avancés

Maintenant que vous connaissez les bases de l’intégration de proxy dans Axios, il est temps d’aborder des techniques plus complexes.

Définition globale d’un proxy

Vous pouvez définir un proxy globalement en le spécifiant directement dans une instance Axios :

const axiosInstance = axios.create({

    proxy: { 

        protocol: "<PROXY_PROTOCOL>", 

        host: "<PROXY_HOST>",

        port: "<PROXY_PORT>" 

    },

    // other configs...

})

Ou si vous utilisez Proxy Agents :

// proxy Agent definition ...

const axiosInstance = axios.create({

    httpAgent: proxyAgent,     

    httpsAgent: proxyAgent 

})

Toutes les requêtes effectuées avec axiosInstance passeront désormais automatiquement par le proxy spécifié.

Gestion de l’authentification des proxys dans Axios

Pour autoriser uniquement les utilisateurs payants à accéder à leurs proxys Premium, les fournisseurs de proxys les protègent par authentification. Si vous tentez de vous connecter à un proxy protégé par authentification sans spécifier de nom d’utilisateur et de mot de passe, vous obtiendrez une erreur 407 Proxy Authentication Required.

Plus précisément, voici la syntaxe de l’URL d’un proxy protégé par authentification :

[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]

Dans un cas réel, une URL permettant de se connecter à un proxy protégé par authentification peut être par exemple :

http://admin:[email protected]:8391

Dans ce cas, le champ URL du proxy sera :

  • <PROTOCOL>: HTTP
  • <HOST>: 156.127.0.192
  • <PORT>: 8391
  • <USERNAME>: admin 
  • <PASSWORD>: lK4w90MEe45YIkOpk

Pour gérer l’authentification des proxys dans Axios, il suffit de spécifier le nom d’utilisateur et le mot de passe dans le champ auth de proxy :

axios.get(targetURL, {

    proxy: { 

        protocol: "http", 

        host: "156.127.0.192",

        port: "8381",

        auth: {

            username: "admin",

            password: "lK4w90MEe45YIkOpk"

        }

    }

})

Et voilà ! C’est aussi simple que cela !

En revanche, si vous utilisez Proxy Agents, vous avez deux façons de traiter l’authentification :

  1. Spécifier les informations d’identification directement dans l’URL du proxy :
var proxyAgent = new SocksProxyAgent("http://admin:[email protected]:8391")
  1. Définissez les options username et password dans un objet URL :
const proxyOpts = new URL("http://156.127.0.192:8391")

proxyOpts.username = "admin"

proxyOpts.password = "lK4w90MEe45YIkOpk"

const proxyAgent = new SocksProxyAgent(proxyOpts)

Les mêmes approches fonctionnent également avec HttpsProxyAgent.

Définir des proxys via des variables d’environnement

Une autre façon de configurer un proxy globalement dans Axios est de définir les variables d’environnement suivantes :

  • HTTP_PROXY : URL du serveur proxy à utiliser pour les requêtes HTTP.
  • HTTPS_PROXY : URL du serveur proxy à utiliser pour les requêtes HTTPS.

Par exemple, définissez-les sur Linux ou macOS avec les commandes ci-dessous :

export HTTP_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

export HTTPS_PROXY = "[<PROTOCOL>://]<USERNAME>:<PASSWORD>@<HOST>[:<PORT>]"

Quand Axios détecte ces variables d’environnement, il en déduit les paramètres du proxy, y compris les informations d’identification pour l’authentification. Définissez le champ proxy sur false pour qu’Axios ignore ces variables d’environnement. Gardez à l’esprit que vous pouvez également définir une variable d’environnement NO_PROXY comme une liste de domaines séparés par des virgules, et qui ne doivent pas accepter de requêtes via des proxys.

Notez que le même mécanisme s’applique lorsque vous utilisez des proxys dans cURL.

Implémentation de proxys rotatifs

Si vous utilisez le même serveur proxy un grand nombre de fois, votre site cible finira par bloquer son adresse IP. Pour éviter cela, vous devez vous assurer que chaque requête que vous effectuez provient d’un serveur proxy différent. Une méthode simple pour y parvenir est la suivante :

  1. Définissez une liste d’objets, chacun d’entre eux contenant les informations nécessaires pour se connecter à un proxy différent.
  2. Sélectionnez aléatoirement un objet avant chaque requête.
  3. Configurez le proxy sélectionné dans Axios.

Cette approche implique que vous ayez accès à un pool de serveurs proxys fiables. Acheter l’accès à tous ces serveurs peut s’avérer très cher. De plus, l’intégration de cette logique dans votre code peut être fastidieuse et répétitive.

C’est là que Bright Data intervient, en vous offrant des proxys rotatifs qui changent automatiquement d’adresse IP ! Vous aurez accès à des proxys qui fournissent une nouvelle adresse IP à chaque fois que vous vous connectez. Ces serveurs proxys sont disponibles dans 195 pays, bénéficient d’un réseau à la disponibilité exceptionnelle et garantissent 99,9 % de connexions réussies. Essayez les proxys rotatifs de Bright Data dès aujourd’hui !  

Conclusion

Dans ce tutoriel, consacré à l’utilisation des proxys avec Axios, vous avez appris pourquoi utiliser des proxys dans Axios et comment le faire. Vous savez maintenant comment configurer un proxy HTTP/HTTPS/SOCKS dans Axios. Comme vous l’avez vu, cela ne nécessite que quelques lignes de code.

Vous avez également compris pourquoi vous ne devez pas utiliser de services de proxys gratuits. Il ne vous reste donc plus qu’à choisir le fournisseur de proxys à adopter. Économisez du temps et de l’énergie en optant pour le n° 1 du marché – Bright Data.

Bright Data contrôle les meilleurs serveurs proxys au monde, et assiste des entreprises du classement Fortune 500 et plus de 20 000 clients. Son réseau mondial de proxys comprend :

Au final, il s’agit de l’un des réseaux de proxys les plus importants et les plus fiables du marché. Adressez-vous à l’un de nos représentants commerciaux pour découvrir lequel des produits Bright Data répond le mieux à vos besoins.