Express (Node.js)
O Express é a espinha dorsal do ecossistema Node.js. Para proteger suas rotas de API ou aplicação web, você pode implementar o ProxyTracer como um middleware global ou específico para determinadas rotas.
O Middleware
Esta implementação extrai o IP do cliente (tratando cabeçalhos X-Forwarded-For caso você esteja atrás de um proxy reverso como NGINX ou AWS ALB), consulta o ProxyTracer usando fetch nativo e descarta imediatamente a conexão com um 403 Forbidden se uma ameaça for detectada.
const express = require('express');
const app = express();
// Confie no proxy reverso para garantir que req.ip seja preciso
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. Extraia o IP
// O Express gerencia 'trust proxy' automaticamente, mas podemos usar fallback por precaução
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// Liberar se for ambiente de desenvolvimento local
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. Consulte a API do ProxyTracer (Node 18+ suporta 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. Encerre a conexão se um proxy/VPN for detectado
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail-open: Se a API estiver inacessível, permita o tráfego para garantir a disponibilidade
console.error('ProxyTracer API Error:', error);
}
// 4. O tráfego é legítimo, prossiga para o controller
next();
};
// Aplique globalmente a todas as rotas
app.use(proxyTracerMiddleware);
// Ou aplique estritamente a rotas sensíveis
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);Última atualização