diff --git a/app.js b/app.js index ff1ee85..4ec3d95 100644 --- a/app.js +++ b/app.js @@ -3,7 +3,6 @@ const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); -const rateLimit = require('express-rate-limit'); // 引入环境变量 require('dotenv') @@ -34,18 +33,6 @@ app.use('/assets', [ express.static(__dirname + '/node_modules/bootstrap/dist/'), ]); -// Rate Limit -const allowlist = ['::1', '::ffff:127.0.0.1']; -const apiLimiter = rateLimit({ - windowMs: 60 * 1000, // 1 minute - max: 6, // limit each IP to 6 requests per windowMs - message: 'Too many requests from this IP, please try again after an minute', - standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers - skipFailedRequests: true, // Don't count failed requests (status >= 400) - skip: (request, response) => allowlist.includes(request.ip), -}); -app.use(apiLimiter); - // 加载路由 app.use('/', danmakuRouter); app.use('/ipinfo', ipinfoRouter); diff --git a/routes/danmaku.js b/routes/danmaku.js index ae450af..12b3efc 100644 --- a/routes/danmaku.js +++ b/routes/danmaku.js @@ -12,6 +12,18 @@ const { const list = [bilibili, mgtv, tencentvideo, youku, iqiyi]; const memory = require("../utils/memory"); const leancloud = require("../utils/leancloud"); +const rateLimit = require('express-rate-limit'); + +// 访问频率限制 +const allowlist = ['::1', '::ffff:127.0.0.1']; +const apiLimiter = rateLimit({ + windowMs: 5 * 60 * 1000, // 5 minute + max: 5, // limit each IP to 5 requests per windowMs + message: 'Too many requests from this IP, please try again later', + standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers + skipFailedRequests: true, // Don't count failed requests (status >= 400) + skip: (request, response) => allowlist.includes(request.ip), +}); async function build_response(url, req) { for (let q = new URLSearchParams(URL.parse(url).query);q.has("url");) { @@ -55,7 +67,7 @@ async function build_response(url, req) { } /* GET home page. */ -router.get("/", async function (req, res) { +router.get("/", apiLimiter, async function (req, res) { leancloud.add("DanmakuAccess", { remoteIP: req.ip, url: req.query.url,