Pengambilan dan tak bercici#
Dunia Node milik Andos fetch Berikan itu ProxyAgent permintaan per dengan dispatcher Pilihan, atau mengaturnya secara global sekali dengan setGlobalDispatcher.
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.
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#
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#
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.
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
ProxyAgentsticky 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_SOCKETDanECONNRESETSebuah 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.