如何在 Express.js 服务器上过滤机器人
How to filter bots on Express.js server
我创建了一个 express node.js API,并将其部署到 AWS(带有 2 个 EC2 实例的 Elasticbeanstalk)。
我正在使用 morgan-body 包在我的端点上记录请求和响应,但似乎有大量机器人正在“攻击”我的 API,这导致每个月产生数百万条日志,这让我付出了代价与datadog的财富。
我已经使用 morgan-boday 的内置“跳过”功能来过滤基于用户代理的请求,但新的请求似乎每天都会出现。
有没有一种方法可以跳过对各种机器人的日志记录,而不用一一检查它们?
这是我的代码,非常感谢您的帮助! :)
morganBody(app, {
skip: (req, res) => {
if(req.get('user-agent')){
if (req.get('user-agent').startsWith('ELB-HealthChecker') ||
req.get('user-agent').startsWith('Mozilla') ||
req.get('user-agent').startsWith('Mozlila')||
req.get('user-agent').startsWith('Python')||
req.get('user-agent').startsWith('python')||
req.get('user-agent').startsWith('l9explore')||
req.get('user-agent').startsWith('Go-http-client')
) {
return true
}
}
return false},
logRequestBody:false,
logResponseBody: false
});```
我通过简单地跳过所有 GET 请求找到了部分答案:
if (req.method === "GET") {
return true
}
但我仍然收到一些 POST 机器人请求,这些请求增加了我的日志量,但我仍然不知道如何过滤它们...
如果您有答案,谢谢!
欢迎使用互联网。 Bot/Spam 检测是需要解决的最琐碎的问题之一。您添加的每个逻辑都可以在客户端被反向逻辑否定。
AWS 本身就有一个工具。
https://aws.amazon.com/waf/features/bot-control/
过滤流量的好策略将基于用例。
一些建议。
- 引入 login/session 只允许经过身份验证 session
- 请求headers过滤
- IP 范围过滤器
- 单个 i.p.
的流量
- 来自不同IP等的请求率
- 不需要时使服务离线。
互联网上应该有更多material。
我创建了一个 express node.js API,并将其部署到 AWS(带有 2 个 EC2 实例的 Elasticbeanstalk)。 我正在使用 morgan-body 包在我的端点上记录请求和响应,但似乎有大量机器人正在“攻击”我的 API,这导致每个月产生数百万条日志,这让我付出了代价与datadog的财富。 我已经使用 morgan-boday 的内置“跳过”功能来过滤基于用户代理的请求,但新的请求似乎每天都会出现。 有没有一种方法可以跳过对各种机器人的日志记录,而不用一一检查它们? 这是我的代码,非常感谢您的帮助! :)
morganBody(app, {
skip: (req, res) => {
if(req.get('user-agent')){
if (req.get('user-agent').startsWith('ELB-HealthChecker') ||
req.get('user-agent').startsWith('Mozilla') ||
req.get('user-agent').startsWith('Mozlila')||
req.get('user-agent').startsWith('Python')||
req.get('user-agent').startsWith('python')||
req.get('user-agent').startsWith('l9explore')||
req.get('user-agent').startsWith('Go-http-client')
) {
return true
}
}
return false},
logRequestBody:false,
logResponseBody: false
});```
我通过简单地跳过所有 GET 请求找到了部分答案:
if (req.method === "GET") {
return true
}
但我仍然收到一些 POST 机器人请求,这些请求增加了我的日志量,但我仍然不知道如何过滤它们... 如果您有答案,谢谢!
欢迎使用互联网。 Bot/Spam 检测是需要解决的最琐碎的问题之一。您添加的每个逻辑都可以在客户端被反向逻辑否定。
AWS 本身就有一个工具。 https://aws.amazon.com/waf/features/bot-control/
过滤流量的好策略将基于用例。
一些建议。
- 引入 login/session 只允许经过身份验证 session
- 请求headers过滤
- IP 范围过滤器
- 单个 i.p. 的流量
- 来自不同IP等的请求率
- 不需要时使服务离线。
互联网上应该有更多material。