ادغام · مبتدیان

چگونه از پروکسی ها در Node.js با رای گیری، undici، axios استفاده کنیم و

در نسخه های Node.js پشتیبانی شده، NODE USE ENV PROXY= HTTP PROXY، HTTPS PROXY و NO PROXY را برای ساخت داخلی فعال می کند؛ استفاده از-env-proxy در Node.js 22.21 + و 24.5 + یک روش پیکربندی واضح و صریح و صریح و صریح و یا غیر قانونی است.

2 دقیقه خواندن 6 بخش بازبینی‌شده تیم تحریریه Proxy Cyber

ساخت و ساز و بی پایان#

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.

Axios
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#

جوراب-proxy-agent
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که این کار را به عنوان فرستنده جهانی و کل فرایند، از جمله کتابخانه های شخص ثالث ساخته شده در راو، از طریق پروکسی می رود.

EnvHtpoxyAgent
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 بنامید.

حساب کاربری شما

همهٔ پروکسی‌ها را در یک حساب مدیریت کنید

مقایسه شبکه ها، سفارش مکان و پیگیری تعادل و درخواست های پشتیبانی خود را از یک داشبورد.تیم ما پرداخت ها را بررسی می کند و جزئیات اتصال را پس از تحویل فراهم می کند.

ایجاد حساب