Ugrađeni dohvaćanje i undici#
Globalni čvor fetch Daj mu šansu. ProxyAgent Po zahtjevu s dispatcher Opcija, ili postaviti globalno jednom s 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 Za novi izlaz po zahtjevu stvorite agent s imenom "agent_name" i nastavite sa sljedećim koracima: pipelining: 0 i connections: 1, ili jednostavno upotrijebite drugačiji -sid- po logičkoj sesiji.
osi#
Axios vlastiti proxy Opcija ne tunelira HTTPS pouzdano; standardni pristup je agent iz 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);Imamo ga.#
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());Varijable okoliša#
undici ne čita HTTPS_PROXY Nedavne undici verzije isporučuju se s ovim programom. EnvHttpProxyAgent, što radi; postavite ga kao globalni dispečer i cijeli proces, uključujući biblioteke treće strane izgrađene na dohvaćanju, prolazi kroz 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());Istodobnost i rotacija#
- Jedan
ProxyAgentpo ljepljivoj sesiji (različiti-sid-), koji dijele svi zahtjevi te sesije. - Za široku rotaciju, zadržite jednog agenta ali onemogućite ponovnu uporabu veze ili pokrenite N agenata s N ID-ovima sesije i rotirajte ih.
- Gledaj.
UND_ERR_SOCKETiECONNRESET: stambeni izlaz je otišao; pokušajte ponovno jednom, sljedeće povezivanje odabire drugi.
Pitanja koja ljudi postavljaju#
Zašto Axios ignorira moj proxy za HTTPS?
Upotrijebite https-proxy-agent kao httpsAgent i postavite proxy: false tako da axios ne pokušava sam upravljati s tim.
Mogu li proxy samo neke zahtjeve?
Proslijedite dispečeru ili agentu zahtjeve koji to zahtijevaju, a ostale ostavite netaknutima; ništa nije globalno osim ako ne nazovete setGlobalDispatcher.