nginx服务器屏蔽网络爬虫程序采集器的办法
网络上有很多讨厌鬼,没日没夜地采集别人的网站,将别人劳动成果据为己有。想到要对于这些不受待见的爬虫,相信很多站长气得牙痒痒的,但又无计可施。采集器频繁地抓取影响了网站的正常运行了,尤其是对于低配服务器,那点可怜的虚拟空间的流量可能没多久就被搞完了。那种经常打不开或者打开很慢的网站,除了服务器配置本身差劲外,很多时候要归功于网络采集器。
经常看到网上有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
- Debian Gtk-Message: Failed to load module “canberra-gtk-module”(已解决)
- 网站没有快照 点击百度快照直接进入源网站了,是什么原因?
- seo判断同一关键词两个网页哪个更有竞争力的方法
- wordpress无插件实现文章浏览数
- mariadb异常 mysqld: Out of memory Centos 创建swap分区解决
- nginx服务器屏蔽网络爬虫程序采集器的办法
- wordpress获取所在分类的上级父栏目id
- 宇秀搜索引擎下拉与相关搜索营销系统升级6.06发布 增加今日头条【功能添加】
- 编译c语言源文件为python ctypes可调用的so库文件提高python性能(实例讲解)
- centos 7 将自带的php5.4升级到php5.6(亲测成功)