屏蔽采集器、以及垃圾搜索引擎的原因,除了【公司内部站点,不希望内容被搜索引擎爬取】外,还有以下几点:
如: 在B站上看某些UP主的内容, 发现某电子产品弄虚作假,虚标功率、并且安全不合格, 如果说出来,轻则限流、重则删贴,更严重的会吃官司。
基于以上需求,需要屏蔽这些采集器,以及垃圾爬虫。
对于Nginx来说,可以参考我的配置(根据需要增加删除):
1. 新建/etc/nginx/myconf/agent_deny.conf 文件,内容如下
#禁止Scrapy等工具的抓取
if ( $http_user_agent ~* (Scrapy|Curl|HttpClient) ) {
return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~* "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|EasouSpider|DotBot|Ezooms|^$" ) {
return 403;
}
#禁止垃圾蜘蛛爬取
if ($http_user_agent ~* "qihoobot|Baiduspider|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot")
{
return 403;
}
2. 在需要限制的站点配置文件里包含该文件
server {
server_name rangotec.com www.rangotec.com;
# 其他略....
location / {
# 屏蔽采集站
include /etc/nginx/myconf/agent_deny.conf;
# 其他略....
}
# ...
}
3. 测试效果如下,如果程序使用Python-urllib 来采集,则返回403禁止访问。
$ curl -A 'Python-urllib' https://rangotec.com
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
效果是 wordpress 上每天几百条的垃圾评论也变为了零。
本文适合纯靠爱发电的博主。