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
- 如何区分是竞价(cpc)流量和自然搜索(seo)流量?(已解决)
- wordpress无插件实现文章浏览数
- python检测网页http状态码( 附完整代码)
- 宇秀下拉 2023-9-30号下拉更新案例
- 搜索引擎下拉框及相关搜索推广系统
- [免费]百度竞价创意批量采集器1.0免费下载
- drupal 7 page.tpl.php获取当前页是page或node的方法
- 宇秀搜索引擎下拉及相关搜索推荐营销系统6.0-精确定制每个词:万能key标签【功能添加】
- 百度Spider新增渲染抓取UA公告【百度搜索动态】
- drupal 7 移除自带的 css 和 javascript 及 jQuery.extend(Drupal.settings,