Integraties · Beginner

Hoe gebruik je proxies in Node.js met fetch, undici, axios en kreeg

Op ondersteunde Node.js releases, NODE USE ENV PROXY=1 maakt HTTP PROXY, HTTPS PROXY en NO PROXY voor ingebouwde fetch; --use-env-proxy is beschikbaar in Node.js 22.21+ en 24.5+. Een expliciete undici ProxyAgent of EnvHttpProxyAgent is een alternatief. Bibliotheken met hun eigen transporten of aangepaste agenten hebben aparte configuratie nodig, dus test elk hulpmiddel in plaats van dat het hele proces wordt behandeld.

2 minuten lezen 6 secties Gecontroleerd Redactie Proxy Cyber

Ingebouwde ophaal- en undic#

Knooppunt is globaal fetch is undici. Geef het een ProxyAgent per aanvraag bij de dispatcher optie, of stel het eenmalig globaal in met 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 pools verbindingen, zodat opeenvolgende verzoeken kunnen hergebruiken een verbinding en dus een uitgang. Voor een verse uitgang per verzoek maak de agent met pipelining: 0 en connections: 1, of gebruik gewoon een ander -sid- per logische sessie.

axioma's#

axios' eigen proxy optie niet tunnel HTTPS betrouwbaar; de standaard benadering is een agent van https-proxy-agent en proxy: false.

axioma's
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);

gekregen#

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

SOKKEN5#

sokken-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());

Omgevingsvariabelen#

undici leest niet HTTPS_PROXY standaard. Recente undici-versies worden verzonden EnvHttpProxyAgent, die doet; instellen als de globale dispatcher en het hele proces, met inbegrip van derde-partij bibliotheken gebouwd op fetch, gaat door de 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());

Gelijktijdigheid en rotatie#

  • Eén ProxyAgent per sticky sessie (verschillend -sid-), gedeeld door alle verzoeken van die zitting.
  • Voor brede rotatie, houd één agent, maar schakel de verbinding hergebruik, of voer N-agenten met N-sessie-id's en ronde-robine hen.
  • Kijk UND_ERR_SOCKET en ECONNRESET: een residentiële uitgang ging weg; een keer opnieuw proberen, de volgende verbinding kiest een andere.

Vragen die mensen stellen#

Waarom negeert Axios mijn proxy voor HTTPS?

De ingebouwde proxy ondersteuning is beperkt voor CONNECT tunnels. Gebruik https-proxy-agent als httpsAgent en stel proxy in: false dus axios probeert het niet zelf te behandelen.

Kan ik slechts enkele verzoeken proxy geven?

Ja. Geef de verzender of agent door aan de verzoeken die het nodig hebben en laat de anderen onaangeroerd; niets is wereldwijd tenzij je setGlobalDispatcher noemt.

Uw rekening

Beheer uw proxy's in één account

Vergelijk netwerken, plaats bestellingen en volg uw saldo en ondersteuningsverzoeken vanaf één dashboard. Ons team beoordeelt betalingen en verstrekt verbindingsgegevens na levering.

Account aanmaken