Express (Node.js)
يعتبر Express العمود الفقري لمنظومة Node.js. لحماية مسارات واجهة برمجة التطبيقات أو تطبيق الويب الخاص بك، يمكنك تطبيق ProxyTracer كبرمجية وسيطة عامة أو خاصة بمسارات محددة.
البرمجية الوسيطة
يستخرج هذا التطبيق عنوان IP للعميل (معالجة ترويسات X-Forwarded-For إذا كنت خلف بروكسي عكسي مثل NGINX أو AWS ALB)، ويستعلم من ProxyTracer باستخدام fetch الأصلي، ويسقط الاتصال فوراً برمز 403 Forbidden إذا تم اكتشاف تهديد.
const express = require('express');
const app = express();
// الوثوق بالبروكسي العكسي لضمان دقة req.ip
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. استخراج عنوان IP
// يتعامل Express مع 'trust proxy' تلقائياً، ولكن يمكننا توفير بديل للاحتياط
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// التمرير في حالة التطوير المحلي
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. الاستعلام من ProxyTracer API (يدعم Node 18+ دالة fetch الأصلية)
const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${ip}`, {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}`
}
});
if (ptResponse.ok) {
const data = await ptResponse.json();
// 3. قطع الاتصال إذا تم اكتشاف بروكسي/VPN
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail open: إذا تعذر الوصول لـ API، اسمح بحركة المرور لضمان استمرار الجاهزية
console.error('ProxyTracer API Error:', error);
}
// 4. حركة المرور نظيفة، المتابعة إلى المتحكم
next();
};
// التطبيق عالمياً على جميع المسارات
app.use(proxyTracerMiddleware);
// أو التطبيق بصرامة على المسارات الحساسة
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);آخر تحديث في