Chinaunix首页 | 论坛 | 博客
  • 博客访问: 296542
  • 博文数量: 56
  • 博客积分: 3056
  • 博客等级: 中校
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 12:37
个人简介

一不小心出了国

文章分类

全部博文(56)

文章存档

2015年(1)

2011年(1)

2010年(1)

2009年(5)

2008年(14)

2007年(34)

我的朋友

分类: 系统运维

2007-09-11 16:17:09

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