Node.js में Proxy कॉन्फ़िगरेशन: axios, got, fetch और undici (2026 गाइड)

6 जून 2026 को प्रकाशित · ≈10 मिनट पढ़ें

हर Node.js HTTP क्लाइंट proxy को अलग ढंग से संभालता है, और उनमें से आधे तो किसी हेल्पर पैकेज के बिना proxy प्रमाणीकरण को बिलकुल भी नहीं संभालते। axios कुछ संस्करणों में HTTPS टार्गेट के लिए अपने ही proxy विकल्प को चुपचाप अनदेखा कर देता है, native fetch में कोई proxy विकल्प है ही नहीं, और त्रुटि संदेश — ECONNRESET, 407, या बस एक हैंग — आपको कुछ नहीं बताते।

यह axios, got, node-fetch, native fetch (undici), और superagent को प्रमाणित residential proxy के माध्यम से रूट करने का पूरा, काम करने वाला संदर्भ है। यह हमारी Python गाइड्स (requests/httpx/aiohttp, Scrapy) का Node साथी है। सभी उदाहरण मानक प्लेसहोल्डर फ़ॉर्मैट का उपयोग करते हैं — इसमें अपने असली क्रेडेंशियल डालें:

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

वह एक नियम जो ज़्यादातर बग रोकता है

बिल्ट-इन proxy विकल्पों का उपयोग न करें। एक proxy एजेंट का उपयोग करें। Node के HTTP क्लाइंट कनेक्शन हैंडलिंग को एक "एजेंट" ऑब्जेक्ट को सौंप देते हैं, और एजेंट पैकेज (https-proxy-agent, socks-proxy-agent) CONNECT टनलिंग और प्रमाणीकरण को सही ढंग से लागू करते हैं। बिल्ट-इन विकल्प अक्सर ऐसा नहीं करते — 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 आपके एजेंट के ऊपर 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 फ़िंगरप्रिंट नकल (यह क्यों मायने रखता है: JA3/JA4 explained)।

Native fetch / undici (Node 18+)

Node का बिल्ट-इन fetch undici से आता है, proxy एनवायरनमेंट वैरिएबल को अनदेखा करता है, और इसमें कोई 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 एजेंट स्वीकार करता है (ऊपर 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 सेशन

एक रोटेटिंग residential gateway के साथ आप IP सूचियों का प्रबंधन नहीं करते — gateway आपको प्रति कनेक्शन एक ताज़ा exit देता है, या प्रति session id एक exit पकड़े रखता है। Node में यह साफ़-साफ़ प्रति पहचान एक एजेंट में मैप होता है:

// 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");

एक पहचान के भीतर कनेक्शन पूलिंग के लिए एजेंट का पुन: उपयोग करें; पहचानों के बीच कभी एक एजेंट साझा न करें। कब रोटेट करें बनाम कब स्टिक करें, यह अपने आप में एक विषय है — देखें sticky vs rotating sessions

समस्या निवारण तालिका

लक्षणकारणसमाधान
407 Proxy Authentication Requiredक्रेडेंशियल proxy तक नहीं पहुँच रहेuser:pass को क्लाइंट कॉन्फ़िग में नहीं, एजेंट URL में डालें
axios http:// पर काम करता है, https:// पर विफलकेवल httpAgent सेट हैhttpsAgent भी सेट करें, और proxy: false
ECONNRESET तुरंतगलत port / गलत प्रोटोकॉल (SOCKS एजेंट के साथ HTTP port)एजेंट प्रकार को port से मिलाएँ
DNS लीक / आंतरिक होस्टनेम विफलsocks5:// DNS को स्थानीय रूप से हल करता हैsocks5h:// का उपयोग करें — h होस्टनेम को proxy के माध्यम से भेजता है
Native fetch HTTP_PROXY को अनदेखा करता हैundici env vars नहीं पढ़ताएक dispatcher स्पष्ट रूप से पास करें
स्थानीय रूप से काम करता है, टार्गेट साइट पर 403proxy बग नहीं — TLS फ़िंगरप्रिंटgot-scraping या एक असली ब्राउज़र; देखें TLS guide
Free tool · no signup

अपना कोड डिबग करने से पहले अपना proxy सत्यापित करें

आधी बार "मेरा Node proxy कोड टूटा हुआ है" दरअसल एक मरा हुआ या गलत कॉन्फ़िगर किया गया proxy होता है। अपना proxy URL हमारे चेकर में पेस्ट करें — यह एक ही बार में कनेक्टिविटी, auth, exit IP, और लेटेंसी का परीक्षण करता है।

Check my proxy →

ऐसी IP चाहिए जो प्रतिष्ठा जाँचें भी पास करें? 500MB मुफ़्त ट्रैफ़िक क्रेडिट के साथ residential proxy पाएँ →

सारांश

Node.js के लिए Residential Proxy

SOCKS5 + HTTP एंडपॉइंट, sticky या रोटेटिंग, प्रति-GB मूल्य निर्धारण — 500MB मुफ़्त ट्रैफ़िक क्रेडिट, किसी कार्ड की आवश्यकता नहीं।

Start Free Trial

सभी IP प्रोडक्ट्स के लिए · किसी भी समय उपलब्ध नोड्स का विशाल पूल

अभी साइन अप करें और अपने रिचार्ज पर 100% तक का रिबेट पाएं

नए यूज़र्स को साइन अप पर 500MB मिलते हैं, साथ ही पहली रिचार्ज पर बोनस। सीमित समय की पेशकश।