ہر 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
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 ماحولیاتی متغیرات لاگو کرنے کی کوشش بھی نہ کرے۔
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 کی وضاحت)۔
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)۔
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 });
ایک 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 fingerprint | got-scraping یا ایک حقیقی براؤزر؛ دیکھیں TLS گائیڈ |
socks-proxy-agent / https-proxy-agent)؛ بلٹ ان پراکسی آپشنز پر کبھی بھروسا نہ کریں۔proxy: false۔ got: agent: {http, https}۔ Native fetch: undici ProxyAgent dispatcher۔socks5h:// استعمال کریں تاکہ DNS پراکسی کے ذریعے حل ہو — کوئی لیکس نہیں۔SOCKS5 + HTTP اینڈ پوائنٹس، sticky یا rotating، فی GB قیمت — 500MB مفت ٹریفک، کوئی کارڈ درکار نہیں۔
مفت ٹرائل شروع کریںنئے صارفین کو سائن اپ پر 500MB ملتے ہیں، اس کے علاوہ پہلے ری چارج پر بونس۔ پیشکش محدود وقت کے لیے ہے۔