Express Device Rate Limit
Rate limiting that can be stricter on cirtain devices or geo locations.
Installation
npm install express-device-rate-limit
Setup
const deviceRateLimit = require('express-device-rate-limit');
const express = require('express');
const app = express();
const rateLimit = deviceRateLimit({});
rateLimit.all(app);
app.use(rateLimit.bodyParserUrlEncoded());
app.use(rateLimit.bodyParserJSON());
app.use(rateLimit.bodyParser.urlencoded({extended: true}))
app.use(rateLimit.bodyParser.json({type: ['json', 'application/csp-report'], limit: '1mb'}))
app.use(rateLimit.deviceCapture());
app.use(rateLimit.device.capture());
app.use(rateLimit.rateLimit());
Usage
const rateLimit = deviceRateLimit({
limit: 100,
time: '1m',
kickTime: '1h',
defEffect: 5,
minEffect: 1,
maxEffect: this.limit * this.defEffect / 20,
strict: 1,
passive: 1,
err: function(req, res, next){
res.status(429).send('<h1>Error 429</h1><h2>Too Many Requests</h2>').end();
},
geo: {
strict: 1,
country: ['US'],
region: ['NY'],
city: ['MyCityName'],
timezone: ['America/New_York'],
range: [12345, 67890],
area: 1,
metro: 123,
},
});