Integrazioni · Principiante

Come utilizzare i proxy in Node.js con fetch, undici, axios e got

Nelle versioni Node.js supportate, NODE_USE_ENV_PROXY=1 abilita HTTP_PROXY, HTTPS_PROXY e NO_PROXY per il recupero integrato; --use-env-proxy è disponibile in Node.js 22.21+ e 24.5+. Un'alternativa undici ProxyAgent o EnvHttpProxyAgent esplicito è un'alternativa. Le librerie con i propri trasporti o agenti personalizzati necessitano di una configurazione separata, quindi testa ogni strumento anziché dare per scontato che l'intero processo sia coperto.

2 minuti di lettura 6 sezioni Verificato Redazione Proxy Cyber

Fetch e undici integrati#

Il nodo è globale fetch è undici. Dagli un ProxyAgent per richiesta con il dispatcher opzione o impostala globalmente una volta con setGlobalDispatcher.

undici
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 raggruppa le connessioni, quindi le richieste consecutive possono riutilizzare una connessione e quindi un'uscita. Per una nuova uscita per richiesta, creare l'agente con pipelining: 0 e connections: 1o semplicemente usarne uno diverso -sid- per sessione logica.

assi#

proprio di Axios proxy l'opzione non esegue il tunneling HTTPS in modo affidabile; l'approccio standard è un agente da https-proxy-agent e proxy: false.

assi
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);

ottenuto#

ottenuto
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);

CALZINI5#

calzini-proxy-agente
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());

Variabili d'ambiente#

undici non legge HTTPS_PROXY per impostazione predefinita. Vengono spedite le versioni recenti di undici EnvHttpProxyAgent, che fa; impostalo come dispatcher globale e l'intero processo, comprese le librerie di terze parti basate su fetch, passa attraverso il 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());

Concorrenza e rotazione#

  • Uno ProxyAgent per sessione permanente (diversi -sid-), condiviso da tutte le richieste di quella sessione.
  • Per un'ampia rotazione, mantieni un agente ma disabilita il riutilizzo della connessione oppure esegui N agenti con N ID sessione ed esegui il round robin.
  • Guarda UND_ERR_SOCKET e ECONNRESET: è andata via un'uscita residenziale; riprovare una volta, la connessione successiva ne sceglierà un'altra.

Domande che le persone fanno#

Perché axios ignora il mio proxy per HTTPS?

Il suo supporto proxy integrato è limitato per i tunnel CONNECT. Utilizzare https-proxy-agent come httpsAgent e impostare proxy: false in modo che axios non tenti di gestirlo da solo.

Posso delegare solo alcune richieste?

Sì. Passa il dispatcher o l'agente sulle richieste che ne hanno bisogno e lascia intatti gli altri; niente è globale a meno che non chiami setGlobalDispatcher.

Il tuo conto

Gestisci i tuoi proxy in un unico account

Confronta reti, effettua ordini e segui il tuo saldo e le richieste di supporto da un'unica dashboard. Il nostro team esamina i pagamenti e fornisce i dettagli di connessione dopo la consegna.

Crea un account