Node-এর Undici দিয়ে প্রক্সি IP ব্যবহার করুন
একটি fetch অনুরোধে Undici ProxyAgent দিন এবং সংযোগ পুল অন্য Node ট্র্যাফিক থেকে আলাদা রাখুন।
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 অন্য সংযোগ ধাপ সামলায়।