Ichki olish va undici#
Nuqtaning globali fetch Uni bir ProxyAgent soʻrov uchun dispatcher parametrini, yoki uni global bir marta bu bilan oʻrnatish 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 Ulanishlarni jamlaydi, shuning uchun ketma-ket talablar bir ulanish va natijada bitta chiqishni qayta ishlash mumkin. Har bir talab uchun yangi chiqish uchun agentni quyidagi bilan yarating pipelining: 0 va connections: 1, yoki boshqasini ishlating -sid- Mantiqiy sessiya uchun.
osi#
Axios'ning oʻzi proxy tanlov HTTPS tunnelini ishonchli qilmaydi; standart yondashuv agentdan https-proxy-agent va 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);olindi#
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());Atrof-muhit oʻzgaruvchilari#
undici oʻqilmaydi HTTPS_PROXY Oʻrindosh EnvHttpProxyAgent, buni qiladi; uni global dispetcher sifatida qoʻying va barcha jarayonlar, shu jumladan fetch ustida qurilgan uchinchi tomon kitobxonalari ham proksi orqali oʻtadi.
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());Bir vaqtda va aylanish#
- Bir
ProxyAgentHar bir yopishqoq seans uchun (aynan-sid-), sessiyaning barcha talablari tomonidan ulushlangan. - Koʻp marta aylanish uchun, bir agentni saqlab qoling, ammo aloqani qayta ishlashni oʻchiring yoki N sessiya ID bilan N agentlarni ishga tushiring va ularni aylantirib yurgizing.
- Koʻrib chiqish
UND_ERR_SOCKETvaECONNRESET: a residential exit went away; bir marta qayta urining, keyingi aloqa boshqasini tanlaydi.
Odamlar soʻraydigan savollar.#
Nega axios HTTPS uchun proksiimni eʼtiborsiz qoldiradi?
Uning ichki proksi qoʻllab-quvvatlashi CONNECT tunnellari uchun cheklangan. httpsAgent sifatida https-proxy-agent ni ishlating va axios uni oʻzi boshqarishga urinmasligi uchun proxy: false ga qoʻying.
Faqat baʼzi talablarni proksi orqali bajarish mumkinmi?
Ha. Dispetcher yoki agentga buni talab qiladigan iltimoslarni topshiring va boshqalarini oʻzgartirmasdan qoldiring; setGlobalDispatcher ni chaqirmaganingizda hech narsa global boʻlmaydi.