Indbygget hent og undici#
Node' s global fetch Giv det en chance. ProxyAgent pr. forespørgsel med dispatcher mulighed, eller indstille 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 frisk exit pr. anmodning skal du oprette agenten med den samme IP-adresse som den, der er angivet i kommandolinjen. pipelining: 0 og connections: 1, eller brug blot en anden -sid- pr. logisk session.
akser#
axios's egen proxy Denne mulighed tunnellerer ikke HTTPS pålideligt; standardtilgangen 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);fik#
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 læser ikke HTTPS_PROXY Seneste undici versioner af denne software er: EnvHttpProxyAgent, som gør; sæt den som global dispatcher og hele processen, herunder tredjepartsbiblioteker bygget på fetch, går gennem proxyen.
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());Samtidighed og rotation#
- En
ProxyAgentpr. klæbrig session (forskellige-sid-), der deles af alle anmodninger i den pågældende session. - Hvis du vil have en bred rotation, skal du beholde én agent, men deaktivere genbrug af forbindelser eller køre N agenter med N sessions-id'er og bruge round robin.
- Watch
UND_ERR_SOCKETogECONNRESET: en boligafkørsel gik væk; prøv igen én gang, den næste forbindelse vælger en anden.
Spørgsmål folk stiller#
Hvorfor ignorerer axios min proxy for HTTPS?
Dens indbyggede proxy-understøttelse er begrænset til CONNECT tunneler.Brug https-proxy-agent som httpsAgent og sæt proxy: false så axios ikke forsøger at håndtere det selv.
Kan jeg kun proxy nogle anmodninger?
Du kan sende afsenderen eller agenten de anmodninger, der har brug for det, og lade de andre være uberørte; intet er globalt, medmindre du kalder setGlobalDispatcher.