Skip to Content
DocumentationBackendExpress (Node.js)

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