Express (Node.js)
Express — это основа экосистемы Node.js. Чтобы защитить API-маршруты или веб-приложение, вы можете внедрить ProxyTracer как глобальный middleware или для отдельных маршрутов.
Middleware
Эта реализация извлекает IP клиента (обрабатывая заголовки X-Forwarded-For, если вы находитесь за reverse proxy, таким как NGINX или AWS ALB), обращается к ProxyTracer через встроенный fetch и немедленно разрывает соединение с кодом 403 Forbidden при обнаружении угрозы.
const express = require('express');
const app = express();
// Доверять reverse proxy, чтобы гарантировать точность req.ip
app.set('trust proxy', true);
const proxyTracerMiddleware = async (req, res, next) => {
// 1. Извлечь IP
// Express обрабатывает 'trust proxy' автоматически, но на всякий случай можно использовать резервный вариант
const ip = req.headers['x-forwarded-for']?.split(',')[0].trim() || req.ip;
// Пропустить при локальной разработке
if (!ip || ip === '::1' || ip === '127.0.0.1') {
return next();
}
try {
// 2. Выполнить запрос к API ProxyTracer (Node 18+ поддерживает нативный 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. Сбросить соединение, если обнаружен прокси/VPN
if (data.proxy === true) {
return res.status(403).json({
error: "Access Denied: VPN or Proxy detected."
});
}
}
} catch (error) {
// Fail open: если API недоступен, разрешить трафик для обеспечения непрерывной работы
console.error('ProxyTracer API Error:', error);
}
// 4. Трафик чист, перейти к контроллеру
next();
};
// Применять глобально ко всем маршрутам
app.use(proxyTracerMiddleware);
// Или применять строго к конфиденциальным маршрутам
// app.post('/api/checkout', proxyTracerMiddleware, checkoutController);Последнее обновление: