Integrationer · Nybörjare

Hur man använder proxies i Node.js med fetch, undici, axios och got

På stödda Node.js-utgåvor aktiverar NODE_USE_ENV_PROXY=1 HTTP_PROX Y, HTTPS_PROX YM och NO_PROXy för inbyggd hämtning; --use-env-proxy finns tillgängligt i Node.j 22.21+ och 24.5+. En explicit undici ProxyAgent eller EnvHttpProxyAgent är ett alternativ. Bibliotek med egna transporter eller anpassade agenter behöver separat konfiguration, så testa varje verktyg snarare än att anta att hela processen täcks.

2 min lästid 6 sektioner Granskad Redaktionsteamet Proxy Cyber

Inbyggd hämtning och undici#

Node's global fetch Ge det en chans. ProxyAgent per förfrågan med dispatcher alternativ, eller ställa in den globalt en gång med setGlobalDispatcher.

elva
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 För en ny utgång per begäran skapar du agenten med hjälp av den här funktionen och sedan använder du pipelining: 0 och connections: 1, eller helt enkelt använda en annan -sid- per logisk session.

axlar#

axios egna proxy alternativet tunnel HTTPS inte tillförlitligt; standardmetoden är en agent från https-proxy-agent och proxy: false.

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

fick#

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

SOCKS5#

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

Miljövariabler#

undici läser inte HTTPS_PROXY Senaste undici versionerna skickas med EnvHttpProxyAgent, som gör det; sätta den som global avsändare och hela processen, inklusive tredjepartsbibliotek byggda på fetch, går genom 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());

Konkurrens och rotation#

  • En ProxyAgent per sticky session (olika -sid-), som delas av alla begäranden i sessionen.
  • För bred rotation kan du behålla en agent men inaktivera återanvändning av anslutningar eller köra N agenter med N sessions-ID:n och använda round robin.
  • Titta. UND_ERR_SOCKET och ECONNRESET: en bostadsavfart gick bort; försök igen, nästa anslutning väljer en annan.

Frågor som folk ställer#

Varför ignorerar axios min proxy för HTTPS?

Dess inbyggda proxy-stöd är begränsat för CONNECT tunnlar.Använd https-proxy-agent som httpsAgent och ställ proxy: false så axios inte försöker hantera det själv.

Kan jag proxy bara vissa förfrågningar?

Passera avsändaren eller agenten på de förfrågningar som behöver det och lämna andra orörda; ingenting är globalt om du inte anropar setGlobalDispatcher.

Ditt konto -

Hantera alla dina proxyer på ett konto

Jämför nätverk, placera beställningar och följ ditt saldo och supportbegäranden från en enda kontrollpanel.Vårt team granskar betalningar och ger anslutningsuppgifter efter leverans.

Skapa konto