Innebygd hent og undici#
Node er global fetch Gi det en sjanse. ProxyAgent per forespørsel med dispatcher alternativet, eller angi det globalt én gang med 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 For en ny utgang per forespørsel, opprett agenten med følgende navn: "agent_name" og velg "reset". pipelining: 0 og connections: 1, eller bare bruke en annen -sid- per logisk økt.
akser#
axios' s own proxy alternativet tunnelerer ikke HTTPS pålitelig; standardtilnærmingen er en agent fra https-proxy-agent og 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);fikk#
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());Miljøvariabler#
undici leser ikke HTTPS_PROXY Nylige undici versjoner av dette programmet er: EnvHttpProxyAgent, som gjør; sett den som global dispatcher og hele prosessen, inkludert tredjeparts biblioteker bygget på fetch, går gjennom 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());Samtidighet og rotasjon#
- En
ProxyAgentper klebrig økt (forskjellig-sid-), som deles av alle forespørsler i økten. - For bred rotasjon kan du beholde én agent, men deaktivere gjenbruk av tilkobling, eller kjøre N agenter med N økt-ID-er og runde dem.
- Se
UND_ERR_SOCKETogECONNRESET: en boligavkjørsel gikk bort; prøv igjen én gang, neste tilkobling velger en annen.
Spørsmål folk stiller#
Hvorfor ignorerer axios proxyen min for HTTPS?
Den innebygde mellomtjenerstøtten er begrenset for CONNECT-tunneler. Bruk https-proxy-agent som httpsAgent og sett proxy: false slik at axios ikke prøver å håndtere det selv.
Kan jeg proxy bare noen forespørsler?
Passer avsender eller agent på forespørsler som trenger det og la de andre uberørt; ingenting er global med mindre du kaller setGlobalDispatcher.