Integrasi · Pemula

Cara menggunakan proksi di Node.js dengan mengambil, undici, axios dan mendapat

Pada rilis Node.js yang didukung, NODE USE ENV PROXY=1 memungkinkan HTTP PROXY, HTTPS PROXY dan NO PROXY untuk pengambilan built-in; --use-env-proxy tersedia dalam Node.js 22.21+ dan 24.5+. Sebuah undici eksplisit ProxyAgent atau EnvHttpProxyAgent adalah alternatif. Libraine dengan transport mereka sendiri atau agen langganan membutuhkan konfigurasi terpisah, jadi uji setiap alat daripada dengan asumsi keseluruhan proses yang dicakup.

2 min dibaca 6 bagian Disemak Pasukan editorial Proxy Cyber

Pengambilan dan tak bercici#

Dunia Node milik Andos fetch Berikan itu ProxyAgent permintaan per dengan dispatcher Pilihan, atau mengaturnya 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 koneksi kolam, jadi permintaan berturut-turut dapat menggunakan kembali satu koneksi dan oleh karena itu satu keluar. Untuk keluar baru per permintaan membuat agen dengan pipelining: 0 Dan connections: 1, atau hanya menggunakan yang berbeda -sid- Logical per sesi.

axios#

Axios sendiri proxy Opsi tidak tertunnel HTTPS dapat diandalkan; pendekatan standar adalah agen dari https-proxy-agent Dan proxy: false.

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

got#

got
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#

Stokin-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 Persekitaran PALYA#

Undici tidak dibaca HTTPS_PROXY Versi Undici terbaru kapal EnvHttpProxyAgent, yang tidak; ditetapkan sebagai dispatcher global dan seluruh proses, termasuk perpustakaan pihak ketiga dibangun pada fetch, pergi melalui proksi.

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

Konkurensi dan putaran#

  • one ProxyAgent sticky per sesi (berbeda -sid-), dibagikan oleh semua permintaan dari sesi tersebut.
  • Untuk rotasi lebar, simpan satu agen tetapi matikan penggunaan ulang sambungan, atau jalankan agen N dengan id sesi N dan round-robin mereka.
  • Tonton UND_ERR_SOCKET Dan ECONNRESETSebuah pintu keluar perumahan pergi; coba lagi sekali, koneksi berikutnya memilih yang lain.

Pertanyaan orang#

Mengapa Axios mengabaikan proksi saya untuk HTTPS?

Dukungan proksi bawaannya terbatas untuk terowongan CONECT. Gunakan https-proxy-agen sebagai httpsAgent dan set proxy: palsu sehingga aksios tidak mencoba untuk menanganinya sendiri.

Boleh aku minta beberapa permintaan?

Kirimkan operator atau agen pada permintaan yang membutuhkannya dan tinggalkan yang lain tidak tersentuh, tidak ada yang global kecuali Anda memanggil setGlobalDispatcher.

Akunmu

Urus semua proksi dalam satu akaun

Jaringan perbandingan, perintah tempat dan ikuti keseimbangan dan permintaan dukungan Anda dari satu dashboard. tim kami meninjau pembayaran dan menyediakan rincian koneksi setelah pengiriman.

Cipta akaun