fix: 修改速率限制

This commit is contained in:
lyz05
2023-01-16 18:05:34 +08:00
parent 2594f3f00e
commit bda437b352
2 changed files with 13 additions and 14 deletions

13
app.js
View File

@@ -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);

View File

@@ -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,