搜索引擎爬虫来你网站抓内容,本来是好事——不抓你怎么收录,不收录哪来的流量。可要是爬虫来太猛,好事就变坏事:服务器日志里全是爬虫的请求,CPU、带宽被占得满满的,真人用户访问反而变慢。尤其是那些不守规矩的爬虫,UA伪装成搜索引擎,实际是采集程序,日夜不停地抓,把服务器当免费CDN使。今天就把爬虫管理的正确姿势给你讲清楚:哪些爬虫要欢迎,哪些要限速,哪些要直接屏蔽。

先分清:好爬虫和坏爬虫
爬虫也分好坏,管理之前先分清:好爬虫是搜索引擎的官方蜘蛛,比如百度的Baiduspider、谷歌的Googlebot,它们守规矩、认robots协议、有节制的抓取,是帮你收录的,要欢迎;坏爬虫就多了,有的伪装成搜索引擎蜘蛛骗你放行,实际是采集内容,有的直接乱抓一气,把服务器当公共资源。区分方法也不难:搜索引擎官方会公布蜘蛛的IP段和UA特征,你拿日志里的IP去比对一下,官方蜘蛛能对得上,对不上的就值得怀疑。
好爬虫太勤快,怎么让它慢下来
就算官方蜘蛛,抓太猛也会影响服务器。想让它按你的节奏来,最正规的方式是robots.txt里的Crawl-delay指令,可以给某个蜘蛛设置抓取间隔,比如告诉百度蜘蛛每次抓取间隔几秒;更精细的做法是配合网站的响应速度,服务器响应越快蜘蛛越勤快,页面慢蜘蛛来得也少,把网站做好也是变相管理爬虫。还有一点:robots里别把重要的动态页面路径全屏蔽了,那会影响正常收录,之前讲robots的时候说过,屏蔽要精准。
坏爬虫怎么处理:先验证再屏蔽
遇到可疑的高频爬虫,先别急着屏蔽,万一是官方蜘蛛就误伤了。先验证:把日志里的IP和UA拿去搜索引擎官方渠道核对,确认是官方的就放行或者限速,确认是伪造的或者来路不明的,再上屏蔽手段。屏蔽可以在服务器防火墙层面按IP封,也可以在Web服务器配置里按UA特征拦,或者用robots禁止特定UA。封完观察几天日志,确认坏爬虫不再来了,但别误伤正常访客和官方蜘蛛。
用频率限制给爬虫套缰绳
比单纯封IP更精细的,是给爬虫做频率限制:在Web服务器层面限制每个来源IP单位时间内的请求数,超过就返回429或者延迟处理。这样做的好处是:官方蜘蛛正常抓取不受影响(它的频率在合理范围),疯跑的坏爬虫会被自动限速甚至劝退,而且不用一个个去封IP,省心。设置频率限制的时候注意阈值要合理,别把正常用户也限了,动态页面和静态资源的限制也可以分开设,精细一点效果好一点。
被爬虫拖垮了怎么紧急处理
如果服务器已经被爬虫拖得快挂了,先止血:用日志分析找出请求量最大的来源IP和UA,在高防或者防火墙里临时封掉最凶的那批,先把服务器救回来;然后分析这些爬虫是官方蜘蛛还是坏爬虫,分别按上面的方式处理;最后看看是不是网站本身有问题吸引了爬虫,比如生成了大量动态URL让蜘蛛无限抓取,该优化的优化。救火之后别忘了复盘,把爬虫管理的规则配好,别让同一个问题反复发生。
顺带说说日志分析这步怎么做
管理爬虫离不开日志分析,不然你都不知道谁在抓你的站。最简单的办法:用之前讲过的awk、sort这些命令,把访问日志按IP和UA统计一下,请求量前十的来源一眼就能看出来,配合grep把搜索引擎蜘蛛的特征过滤出来,好爬虫坏爬虫就分清楚了。日志量大的话,也可以接入现成的日志分析工具,可视化图表看着更直观。分析完别忘了定期看一眼,爬虫的行为会变,新爬虫会冒出来,管理规则也得跟着调,一劳永逸的想法要不得。
对了,robots里给坏爬虫设禁止规则别指望它自觉遵守——坏爬虫根本不看robots,那只是君子协议。对付坏爬虫,防火墙封IP、频率限制才是硬手段,robots那招只对守规矩的官方蜘蛛有用。别用错了工具,还以为规则生效了。
总结一句:爬虫管理不是把爬虫都赶走,而是把好爬虫留下来、坏爬虫挡门外、太勤快的拴住。分清好坏、精准控制、频率限制、紧急止血,这四招用好了,爬虫就不再是服务器的负担,而是帮你收录送流量的好帮手。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!