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

更新日期: 2020-02-15 阅读次数: 6531 字数: 228 分类: Nginx

晚上我的一个 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>

tags: nginx 配置 屏蔽爬虫

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式