Буилт-ин Фетцх и унди#
Чвор је глобална fetch је ундици. Дајте му ProxyAgent по захтеву са dispatcher опција, или подесите га глобално једном са 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 базени везе, тако да следећи захтеви могу поново користити једну везу и стога један излаз. За свеж излаз по захтеву створити агента са pipelining: 0 и connections: 1, Или једноставно користите другачији -sid- по логичкој сесији.
axios#
axios је сопствени proxy опција не тунел ХТТПС поуздано; стандардни приступ је агент из https-proxy-agent и 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);добио#
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);СОЦКС5#
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());Променљиве окружења#
undici не чита HTTPS_PROXY По дефаулту. Недавне верзије ундици брод EnvHttpProxyAgent, који то ради; поставите га као глобални диспечер и цео процес, укључујући библиотеке трећих страна изграђене на преузимању, пролази кроз проки.
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());Конкурентност и ротација#
- Један
ProxyAgentпо лепљивој сесији (различито-sid-), који се деле по свим захтевима те сесије. - За широку ротацију, држите једно средство, али онемогућите поновно коришћење везе или покрените N агенте са N ИД-овима сесије и округлим Робином.
- Гледајте
UND_ERR_SOCKETиECONNRESET: стамбени излаз је отишао; поново једном, следећа веза бира другу.
Питања која људи постављају#
Зашто аксиоси игноришу мој прокси за HTTPS?
Његова уграђена прокси подршка је ограничена за Цоннецт тунеле. Користите хттпс-проки-агент као хттпсАгент и поставите проки: лажне тако да аксиоси не покушавају да се сами носе са њим.
Могу ли да заменим само неке захтеве?
Прођите диспечер или агент на захтеве који су му потребни и оставите остале неприкладне; ништа није глобално осим ако не позовете сетГлобалДиспатцхер.