Ngnix上防止站点被采集,并防止垃圾搜索引擎抓取

屏蔽采集器、以及垃圾搜索引擎的原因,除了【公司内部站点,不希望内容被搜索引擎爬取】外,还有以下几点:

  1. 采集器大多时候用于采集站点内容,然后克隆出一个混搭网站,对于原创不公平。
  2. 内容农场,不仅采集其他站点内容,   为了引流,而且会生成无意义的内容,单纯的垃圾。
  3. 国内某些搜索引擎除了广告外,搜索的内容基本无用,并且无法识别上面垃圾内容,相当于二次垃圾制造器。
  4. 由于ChatGPT的火爆, 某些大厂商采集站点内容, 采集完成后,流量归零。 无法做到稳定的引用
  5. 国内的环境, 哪怕是 完全符合法律法规,并且政治正确的内容,也需要大厂商们二次同意,但这些大厂商们基于赚钱的需求,会动不动就限流删贴,导致普通用户任人宰割。

基于以上需求,需要屏蔽这些采集器,以及垃圾爬虫。

对于Nginx来说,可以参考我的配置(根据需要增加删除):

1. 新建/etc/nginx/myconf/agent_deny.conf 文件,内容如下

#禁止Scrapy等工具的抓取
if ( $http_user_agent ~* (Scrapy|Curl|HttpClient|Python-urllib) ) {
        return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~* "FeedDemon|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Swiftbot|ZmEu|oBot|jaunty|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 上每天几百条的垃圾评论也变为了零。

本文适合纯靠爱发电的博主。

评论列表: