现在爬虫太多了,如何在不影响正常用户访问的情况下,限制某些疯狂爬虫的采集呢?下面是Nginx下的配置,放在HTTP块。
# 定义常见爬虫的 User - Agent 正则表达式
map $http_user_agent $myzone {default "";
"~*(YisouSpiderGPTBotcrawlerpythonjavacurlwgethttpclient)" $binary_remote_addr;
}
# 设置爬虫访问频率限制空间 10M内存空间约16万IP,每秒钟访问一次
limit_req_zone $myzone zone=myspider:10m rate=1r/s;
# 限制生效,可以放在Server,Location。burst为请求队列大小,超过5个就直接超时。
limit_req zone=myspider burst=5 nodelay;
#返回的状态码 默认是403
limit_req_status 429;