Node.js میں پراکسی سیٹ اپ: axios، got، fetch اور undici (گائیڈ 2026)

شائع کردہ 6 جون 2026 · ≈10 منٹ کا مطالعہ

ہر Node.js HTTP کلائنٹ پراکسیز کو مختلف انداز میں سنبھالتا ہے، اور ان میں سے آدھے کسی ہیلپر پیکیج کے بغیر پراکسی authentication کو بالکل نہیں سنبھالتے۔ axios بعض ورژنز میں HTTPS اہداف کے لیے اپنے ہی proxy آپشن کو خاموشی سے نظر انداز کر دیتا ہے، native fetch میں سرے سے کوئی پراکسی آپشن نہیں، اور غلطی کے پیغامات — ECONNRESET، 407، یا محض ایک ہینگ — آپ کو کچھ نہیں بتاتے۔

یہ axios، got، node-fetch، native fetch (undici)، اور superagent کو authenticated residential پراکسیز کے ذریعے روٹ کرنے کا مکمل، کارآمد حوالہ ہے۔ یہ ہماری Python گائیڈز (requests/httpx/aiohttp، Scrapy) کا Node ساتھی ہے۔ تمام مثالیں معیاری پلیس ہولڈر فارمیٹ استعمال کرتی ہیں — اپنی اصل اسناد ڈالیں:

socks5h://USERNAME:[email protected]:913

وہ ایک اصول جو زیادہ تر بگز سے بچاتا ہے

بلٹ ان proxy آپشنز استعمال نہ کریں۔ ایک proxy agent استعمال کریں۔ Node کے HTTP کلائنٹس کنکشن ہینڈلنگ کو ایک "agent" آبجیکٹ کو سونپتے ہیں، اور agent پیکیجز (https-proxy-agent، socks-proxy-agent) CONNECT ٹنلنگ اور authentication کو درست طریقے سے نافذ کرتے ہیں۔ بلٹ ان آپشنز اکثر ایسا نہیں کرتے — axios کی proxy کنفیگ سب سے بدنام مثال ہے۔

npm install socks-proxy-agent https-proxy-agent

axios

const axios = require("axios");
const { SocksProxyAgent } = require("socks-proxy-agent");

const agent = new SocksProxyAgent(
  "socks5h://USERNAME:[email protected]:913"
);

const res = await axios.get("https://api.ipify.org?format=json", {
  httpAgent: agent,    // for http:// targets
  httpsAgent: agent,   // for https:// targets
  proxy: false,        // IMPORTANT: disable axios's own proxy handling
});
console.log(res.data); // -> the proxy's exit IP

دو چیزیں جو لوگ چھوڑ دیتے ہیں: آپ کو دونوں httpAgent اور httpsAgent سیٹ کرنا ہوں گے (axios ہدف کی اسکیم کے مطابق چنتا ہے)، اور آپ کو proxy: false سیٹ کرنا ہوگا تاکہ axios آپ کے agent کے اوپر HTTP_PROXY ماحولیاتی متغیرات لاگو کرنے کی کوشش بھی نہ کرے۔

got

const got = require("got");
const { SocksProxyAgent } = require("socks-proxy-agent");

const agent = new SocksProxyAgent(
  "socks5h://USERNAME:[email protected]:913"
);

const body = await got("https://api.ipify.org?format=json", {
  agent: { http: agent, https: agent },
}).json();

