我創建了一個 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
});```
uj5u.com熱心網友回復:
歡迎上網。機器人/垃圾郵件檢測是最需要解決的問題之一。您添加的每個邏輯都可以在客戶端被反向邏輯否定。
AWS 本身有一個工具。 https://aws.amazon.com/waf/features/bot-control/
過濾流量的好策略將基于用例。
一些建議。
- 引入登錄/會話只允許經過身份驗證的會話
- 請求頭過濾
- IP 范圍過濾器
- 單個ip的流量
- 來自不同 IP 的請求率等。
- 不需要時使服務脫機。
互聯網上應該有更多可用的材料。
uj5u.com熱心網友回復:
通過簡單地跳過所有 GET 請求,我找到了部分答案:
if (req.method === "GET") {
return true
}
但是我仍然收到一些 POST 請求,這些請求增加了我的日志量,但我仍然不知道如何過濾它們......謝謝你的回答!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/436470.html
