ساخت و ساز و بی پایان#
Node’s Global 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’s own proxy گزینه HTTPS را قابل اعتماد نمی کند؛ رویکرد استاندارد یک عامل است. 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);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());متغیرهای محیط زیست Environment Variables#
بدون شک خوانده نمی شود 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());Concurrency و Swing#
- یک
ProxyAgentدر هر جلسه چسبنده (متفاوت)-sid-به اشتراک گذاشته شده توسط تمام درخواست های آن جلسه. - برای چرخش گسترده، یک عامل را نگه دارید، اما استفاده مجدد از اتصال را غیرفعال کنید یا عوامل N را با شناسه های جلسه N و دور آن ها اجرا کنید.
- Watch
UND_ERR_SOCKETوECONNRESETیک خروجی مسکونی از بین رفت؛ یک بار دوباره امتحان کنید، اتصال بعدی یکی دیگر را انتخاب می کند.
پرسش هایی که مردم می پرسند#
چرا axios پروکسی من را برای HTTPS نادیده می گیرد؟
پشتیبانی پروکسی داخلی آن برای تونل های CONNECT محدود است.استفاده از HTTPS-proxy-agent به عنوان HTTPSAgent و تنظیم پروکسی: کاذب به طوری که axios تلاش نمی کند تا خود آن را اداره کند.
آیا می توانم فقط برخی از درخواست ها را اجرا کنم؟
بله، ارسال کننده یا نماینده درخواست هایی را که به آن نیاز دارند و دیگران را دست نخورده رها کنید؛ هیچ چیز جهانی نیست مگر اینکه شما آن را به نام SetGlobal Dispatcher بنامید.