反爬虫

如何给网站加入优雅的实时反爬虫策略

江枫思渺然 提交于 2020-02-28 17:25:58
你的网站内容很有价值,希望被google,百度等正规搜索引擎爬虫收录,却不想让那些无节操的山寨爬虫把你的数据扒走坐享其成。本文将探讨如何在网站中加入优雅的反爬虫策略。 【思路】 反爬虫策略要考虑以下几点: 能被google、百度等正规搜索引擎爬虫抓取,不限流量和并发数; 阻止山寨爬虫的抓取; 反爬虫策略应该是实时检测的,而不是通过一段时间后的访问统计分析得出; 误判后的人性化处理(优雅之所在); 大部分的爬虫不是以浏览器方式来访问页面的,爬虫只下载网页的html源代码,不加载包含在页面中的js/css/图片,这是区分爬虫与否的一个关键。一个请求被识别出来不是浏览器访问,一定是爬虫,为了满足上面所说的第1点和第2点,进一步对http头agent进行验证,是否标记为google、百度的spider,严格一点的话应该判别来源IP是否为google、baidu的爬虫IP,这些IP在网上都可以找到。校验出来IP不在白名单就可以阻止访问内容。 当然,有一部分爬虫是以浏览器载入的方式来抓取内容的,所以,即使被识别出来是浏览器访问的来源ip。还要检测这个个ip在一个时间片内的并发数,超过一定阀值,可以认为是爬虫,阻止访问内容。 由于我们的反爬虫策略是基于IP的,会出现误判,尤其是并发量限制的判别。我们需要一种友好的方式来阻止访问。直接返回50x/40x空白或者错误页面是很粗鲁的