Integrasinya

Bagaimana menggunakan proxy di Node.js dengan fetch, undici, aixios dan mendapat

On supported Node.js releases, NODE_USE_ENV_PROXY=1 enables HTTP_PROXY, HTTPS_PROXY and NO_PROXY for built-in fetch; --use-env-proxy is available in Node.js 22.21+ and 24.5+. An explicit undici ProxyAgent or EnvHttpProxyAgent is an alternative. Libraries with their own transports or custom agents need separate configuration, so test each tool rather than assuming the whole process is covered.

2 menit baca 6 bagian Ditinjau Tim editorial Proxy Cyber

Built-in fetch and undici#

Nde global fetch adalah undici. ProxyAgent sesuai permintaan dengan dispatcher pilihan, atau set secara global sekali dengan 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 pool connection, so surelling request may use one connection and because one exit. Untuk sebuah exit fresh per request buat agen dengan pipelining: 0 dan connections: 1, atau hanya menggunakan berbeda -sid- dalam sesi logis.

akxios#

Axios sendiri proxy pilihan tidak terowong HTTPS dapat diandalkan; pendekatan standar adalah agen dari https-proxy-agent dan proxy: false.

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

kena#

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

Variabel lingkungan#

undici tidak membaca HTTPS_PROXY secara baku. Versi kapal undici baru-baru ini EnvHttpProxyAgent, yang tidak; set sebagai operator global dan seluruh proses, termasuk ketiga perpustakaan partai dibangun pada fetch, melewati 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());

Konkusi dan rotasi#

  • Satu ProxyAgent per sesi lengket (berbeda -sid-), dibagi oleh semua permintaan sesi itu.
  • Untuk rotasi lebar, jaga satu agen tapi matikan reuse koneksi, atau jalankan N agen dengan ID sesi N dan robin mereka.
  • Lihat UND_ERR_SOCKET dan ECONNRESET: sebuah pintu keluar perumahan pergi; coba lagi sekali, koneksi berikutnya memilih yang lain.

Pertanyaan yang orang tanyakan#

Mengapa Axios mengabaikan proxy saya untuk HTTPS?

Pembangunan-nya dalam dukungan proksi terbatas untuk terowongan CONNECT. Gunakan https- proxy- agent sebagai httpsAgent dan set proxy: salah sehingga aksios tidak mencoba untuk menanganinya sendiri.

Dapatkah saya proksi hanya beberapa permintaan?

Berikan operator atau agen pada permintaan yang membutuhkannya dan tinggalkan yang lain tidak tersentuh; tidak ada yang global kecuali Anda sebut setGlobalDispatcher.

Akun Anda

Kelola proxy Anda dalam satu akun

Bandingkan jaringan, perintah tempatan dan ikuti permintaan keseimbangan dan dukungan anda dari satu dasbor.

Buat akun