前言
做站的时候有些时候网站访问极其之慢,也不想被攻击的样子,查看网站后台日志,发现都是谷歌及其他国外不知名的搜索引擎爬虫疯狂不间断的爬取网站上,这些爬虫对于国内的我们其实并无卵用,下面通过两种方式来屏蔽他们,看官请看:
使用”robots.txt”协议
在网站根目录新建空白文件,命名为”robots.txt”,将下面内容复制其中。
User-agent: Baiduspider
Disallow:
User-agent: YisouSpider
Disallow:
User-agent: 360Spider
Disallow:
User-agent: Sosospider
Disallow:
User-agent: sogou spider
Disallow:
User-agent: YodaoBot
Disallow:
User-agent: Googlebot
Disallow:
User-agent: bingbot
Disallow:
User-agent: *
Disallow: /
Nginx配置
有些不按照规范爬取的爬虫会忽略你的robots.txt协议,我们采取通过Nginx判断来访User-Agent来屏蔽
#禁止Scrapy等工具的抓取
if ($http_user_agent ~ (Scrapy|Curl|HttpClient)) {
return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "YandexBot|Bytespider|FeedDemon|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|HttpClient|MJ12bot|heritrix|Ezooms|^$" ) {
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
可以根据你的需求更改屏蔽的爬虫。将上面代码添加到”location / { }” 段里面,比如伪静态规则里面即可。
注意:~为模糊匹配,~*为模糊匹配不区分大小写
来简单测试一下:
curl -I -A “Mozilla/5.0 YandexBot demo” http://你的域名
返回403表示设置成功!