استخدام IP وكيل مع Undici في Node
اربط ProxyAgent من Undici بطلب fetch واحد وافصل مجموعة اتصالاته عن حركة Node غير المرتبطة.
يوجّه Undici الطلب عبر dispatcher. أنشئ ProxyAgent للوكيل HTTP المحدد ومرّره لاستدعاء fetch بدل تغيير dispatcher العام للعملية كلها.
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. يستخدم الاستيراد عمدًا تنفيذ fetch الخاص بـ Undici، لذا ينتمي خيار dispatcher إلى العميل المعروض في المثال.
تحقق من توافق Node قبل إلقاء اللوم على IP
تعتمد إصدارات Node التي يدعمها Undici على إصدار الحزمة. يستخدم المثال Undici 8.12.3 الذي يتطلب Node 22.19.0 أو أحدث. يحدث خطأ تحميل الوحدة أو إصدار المحرّك قبل وصول الطلب إلى الوكيل. تحقق من متطلبات الحزمة المثبتة بدل افتراض أن كل إصدار Node يشغّل أحدث Undici.
يمكن لوكيل واحد خدمة طلبات متكررة
يغلق البرنامج القصير dispatcher عند انتهائه. إذا أرسل تطبيق يعمل عدة طلبات عبر النقطة نفسها، فاحتفظ بالوكيل لهذا الحمل وأغلقه عند انتهاء العمل. إنشاء وكيل وإغلاقه لكل URL يمنع إعادة استخدام الاتصالات على نحو مفيد.
لا يلائم dispatcher العام إلا إذا قصدت التغيير الأوسع. تمريره صراحةً يسهّل اختبار IP وكيل دون تغيير طلبات مكوّن آخر الصادرة.
انظر إلى الاستجابة ومرحلة الفشل
لا يعامل fetch كل حالة خطأ HTTP بوصفها Promise مرفوضة. قد يكون 403 أو 429 استجابة حقيقية من الموقع نقلها الوكيل. أما خطأ الاتصال أو النفق فقد يرفض الطلب قبل وجود كائن استجابة. اقرأ الحالة منفصلة عن الأخطاء التي يرميها الاستدعاء.
إذا لزمت المصادقة، يوفر ProxyAgent في Undici خيارات على مستوى المُنشئ. لا تضف ترويسة تفويض الوكيل إلى ترويسات طلب الموقع؛ فالوكيل يتعامل مع قفزة اتصال أخرى.