اگر آپ got کے ساتھ محفوظ اہداف اسکریپ کر رہے ہیں، تو اس کے بجائے got-scraping دیکھیں — وہی API، علاوہ براؤزر جیسی ہیڈر جنریشن اور HTTP/2 fingerprint کی نقل (یہ کیوں اہمیت رکھتا ہے: JA3/JA4 کی وضاحت

Native fetch / undici (Node 18+)

Node کا بلٹ ان fetch undici سے آتا ہے، پراکسی ماحولیاتی متغیرات کو نظر انداز کرتا ہے، اور اس میں کوئی agent آپشن نہیں۔ undici کا طریقہ ایک dispatcher ہے:

const { ProxyAgent } = require("undici");

// undici's ProxyAgent speaks HTTP CONNECT (use your HTTP proxy port)
const dispatcher = new ProxyAgent({
  uri: "http://us.jibaoproxy.com:1000",
  token: "Basic " + Buffer.from("USERNAME:PASSWORD").toString("base64"),
});

const res = await fetch("https://api.ipify.org?format=json", { dispatcher });
console.log(await res.json());

نوٹ: undici کا ProxyAgent صرف HTTP-proxy کے لیے ہے۔ native fetch کے ساتھ SOCKS5 کے لیے، یا تو اسے کسی لوکل فارورڈر کے ساتھ آگے رکھیں یا ایسا کلائنٹ استعمال کریں جو socks agents قبول کرے (اوپر axios/got)۔

node-fetch (v2/v3)

const fetch = require("node-fetch");
const { SocksProxyAgent } = require("socks-proxy-agent");

const agent = new SocksProxyAgent(
  "socks5h://USERNAME:[email protected]:913"
);

const res = await fetch("https://api.ipify.org?format=json", { agent });

روٹیشن: فی درخواست نئی شناخت بمقابلہ sticky سیشنز

ایک rotating residential gateway کے ساتھ آپ کو IP فہرستیں منظم نہیں کرنی پڑتیں — gateway ہر کنکشن پر آپ کو ایک تازہ اخراج دیتا ہے، یا فی سیشن آئی ڈی ایک اخراج تھامے رکھتا ہے۔ Node میں یہ صاف طور پر فی شناخت ایک agent پر منطبق ہوتا ہے:

// Sticky: same session id -> same exit IP across requests
function identityAgent(sessionId) {
  return new SocksProxyAgent(
    `socks5h://USERNAME-session-${sessionId}:[email protected]:913`
  );
}

// Account A keeps IP A, account B keeps IP B - cookies and IP move together
const agentA = identityAgent("acct_a");
const agentB = identityAgent("acct_b");

ایک شناخت کے اندر کنکشن پولنگ کے لیے agent کو دوبارہ استعمال کریں؛ کبھی بھی ایک agent کو شناختوں کے درمیان شیئر نہ کریں۔ کب روٹیٹ کرنا ہے بمقابلہ کب سٹک کرنا ہے، یہ اپنا الگ موضوع ہے — دیکھیں sticky بمقابلہ rotating سیشنز۔

ٹربل شوٹنگ ٹیبل

علامتوجہحل
407 Proxy Authentication Requiredاسناد پراکسی تک نہیں پہنچ رہیںuser:pass کو agent URL میں ڈالیں، کلائنٹ کنفیگ میں نہیں
axios http:// پر کام کرتا ہے، https:// پر ناکام ہوتا ہےصرف httpAgent سیٹ ہےhttpsAgent بھی سیٹ کریں، اور proxy: false
فوراً ECONNRESETغلط پورٹ / غلط پروٹوکول (HTTP پورٹ SOCKS agent کے ساتھ)agent کی قسم کو پورٹ سے ملائیں
DNS لیکس / داخلی hostnames ناکام ہوتے ہیںsocks5:// DNS کو لوکلی حل کرتا ہےsocks5h:// استعمال کریں — h hostnames کو پراکسی کے ذریعے بھیجتا ہے
native fetch HTTP_PROXY کو نظر انداز کرتا ہےundici env vars نہیں پڑھتاصراحتاً ایک dispatcher پاس کریں
لوکلی کام کرتا ہے، ہدف سائٹ پر 403یہ پراکسی بگ نہیں — TLS fingerprintgot-scraping یا ایک حقیقی براؤزر؛ دیکھیں TLS گائیڈ
مفت ٹول · کوئی سائن اپ نہیں

اپنا کوڈ ڈیبگ کرنے سے پہلے اپنی پراکسی کی تصدیق کریں

"میرا Node پراکسی کوڈ خراب ہے" میں سے آدھا دراصل ایک مردہ یا غلط کنفیگرڈ پراکسی ہوتا ہے۔ اپنا پراکسی URL ہمارے چیکر میں پیسٹ کریں — یہ ایک ہی بار میں کنیکٹیویٹی، auth، اخراجی IP، اور لیٹنسی ٹیسٹ کرتا ہے۔

میری پراکسی چیک کریں →

ایسے IPs چاہئیں جو ساکھ کی جانچ بھی پاس کریں؟ 500MB مفت ٹریفک کے ساتھ residential پراکسیز حاصل کریں →

خلاصہ

Node.js کے لیے Residential پراکسیز

SOCKS5 + HTTP اینڈ پوائنٹس، sticky یا rotating، فی GB قیمت — 500MB مفت ٹریفک، کوئی کارڈ درکار نہیں۔

مفت ٹرائل شروع کریں

تمام IP پروڈکٹس کے لیے · ہر وقت دستیاب نوڈز کا وسیع پول

ابھی رجسٹر کریں اور ری چارج پر 100% تک کیش بیک حاصل کریں

نئے صارفین کو سائن اپ پر 500MB ملتے ہیں، اس کے علاوہ پہلے ری چارج پر بونس۔ پیشکش محدود وقت کے لیے ہے۔