Express (Node.js)
Express, Node.js ekosisteminin omurgasıdır. API rotalarınızı veya web uygulamanızı korumak için ProxyTracer'ı global veya rotaya özel bir middleware olarak uygulayabilirsiniz.
Middleware
Bu uygulama, istemci IP'sini çıkarır (NGINX veya AWS ALB gibi bir ters proxy arkasındaysanız X-Forwarded-For başlıklarını işler), yerel fetch kullanarak ProxyTracer'ı sorgular ve bir tehdit algılanırsa 403 Forbidden ile bağlantıyı anında keser.
const express = require('express');
const app = express();
// req.ip değerinin doğru olduğundan emin olmak için ters proxy'ye güvenin
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. IP'yi çıkarın
// Express 'trust proxy' ayarını otomatik olarak yönetir, ancak her ihtimale karşı yedek kullanabiliriz
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// Yerel geliştirme ortamındaysa doğrudan geçirin
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. ProxyTracer API'sini sorgulayın (Node 18+ yerel fetch destekler)
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. Proxy/VPN tespit edilirse bağlantıyı kesin
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail open: API'ye ulaşılamıyorsa çalışma süresini korumak için trafiğe izin verin
console.error('ProxyTracer API Error:', error);
}
// 4. Trafik temiz, controller'a devam edin
next();
};
// Tüm rotalara global olarak uygulayın
app.use(proxyTracerMiddleware);
// Veya yalnızca hassas rotalara kesin olarak uygulayın
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);Son güncelleme tarihi