Undici अनुरोध को dispatcher से भेजता है। चुने HTTP प्रॉक्सी के लिए ProxyAgent बनाएँ और पूरे प्रोसेस का ग्लोबल dispatcher बदलने के बजाय fetch कॉल को दें।

npm install [email protected]
import { fetch, ProxyAgent } from 'undici';

const dispatcher = new ProxyAgent('http://203.0.113.10:8080');

try {
  const response = await fetch('https://example.com/', {
    dispatcher,
    signal: AbortSignal.timeout(15000),
  });

  console.log(response.status);
  console.log(await response.text());
} finally {
  await dispatcher.close();
}

प्रोग्राम को .mjs फ़ाइल में सहेजें या ES मॉड्यूल प्रोजेक्ट इस्तेमाल करें। दस्तावेज़ IP की जगह HTTP प्रॉक्सी सूची का HTTP प्रॉक्सी रखें। इंपोर्ट जानबूझकर Undici का fetch इस्तेमाल करता है, इसलिए dispatcher विकल्प उदाहरण के क्लाइंट का है।

IP को दोष देने से पहले Node संगतता जाँचें

Undici के समर्थित Node संस्करण पैकेज रिलीज़ पर निर्भर हैं। उदाहरण Undici 8.12.3 इस्तेमाल करता है, जिसे Node 22.19.0 या नया चाहिए। मॉड्यूल लोड या इंजन संस्करण की त्रुटि अनुरोध के प्रॉक्सी तक पहुँचने से पहले होती है। हर Node में नवीनतम Undici चलने का अनुमान न लगाएँ, स्थापित पैकेज की जरूरत जाँचें।

एक agent बार-बार अनुरोध संभाल सकता है

छोटा प्रोग्राम अंत में dispatcher बंद करता है। चल रहा अनुप्रयोग एक एंडपॉइंट से कई अनुरोध भेजे तो agent उस काम के लिए रखें और काम समाप्त होने पर बंद करें। हर URL के लिए agent बनाना और बंद करना उपयोगी कनेक्शन पुनःप्रयोग रोकता है।

ग्लोबल dispatcher तभी उचित है जब व्यापक बदलाव चाहते हों। स्पष्ट रूप से देने से दूसरे घटक के बाहर जाने वाले अनुरोध बदले बिना प्रॉक्सी IP जाँचना आसान है।

उत्तर और विफलता का चरण देखें

fetch हर HTTP त्रुटि स्थिति को अस्वीकृत Promise नहीं मानता। 403 या 429 प्रॉक्सी से आया वेबसाइट का वास्तविक उत्तर हो सकता है। कनेक्शन या टनल त्रुटि उत्तर ऑब्जेक्ट बनने से पहले अनुरोध अस्वीकार कर सकती है। स्थिति को कॉल द्वारा फेंकी गई त्रुटियों से अलग पढ़ें।

प्रमाणीकरण चाहिए तो Undici का ProxyAgent कंस्ट्रक्टर विकल्प देता है। प्रॉक्सी प्राधिकरण हेडर को वेबसाइट अनुरोध हेडर में न जोड़ें; agent अलग कनेक्शन खंड संभालता है।

संबंधित लेख