Express (Node.js)
Express is de ruggengraat van het Node.js-ecosysteem. Om je API-routes of webapplicatie te beschermen, kun je ProxyTracer implementeren als een globale of route-specifieke middleware.
De Middleware
Deze implementatie extraheert het client-IP (en verwerkt X-Forwarded-For headers correct als je achter een reverse proxy zoals NGINX of AWS ALB zit), raadpleegt ProxyTracer met native fetch en breekt de verbinding onmiddellijk af met een 403 Forbidden als er een dreiging wordt gedetecteerd.
const express = require('express');
const app = express();
// Vertrouw op de reverse proxy om ervoor te zorgen dat req.ip accuraat is
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. Extraheer het IP-adres
// Express handelt 'trust proxy' automatisch af, maar we kunnen een fallback gebruiken voor de zekerheid
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// Doorlaten bij lokale ontwikkeling
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. Raadpleeg de ProxyTracer API (Node 18+ ondersteunt native 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. Verbreek de verbinding als er een proxy/VPN wordt gedetecteerd
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail open: Als de API onbereikbaar is, laat verkeer door om uptime te garanderen
console.error('ProxyTracer API Error:', error);
}
// 4. Verkeer is schoon, ga door naar de controller
next();
};
// Globaal toepassen op alle routes
app.use(proxyTracerMiddleware);
// Of pas strikt toe op gevoelige routes
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);Laatst bijgewerkt op