现在有许多初学者学习网络爬虫,但他们不懂得控制速度,导致服务器资源浪费。通过 Nginx 的简单配置,能过滤一小部分这类爬虫。
方法一:通过 User-Agent 过滤
Nginx 参考配置如下:
location / {
if ($http_user_agent ~* "scrapy|python|curl|java|wget|httpclient|okhttp") {
return 503;
}
# 正常请求
}
这里只列出了部分爬虫的 User-Agent,需要更多请参考:GitHub - JayBizzle/Crawler-Detect
注意:User-Agent 很容易修改
方法二:block IP
通过禁止某个 IP 或者某个 IP 段访问,也能起到一定效果。 Nginx 示例配置如下:
deny 178.238.234.1;
deny 1.32.128.0/18;
方法三:rate limit
通过限制某个 IP 的访问频率,避免一部分 CC (Challenge Collapsar)攻击。
Nginx 示例配置如下: