Express (Node.js)
Express ist das Rückgrat des Node.js-Ökosystems. Um Ihre API-Routen oder Webanwendungen zu schützen, können Sie ProxyTracer als globale oder routenspezifische Middleware implementieren.
Die Middleware
Diese Implementierung extrahiert die Client-IP (und verarbeitet X-Forwarded-For-Header, falls Sie einen Reverse-Proxy wie NGINX oder AWS ALB verwenden), fragt ProxyTracer über natives fetch ab und trennt die Verbindung sofort mit 403 Forbidden, wenn eine Bedrohung erkannt wird.
const express = require('express');
const app = express();
// Vertrauen Sie dem Reverse-Proxy, um sicherzustellen, dass req.ip korrekt ist
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. IP extrahieren
// Express verarbeitet 'trust proxy' automatisch, aber wir können zur Sicherheit auf einen Fallback zurückgreifen
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// Bei lokaler Entwicklung durchleiten
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. ProxyTracer-API abfragen (Node 18+ unterstützt natives 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. Verbindung trennen, falls ein Proxy/VPN erkannt wird
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail-Open: Wenn die API nicht erreichbar ist, Traffic erlauben, um die Verfügbarkeit sicherzustellen
console.error('ProxyTracer API Error:', error);
}
// 4. Traffic ist sauber, weiter zum Controller
next();
};
// Global auf alle Routen anwenden
app.use(proxyTracerMiddleware);
// Oder strikt auf sensible Routen anwenden
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);Zuletzt aktualisiert am