通过Nginx参数:http_user_agent,将一些无用的爬虫禁止掉。
配置方法如下:
1、新建配置文件 deny.conf;
内容如下:
#禁止Scrapy|curl等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient))
{
return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" )
{
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$)
{
return 403;
}
2、在网站相关配置引入deny.conf
在网站相关配置中的 location / { 之后引入deny.conf
location / {
……
include deny.conf
……
3、Nginx重启
nginx -s reload
4、测试
使用curl -A 模拟访问
# -A表示User-Agent
# -X表示方法: POST/GET
# -I表示只显示响应头部
curl -X GET -I -A 'YYSpider' http://xxxx.com #YYSpider为无用爬虫
查看结果是否为 HTTP/1.1 403 Forbidden