एकीकरण · शुरुआती

Node.js में प्रॉक्सी का उपयोग कैसे करें, undici, axios और मिला

समर्थित Node.js रिलीज़ पर, NODE USE ENV PROXY=1 HTTP PROXY, HTTPS PROXY और NO PROXY को अंतर्निहित गीली के लिए सक्षम बनाता है; - उपयोग-env-proxy Node.js 22.21+ और 24.5+ में उपलब्ध है। एक स्पष्ट undici ProxyAgent या EnvHttpProxyAgent एक विकल्प है। अपने स्वयं के परिवहन या कस्टम एजेंटों के साथ पुस्तकालयों को अलग विन्यास की आवश्यकता होती है, इसलिए पूरी प्रक्रिया को पूरा करने के बजाय प्रत्येक उपकरण का परीक्षण किया जाता है।

2 मिनट पढ़ा 6 खंड समीक्षा संपादकीय टीम Proxy Cyber

अंतर्निहित लाने और लाभकारी#

नोड का वैश्विक 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-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);

एक-एक-एक#

मोजे-प्रोक्सी-एजेंट
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());

पर्यावरण चर#

undici पढ़ा नहीं जाता HTTPS_PROXY डिफ़ॉल्ट रूप से। हाल के undici संस्करणों जहाज EnvHttpProxyAgent, जो करता है; इसे वैश्विक प्रेषक और पूरी प्रक्रिया के रूप में सेट करता है, जिसमें तीसरे पक्ष के पुस्तकालयों को शामिल किया गया है, प्रॉक्सी के माध्यम से चला जाता है।

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());

तुल्यता और रोटेशन#

  • एक ProxyAgent प्रति चिपचिपा सत्र (विभिन्न) -sid-इस सत्र के सभी अनुरोधों द्वारा साझा किया गया है।
  • विस्तृत रोटेशन के लिए, एक एजेंट को बनाए रखें लेकिन कनेक्शन को पुन: उपयोग करने में अक्षम करें, या एन सत्र आईडी के साथ एन एजेंट चलाएं और उन्हें राउंड-रोबिन करें।
  • देखो UND_ERR_SOCKET और ECONNRESET: एक आवासीय निकास दूर हो गया; एक बार फिर से प्रयास करें, अगले कनेक्शन दूसरे को चुनता है।

सवाल पूछो#

क्यों axios अपने प्रॉक्सी को HTTPS के लिए अनदेखा करता है?

इसका अंतर्निहित प्रॉक्सी समर्थन कनेक्टीट सुरंगों के लिए सीमित है। https-proxy-agent का उपयोग httpsAgent के रूप में करें और प्रॉक्सी सेट करें: झूठा तो अक्ष इसे खुद को संभालने की कोशिश नहीं करता है।

क्या मैं केवल कुछ अनुरोधों को प्रॉक्सी कर सकता हूँ?

हाँ। प्रेषक या एजेंट को उन अनुरोधों पर पास करें जिन्हें इसकी आवश्यकता है और दूसरों को बिना किसी चीज से छुट्टे छोड़ दें; जब तक आप सेटग्लोबलडिस्पैचर नहीं कहते तब तक कोई वैश्विक नहीं है।

आपका खाता

अपने प्रॉक्सी को एक खाते में प्रबंधित करें

नेटवर्क, प्लेस ऑर्डर की तुलना करें और एक डैशबोर्ड से अपने शेष और समर्थन अनुरोधों का पालन करें। हमारी टीम भुगतान की समीक्षा करती है और वितरण के बाद कनेक्शन विवरण प्रदान करती है।

खाता बनाएँ