Intégrations · Débutant

Comment utiliser des proxys dans Node.js avec fetch, undici, axios et got

Sur les versions Node.js prises en charge, NODE_USE_ENV_PROXY=1 active HTTP_PROXY, HTTPS_PROXY et NO_PROXY pour la récupération intégrée ; --use-env-proxy est disponible dans Node.js 22.21+ et 24.5+. Un undici ProxyAgent ou EnvHttpProxyAgent explicite est une alternative. Les bibliothèques disposant de leurs propres transports ou agents personnalisés nécessitent une configuration distincte. Testez donc chaque outil plutôt que de supposer que l'ensemble du processus est couvert.

2 minutes de lecture 6 volets Vérifié Équipe éditoriale Proxy Cyber

Récupération et undicci intégrés#

Le nœud est global fetch est un indice. Donnez-lui un ProxyAgent par demande avec le dispatcher option, ou définissez-le globalement une fois avec setGlobalDispatcher.

ondicus
import { fetch, ProxyAgent, setGlobalDispatcher } from "undici";

const proxy = new ProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");

// Per request
const res = await fetch("https://api.ipify.org", { dispatcher: proxy });
console.log(await res.text());

// Or globally, for every fetch in the process
setGlobalDispatcher(proxy);

A ProxyAgent regroupe les connexions, de sorte que les requêtes consécutives peuvent réutiliser une connexion et donc une sortie. Pour une nouvelle sortie par demande créez l'agent avec pipelining: 0 et connections: 1, ou utilisez simplement un autre -sid- par session logique.

axios#

celui d'Axios proxy l'option ne tunnelise pas HTTPS de manière fiable ; l'approche standard est un agent de https-proxy-agent et proxy: false.

axios
import axios from "axios";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000");
const client = axios.create({ httpsAgent: agent, httpAgent: agent, proxy: false, timeout: 30000 });

const { data } = await client.get("https://api.ipify.org");
console.log(data);

obtenu#

obtenu
import got from "got";
import { HttpsProxyAgent } from "https-proxy-agent";

const agent = new HttpsProxyAgent("http://USER-cc-us:PASS@res.proxy-cyber.com:9000");
const body = await got("https://api.ipify.org", { agent: { https: agent, http: agent }, timeout: { request: 30000 } }).text();
console.log(body);

CHAUSSETTES5#

chaussettes-proxy-agent
import fetch from "node-fetch";
import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new SocksProxyAgent(process.env.PROXY_URL);
const response = await fetch("https://api.ipify.org", { agent });
console.log(await response.text());

Variables d'environnement#

undici ne lit pas HTTPS_PROXY par défaut. Les versions récentes des undics sont livrées EnvHttpProxyAgent, ce qui fait ; définissez-le comme répartiteur global et l'ensemble du processus, y compris les bibliothèques tierces construites sur fetch, passe par le proxy.

EnvHttpProxyAgent
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
// HTTPS_PROXY=http://USER-cc-us:PASS@res.proxy-cyber.com:9000 NO_PROXY=localhost node app.js
setGlobalDispatcher(new EnvHttpProxyAgent());

Concurrence et rotation#

  • Un ProxyAgent par session collante (différents -sid-), partagé par toutes les demandes de cette session.
  • Pour une rotation large, conservez un agent mais désactivez la réutilisation des connexions, ou exécutez N agents avec N identifiants de session et alternez-les.
  • Regarder UND_ERR_SOCKET et ECONNRESET: une sortie résidentielle s'est éloignée ; réessayez une fois, la prochaine connexion en choisit une autre.

Les questions que les gens posent#

Pourquoi axios ignore-t-il mon proxy pour HTTPS ?

Sa prise en charge de proxy intégrée est limitée pour les tunnels CONNECT. Utilisez https-proxy-agent comme httpsAgent et définissez proxy: false pour qu'axios n'essaye pas de le gérer lui-même.

Puis-je proxy uniquement certaines requêtes ?

Oui. Transmettez au répartiteur ou à l'agent les demandes qui en ont besoin et laissez les autres intactes ; rien n'est global sauf si vous appelez setGlobalDispatcher.

Votre compte

Gérez vos proxys dans un seul compte

Comparez les réseaux, passez des commandes et suivez votre solde et vos demandes d'assistance à partir d'un seul tableau de bord. Notre équipe examine les paiements et fournit les détails de connexion après la livraison.

Créer un compte