Integracije · Početnik

Kako koristiti proxyje u Node.js-u s fetch, undici, axios i got

Na podržanim Node.js izdanjima, NODE_USE_ENV_PROXY=1 omogućuje HTTP_PROXy, HTTPS_PROX Y i NO_PROXYS za ugrađeno dohvaćanje; --use-env-proxy je dostupan u Node.jsu 22.21+ i 24.5+. Alternativa je eksplicitni undici ProxyAgent ili EnvHttpProxyAgent.Knjižnice sa vlastitim transportom ili prilagođenim agentima trebaju odvojenu konfiguraciju, pa testirati svaki alat umjesto pretpostavljanja da je cijeli proces pokriven.

2 min čitanja 6 odjeljaka Revidirano Uređivački tim Proxy Cyber

Ugrađeni dohvaćanje i undici#

Globalni čvor fetch Daj mu šansu. ProxyAgent Po zahtjevu s dispatcher Opcija, ili postaviti globalno jednom s setGlobalDispatcher.

jedanaest
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 novi izlaz po zahtjevu stvorite agent s imenom "agent_name" i nastavite sa sljedećim koracima: pipelining: 0 i connections: 1, ili jednostavno upotrijebite drugačiji -sid- po logičkoj sesiji.

osi#

Axios vlastiti proxy Opcija ne tunelira HTTPS pouzdano; standardni pristup je agent iz https-proxy-agent i 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);

Imamo ga.#

Imamo ga.
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#

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

Varijable okoliša#

undici ne čita HTTPS_PROXY Nedavne undici verzije isporučuju se s ovim programom. EnvHttpProxyAgent, što radi; postavite ga kao globalni dispečer i cijeli proces, uključujući biblioteke treće strane izgrađene na dohvaćanju, prolazi kroz 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());

Istodobnost i rotacija#

  • Jedan ProxyAgent po ljepljivoj sesiji (različiti -sid-), koji dijele svi zahtjevi te sesije.
  • Za široku rotaciju, zadržite jednog agenta ali onemogućite ponovnu uporabu veze ili pokrenite N agenata s N ID-ovima sesije i rotirajte ih.
  • Gledaj. UND_ERR_SOCKET i ECONNRESET: stambeni izlaz je otišao; pokušajte ponovno jednom, sljedeće povezivanje odabire drugi.

Pitanja koja ljudi postavljaju#

Zašto Axios ignorira moj proxy za HTTPS?

Upotrijebite https-proxy-agent kao httpsAgent i postavite proxy: false tako da axios ne pokušava sam upravljati s tim.

Mogu li proxy samo neke zahtjeve?

Proslijedite dispečeru ili agentu zahtjeve koji to zahtijevaju, a ostale ostavite netaknutima; ništa nije globalno osim ako ne nazovete setGlobalDispatcher.

Vaš račun

Upravljajte svim svojim proxyjima s jednog računa

Usporedite mreže, pošaljite narudžbe i pratite svoje stanje i zahtjeve za podršku s jedne nadzorne ploče.Naš tim pregledava plaćanja i pruža detalje o povezivanju nakon isporuke.

Izradi račun