Примерно так:
var http = require('http');
var ipTables = {};
var server = http.createServer((req, res) => {
//Ваш обработчик запроса или express/connect вместо него
});
server.on('connection', socket => {
var ip = socket.address().address;
var time = Date.now();
if(ip in ipTables) {
if(time - ipTables[ip].time > 3000) {
ipTables[ip] = {
count : 1,
time
};
return;
}
ipTables[ip].count++;
ipTables[ip].time = time;
if(ipTables[ip].count > 100) {
socket.end('HTTP/1.1 429 Too Many Requests\n\n');
socket.destroy(); //Обрываем соеденение, так как ip ломится слишком часто
}
return;
}
ipTables[ip] = {
count : 1,
time
};
});
server.listen(80);