Express (Node.js)
Express es la columna vertebral del ecosistema Node.js. Para proteger tus rutas de API o aplicación web, puedes implementar ProxyTracer como un middleware global o específico por ruta.
El Middleware
Esta implementación extrae la IP del cliente (manejando los encabezados X-Forwarded-For si estás detrás de un proxy inverso como NGINX o AWS ALB), consulta ProxyTracer utilizando fetch nativo y bloquea inmediatamente la conexión con un error 403 Forbidden si detecta una amenaza.
const express = require('express');
const app = express();
// Confíe en el proxy inverso para asegurar que req.ip sea preciso
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. Extraer la IP
// Express maneja 'trust proxy' automáticamente, pero podemos usar un respaldo por si acaso
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// Permitir el paso si es desarrollo local
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. Consultar la API de ProxyTracer (Node 18+ soporta fetch nativo)
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. Descartar la conexión si se detecta un proxy/VPN
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail open: Si la API no es accesible, permitir el tráfico para garantizar la disponibilidad
console.error('ProxyTracer API Error:', error);
}
// 4. El tráfico está limpio, continuar hacia el controlador
next();
};
// Aplicar globalmente a todas las rutas
app.use(proxyTracerMiddleware);
// O aplicar estrictamente a rutas sensibles
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);Última actualización el