Proxys HTTP et SOCKS dans Axios pour Node.js
Configurez un proxy HTTP dans l’adaptateur HTTP Node d’Axios, ou utilisez un agent SOCKS si l’IP choisie correspond à un point d’accès SOCKS.
L’adaptateur HTTP Node d’Axios accepte un objet proxy HTTP contenant un hôte et un port numérique :
import axios from 'axios';
const response = await axios.get('https://example.com/', {
adapter: 'http',
proxy: {
protocol: 'http',
host: '203.0.113.10',
port: 8080,
},
timeout: 15000,
});
console.log(response.status);
Remplacez le point d’accès de documentation par une entrée HTTP de votre service ou de la liste de proxys HTTP. Ces exemples utilisent Node ; Axios dans le navigateur ne peut pas sélectionner le proxy réseau du navigateur avec ces options. Le champ host reçoit l’adresse sans schéma d’URL.
Le champ protocol de l’objet proxy décrit son point d’écoute. Dans Axios 1.21.0, l’adaptateur HTTP Node utilise CONNECT pour une destination HTTPS, puis négocie TLS avec l’origine à travers le tunnel. Les anciennes versions ont utilisé d’autres chemins de proxy : la version installée compte donc.
Une URL SOCKS exige un agent SOCKS
L’objet proxy HTTP ne sélectionne pas SOCKS. Utilisez plutôt un agent compatible :
npm install [email protected] [email protected]
import axios from 'axios';
import { SocksProxyAgent } from 'socks-proxy-agent';
const agent = new SocksProxyAgent('socks5h://203.0.113.10:1080');
try {
const response = await axios.get('https://example.com/', {
adapter: 'http',
httpAgent: agent,
httpsAgent: agent,
proxy: false,
timeout: 15000,
});
console.log(response.status);
} finally {
agent.destroy();
}
proxy: false désactive la gestion du proxy HTTP par Axios pour la route fournie par l’agent SOCKS. Fournir l’agent pour les destinations HTTP et HTTPS couvre les deux schémas. Ici, socks5h délègue le DNS de la destination au côté SOCKS ; le serveur choisi doit prendre en charge ce protocole.
Interpréter les échecs
Une erreur Axios peut contenir une réponse lorsque le site renvoie un statut d’échec. En l’absence de réponse, examinez le code d’erreur et les détails de connexion. Un module manquant, un protocole non pris en charge ou une version Node incompatible peut provoquer un échec avant que la requête n’atteigne le point d’accès.
Pour les proxys HTTP authentifiés, utilisez le champ auth de l’objet proxy avec les identifiants fournis par l’opérateur. Les paramètres d’authentification de la destination concernent un autre interlocuteur.