Achiziționare și ștearsă#
Nodul este global fetch Da-i un undici. ProxyAgent pe cerere, cu dispatcher opțiunea sau setați-o la nivel global o dată cu 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 Conexiuni piscine, astfel încât cererile consecutive pot refolosi o conexiune și, prin urmare, o ieșire. Pentru o ieșire proaspătă per cerere crea agentul cu pipelining: 0 şi connections: 1, sau pur și simplu de a folosi un alt -sid- pe sesiune logică.
axios#
Axios propriu proxy opțiunea nu tunel HTTPS fiabil; abordarea standard este un agent de la https-proxy-agent şi 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);Am...#
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());Variabile de mediu#
ici nu se citeste HTTPS_PROXY în mod implicit. Recente versiuni unici navă EnvHttpProxyAgent, care face; setați-l ca dispecer global și întregul proces, inclusiv bibliotecile terțe construite pe aduce, trece prin proxy.
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());Conexiuni și rotație#
- Unu.
ProxyAgentpe sesiune lipicioasă (diferită-sid-), împărtășit de toate cererile acestei sesiuni. - Pentru rotație largă, păstrați un agent, dar dezactivați reutilizarea conexiunii, sau executați agenți N cu ID-uri de sesiune N și rotunjiți-le.
- Priveşte.
UND_ERR_SOCKETşiECONNRESET: o ieșire rezidențială a plecat; rejudecați o dată, următoarea conexiune alege alta.
Întrebări pe care oamenii le pun#
De ce Axios ignoră proxy-ul meu pentru HTTPS?
Suportul său proxy încorporat este limitat pentru tunelurile CONNECT. Utilizați https-proxy-agent ca httpsAgent și proxy set: fals astfel încât axios nu încearcă să-l ocupe în sine.
Pot să fac doar câteva cereri?
Da. Treceţi dispecerul sau agentul la cererile care au nevoie şi lăsaţi-le pe celelalte neatinse; nimic nu este global dacă nu numiţi SetGlobalDispatcher.