我有一个资料站,资料收集的比较全,引来的抓我页面的人自然也特别多,最孜孜不倦的就是“阿里巴巴”,下面我说说我分析出来的抓取的特性,以及防抓取的思路。
抓取特点分析
日志中固定时间段内大量相同IP访问不同页面
通常如果没有伪造agent,那么这些抓取的IP的agent是比较稀奇古怪的,要么就是没有
通常没有referer,而且有的话referer也可能是错误的,也就是无法到达的访问,比如所有referer都相同
通常只下载页面文件而不下载图片,JS,css等
最简单的防抓取的办法
这个办法其实就是使用刚才分析的第一条和最后一条,对日志就行分析。
第一步:在你的页面内隐藏一个css或js这类的文件,这个文件rewrite到程序,用程序生成并指定不需要缓存。这样你的日志里面每正常访问一次页面,也必定会正常访问一次那个js或css文件。(这一步可以省略,我自己就省略了)
第二步:按时分析日志,找出pv超过设定的阀值的IP,且页面访问量和css文件访问量差距过大的IP(这一步我省略了,效果几乎没打折,因为超过阀值的正常访问者几乎没有)(我网站pv1:10左右,所以我设定的阀值是100)。
第三步:对第二步找出来的IP进行过滤,分析,处理。我建议的处理步骤如下:
忽略搜索引擎BOT的ip
建立黑名单,恶意IP直接用iptables drop掉
对于IP极多的公司(比如阿里巴巴),可以对整个IP段,用程序软处理,比如每个内容页要求输入验证码。这样既达到防抓效果,有不太损害正常访问者的利益
在我这样设定之后,要抓取我网站,唯一的办法就是每隔90条换一次IP,过几天我把,我写的分析日志的PHP代码放上来,