nginx服务器屏蔽网络爬虫程序采集器的办法

作者: 杨圣亮 分类: 服务器 发布时间: 2018-09-08 18:29:22

网络上有很多讨厌鬼,没日没夜地采集别人的网站,将别人劳动成果据为己有。想到要对于这些不受待见的爬虫,相信很多站长气得牙痒痒的,但又无计可施。采集器频繁地抓取影响了网站的正常运行了,尤其是对于低配服务器,那点可怜的虚拟空间的流量可能没多久就被搞完了。那种经常打不开或者打开很慢的网站,除了服务器配置本身差劲外,很多时候要归功于网络采集器。

经常看到网上有seo或站长朋友提到用robots.txt文件的 User-Agent配合Disallow指令来实现屏蔽。指点别人在网站根目录创建robots.txt文件了,写了一堆的指令,去禁止那些不受欢迎的爬虫。满心欢喜地以为就做到屏蔽效果了,达到目的了。其实不然,首先要明白一点,robots.txt只是网络机器人(或者蜘蛛)的一种抓取的条约,注意,仅仅是条约,定义了哪些能抓? 哪些内容不能抓? 欢迎哪些爬虫抓取?不欢迎哪些爬虫抓取? 

这样的条约,其实是没有约束力的,爬虫是否遵守这些条约是另一回事,对于爬虫中的正人君子(正规搜索引擎)确实有效,它们来到网站后,通常会查看一下robots.txt文件,老实地按照站长的规则来抓取网页,然而,对那些采集爬虫有效吗?很确定地说:无效,它们完全无视robots.txt,它们只要网站的内容,更有甚者,看到那些明令指定不能抓取的网页更是加大力度来采集,既然不准抓取,说不定有什么好东西呢?

所以说,robots.txt不是万能钥匙,能防君子,不能防小人。但也不是没有办法,作为web服务器的龙头:Apache和nginx其实都有屏蔽策略,关键是要会用。下面说一种我之前的单位使用的一种禁止策略,该策略能屏蔽一部分程序的采集。现将代码放在下面,操作方法:找到 nginx.conf配置文件,将下面的代码放到server里。

#禁止爬虫工具和不相关搜索引擎的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient|python|phantomjs|EtaoSpider|HuihuiSpider|WochachaSpider|GwdangSpider|YYSpider|MJ12bot|^$)) {
    return 403;
}

最终成这样:

server
    {
    #禁止爬虫工具和不相关搜索引擎的抓取
    if ($http_user_agent ~* (Scrapy|Curl|HttpClient|python|phantomjs|EtaoSpider|HuihuiSpider|WochachaSpider|GwdangSpider|YYSpider|MJ12bot|^$)) {
    return 403;
   
    }
  # 下面是其他的配置项
  
 }

保存配置文件,使用命令行(centos):   

systemctl restart nginx

重启nginx服务生效。本文抛砖引玉,仅可以对付一般的网络采集程序,站长与采集者的战斗才刚刚开始。更多nignx配置见官方文档:nginx.org/en/docs

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

3  ×    =  30

微信