nginx批量屏蔽非法user-agent

最近公司开始进行非法请求排查了, 看了眼某app的日志, 发现了一些奇怪的请求, 明明我们没有做微信小程序, 却有不少来自Mozilla/5.0 (Linux; Android 8.1.0; vivo X20A Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.62 XWEB/2797 MMWEBSDK/20210501 Mobile Safari/537.36 MMWEBID/6473 MicroMessenger/8.0.6.1900(0x2800063B) Process/appbrand0 WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android的请求, 其中的MiniProgramEnv格外显眼, 很明显, API被别人白嫖了...

nginx简单的过滤请求方法

location / {
    if ($http_user_agent ~* "wget") {return 403;}
}

进阶

include /etc/nginx/ua_blacklist;
server {
    server_name www.xiaoc.cn;
    listen 80;

    location / {
        if ($block_ua) {return 403;}
    }
}

/etc/nginx/ua_blacklist内容

map $http_user_agent $block_ua {
    default           0;
    ~*miniprogramenv  1;
}

大功告成, 这样在请求ua中带了miniprogramenv的(不区分大小写), 就会直接返回403啦!
来源: 国外博客

发表评论

您的电子邮箱地址不会被公开。