Integracije · Začetnik

Kako uporabljati proxyje v Node.js z fetch, undici, axios in got

Na podprtih izdajah Node.js, NODE_USE_ENV_PROXY=1 omogoča HTTP_PROXy, HTTPS_PROX Y in NO_PROXYS za vgrajeno pridobivanje; --use-env-proxy je na voljo v Node.jsu 22.21+ in 24.5+. Izrecno undici ProxyAgent ali EnvHttpProxyAgent je alternativa. Knjižnice z lastnimi transporti ali agenti po meri potrebujejo ločeno konfiguracijo, zato preizkusite vsako orodje, ne pa da predvidevate, da je celoten proces zajet.

2 min branje 6 oddelkov Pregled Uredniška ekipa Proxy Cyber

Vgrajen fetch in undici#

Globalno vozlišče fetch Daj mu priložnost. ProxyAgent Na zahtevo z dispatcher ali pa ga nastavite globalno enkrat z setGlobalDispatcher.

enajst
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 Za svež izhod na zahtevo ustvarite agenta z naslednjimi nastavitvami: namestitveni program, ki je bil uporabljen za ustvarjanje novega izhoda. pipelining: 0 in connections: 1, ali pa preprosto uporabite drugo -sid- na logično sejo.

osi#

Axios last proxy Ta možnost ne tunelira HTTPS zanesljivo; standardni pristop je agent iz https-proxy-agent in proxy: false.

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

Imam#

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

Okoljske spremenljivke#

undici ne bere HTTPS_PROXY Nedavne undici različice so na voljo samo v angleščini. EnvHttpProxyAgent, ki to počne; nastavite ga kot globalnega dispečerja in celoten proces, vključno s knjižnicami tretjih oseb, zgrajenimi na fetch-u, gre skozi 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());

Sočasnost in rotacija#

  • Ena ProxyAgent na lepljivo sejo (različne -sid-), ki ga delijo vse zahteve te seje.
  • Za široko rotacijo obdržite enega agenta, vendar onemogočite ponovno uporabo povezave ali zaženite N agentov z N ID-ji sej in jih preklopite.
  • Pazi. UND_ERR_SOCKET in ECONNRESET: stanovanjski izhod je odšel; poskusite znova enkrat, naslednja povezava izbere drugo.

Vprašanja, ki jih ljudje postavljajo#

Zakaj axios ignorira moj proxy za HTTPS?

Uporabite https-proxy-agent kot httpsAgent in nastavite proxy: false, da axios ne bo poskušal upravljati s tem sam.Uporabljajte proxy:false za proxy, ki ga Axios ne obravnava.

Ali lahko posredujem samo nekatere zahteve?

Prepustite dispečerju ali agentu zahteve, ki jih potrebujejo in pustite druge nedotaknjene; nič ni globalno, razen če pokličete setGlobalDispatcher.

Vaš račun |

Upravljajte vse svoje proxyje v enem računu

Primerjajte omrežja, oddajajte naročila in spremljajte svoje stanje ter zahteve za podporo z ene nadzorne plošče.Naša ekipa pregleda plačila in po dostavi zagotovi podrobnosti o povezavi.

Ustvari račun