设置 Nginx 规则以屏蔽指定 User Agent 的网站爬虫

文章目录

    晚上我的一个 wordpress 网站再一次被可恶的爬虫爬挂了。。。

    对方疯狂的爬取网页,且瞬间并发无数个请求,丝毫不考虑我这孱弱的阿里云低配服务器的小身板能否承受住。不出意外,我的网站挂掉了。。。

    没办法,必须得处理一下。

    看了一下 nginx 日志中这些爬虫的请求记录:

    • 每 10 个请求一换 IP
    • 请求头都为 “Scrapy/1.7.3 (+https://scrapy.org)”

    所以通过 IP 规则来屏蔽是不可能了,可以简单地用 User Agent 匹配规则的方式来屏蔽这些爬虫。

    Nginx 配置

    顺便把 Yisou 的爬虫屏蔽了。

    if ($http_user_agent ~* (YisouSpider|Scrapy) ) {
        return 410;
    }
    

    测试

    包含 Scrapy 请求头的测试。

    > curl --user-agent "Scrapy" https://www.sunzhongwei.com
    <html>
    <head><title>410 Gone</title></head>
    <body bgcolor="white">
    <center><h1>410 Gone</h1></center>
    <hr><center>nginx/1.10.3 (Ubuntu)</center>
    </body>
    </html>
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式