google/baidu等“爬虫”引导方案
时间:2007-09-11 来源:fengshihua
“爬虫”可畏啊!即爱又恨!原先还以为google要稍微文明点,没想到现在要么不来,一来就上百个,而且每周都至少来一次,JBOSS被抓得当机了好几次,我们除了在不断的优化性能,不得不想办法修改架构!
基本思路是这样的,在不影响正常访问的情况想,将爬虫和用户的访问分开,并且爬虫爬过去的东西和用户访问的内容应该是一样的,如图所示:
500)this.width=500;" border=0>
该方案主要是基于apache对HTTP请求头的判断,在RewriteRule里添加两条配置:
RewriteCond %{HTTP_USER_AGENT} ^Googlebot/2.*
RewriteRule ^/(.*) http://spider:8000/$1 [P,L] 注:通过内网跳转到目标服务器的8000端口 并在hosts文件里将spider指向目标主机。 针对公司的服务器架构(环境架构 squid+apache+jboss)我设计了两套方案,方案一:将“爬虫”引向服务器后台;方案二:在其中一台较空的服务器上安装虚拟机,然后在虚拟机上配置一个WEB前台。两种方案各有优缺点,方案一的优点在于配置起来比较省力,只要在原基础上增加些配置就可用来,但爬虫一但过来,后台的负担在短时间内会比较大,有可能会影响公司内部的后台操作;方案二的优点是基本完全独立开来,即使虚拟机当机也不影响正常用户访问,缺点是配置稍微复杂了点。 500)this.width=500;" border=0> 两套方案都使用了squid的缓存,在本地模拟测试的时候两套方案都可行。执行的时候有一些具体的配置需要注意一下,否则可能会出现proxy error问题。在引导过来的服务上的Rewrite规则里需要增加一下配置: RewriteRule ^spider(.*) http://www.yourdomain.com/$1 [P,L] 在hosts文件里spider指向127.0.0.1。 具体的应用可能都会不一样,这里只是提供了本人的一个有关对付“爬虫”的思路!
RewriteRule ^/(.*) http://spider:8000/$1 [P,L] 注:通过内网跳转到目标服务器的8000端口 并在hosts文件里将spider指向目标主机。 针对公司的服务器架构(环境架构 squid+apache+jboss)我设计了两套方案,方案一:将“爬虫”引向服务器后台;方案二:在其中一台较空的服务器上安装虚拟机,然后在虚拟机上配置一个WEB前台。两种方案各有优缺点,方案一的优点在于配置起来比较省力,只要在原基础上增加些配置就可用来,但爬虫一但过来,后台的负担在短时间内会比较大,有可能会影响公司内部的后台操作;方案二的优点是基本完全独立开来,即使虚拟机当机也不影响正常用户访问,缺点是配置稍微复杂了点。 500)this.width=500;" border=0> 两套方案都使用了squid的缓存,在本地模拟测试的时候两套方案都可行。执行的时候有一些具体的配置需要注意一下,否则可能会出现proxy error问题。在引导过来的服务上的Rewrite规则里需要增加一下配置: RewriteRule ^spider(.*) http://www.yourdomain.com/$1 [P,L] 在hosts文件里spider指向127.0.0.1。 具体的应用可能都会不一样,这里只是提供了本人的一个有关对付“爬虫”的思路!
相关阅读 更多 +