Назад к каталогу

Rate Limiter Engine

Rate limiter с sliding window, token bucket и fixed window. Защищает API от DDoS и спама. Настраивается лимитами по IP, пользователю, роуту.

M
Maria Chen
4.5
2 оценок
13
скачиваний
235
просмотров
$ Add to .cursor/skills/ in your project or use Cursor Skills panel
Скачать .md
rate-limitthrottlesliding-windowtoken-bucketddos-protection
# Rate Limiter Engine После того как нас заDDoSили ботами (200к запросов за 10 минут), написал нормальный rate limiter с тремя алгоритмами. Теперь каждый роут можно ограничить отдельно. ## Алгоритмы - **Sliding Window** — плавное окно, нет burst-эффекта как у fixed window - **Token Bucket** — можно накопить токены и сделать burst запросов - **Fixed Window** — проще всего, сбрасывается каждую секунду/минуту ## Использование ```ts import { RateLimiter } from './rate-limiter'; const limiter = new RateLimiter({ algorithm: 'sliding-window', limits: [ { window: 60000, max: 100, key: 'ip' }, // 100 req/min по IP { window: 60000, max: 30, key: 'route' }, // 30 req/min на роут { window: 3600000, max: 1000, key: 'user' }, // 1000 req/hour по юзеру ], }); // middleware app.use((req, res, next) => { const result = limiter.check({ ip: req.ip, route: req.path, userId: req.user?.id, }); if (!result.allowed) { res.setHeader('Retry-After', result.retryAfterMs / 1000); return res.status(429).json({ error: 'too many requests' }); } next(); }); ```
Обновлено 14 мая 2026 г.v1.1.1