一种针对爬虫的数据处理方法
【技术领域】
[0001]本发明涉及大数据处理技术领域,具体是一种针对爬虫的数据处理方法。
【背景技术】
[0002]网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。通过分析apache日志发现,某系统40%的带宽和服务器资源都消耗在爬虫上,如果除去10%_15%搜索引擎的爬虫,做好反爬虫策略,能节省20%_25%的资源,其实是变向优化了 web系统。
[0003]爬虫请求是类似httpClient的机制或curl、wget的命令,而正常用户请求一般走浏览器。爬虫请求一般不会执行页面里的异步JavaScript操作,而用户请求则执行Jquery提供的异步JavaScript操作。
【发明内容】
[0004]本发明的目的在于提供一种针对爬虫的数据处理方法,可以以有效的区分爬虫请求和正常用户请求,从而将爬虫请求阻挡,节省系统资源。
[0005]本发明的目的主要通过以下技术方案实现:一种针对爬虫的数据处理方法,包括以下步骤:
步骤1:管理登录并利用黑白名单池在后台录入白名单,并将黑名单的操作时间设定为X分钟有效;
步骤2:判断当前登录页面的IP为黑名单还是白名单;
步骤3:当前登录页面的IP为白名单时,让该IP进行正常页面逻辑操作;
步骤4:当前登录页面的IP为黑名单时,让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,同时让该IP进行正常页面逻辑操作;
步骤5:当前登录页面的IP为非黑名单和非白名单时,利用流量统计工具进行筛查,进入计数器池,在Cache计数器会在Cache计数器过期前加I操作,然后比较累加后的计数值和阀值,当计数值小于阀值,判定该IP为非爬虫,让该IP进行正常页面逻辑操作,当计数值大于阀值,将该IP设置成黑名单,并让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,若该IP不填写验证码,则判定该IP为爬虫;
步骤6:当该IP退出登录页面时,异步的JS请求,cache计数值减I操作。
[0006]上述方法的设置原理在于:由于爬虫请求是类似httpClient的机制或curl、wget的命令,而正常用户请求一般走浏览器。爬虫请求一般不会执行页面里的异步JavaScript操作,而用户请求则执行Jquery提供的异步JavaScript操作。
[0007]因此,本发明利用异步JavaScript操作,从而筛选出爬虫请求,并将爬虫请求设置成黑名单。同时由于网络IP的变化,有时同一个IP前一天为黑名单,而第二天则是正常用户登录请求,因此不能将所有的IP设置为一成不变的固定死请求IP,因此需要实时沿着当前黑名单,同时利用异步JavaScript操作区分当前黑名单是否继续为爬虫请求。
[0008]WEB系统都是走http协议跟WEB容器连通的,每次请求至少会产生一次客户端与服务器的tcp连接。通过netstat命令,就可以查看到当前同时连接服务器所对应的IP以及连接量。命令/bin/netstat _nat _n | grep 80 —般都几百或几千个。同一个IP对应的连接数超过我们观察到的一个阀值时,就可判断为非正常的用户请求。阀值设定至关重要,大型网吧或同一个学校、公司出来的IP也可能会被误判为非法请求。此策略包括两个定时脚本,一个定时封IP ( tcpForbidCmd.sh ),一个定时释放IP ( tcpReleaseCmd.sh),分别是每隔5分钟和40分钟各执行一次。此策略相当于给我们的系统设定了门槛,类似公路交通系统内,某马路设定限高4米栏杆,高于4米的车不能在此通行。该策略能预防恶意的或新手写的请求频率不规则的爬虫。
[0009]本发明的反爬虫过滤机制实现起来也比较简单,我们可以用memcached或本地内存来做访问计数器,在缓存过期之前的时间段内(如3分钟),每个IP访问一次,计数器加1,缓存的KEY包括IP,通过计数器得到的值,判断超过一个阀值,这个IP很可能有问题,那么就可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话,当然不可能填写验证码,就被拒掉了,保护了后端的资源。阀值的设定也是很重要的,不同的系统不一样。我们将这个过滤机制改进一下,将更加准确。即我们在网页的最下面添加一个JS的异步请求,此异步请求用来减计数器的值,进页面时对IP进行加值,出页面时减值,生成一个差值。根据我们之前的分析,爬虫不会执行异步JS减值请求。这样可以从生成的值的大小上判断这个IP是否为爬虫。
[0010]X分钟设置为30分钟。
[0011]设定计数器池Y分钟后过期,Y分钟设置成3分钟。
[0012]本发明的优点在于:成本低,可以以有效的区分爬虫请求和正常用户请求,从而将爬虫请求阻挡,节省系统资源,同时避免误判断正常用户请求。
【附图说明】
[0013]图1为本发明的流程示意图。
【具体实施方式】
[0014]下面结合实施例及附图对本发明作进一步的详细说明,但本发明的实施方式不限于此。
[0015]实施例1:
如图1所示。
[0016]一种针对爬虫的数据处理方法,包括以下步骤:
步骤1:管理登录并利用黑白名单池在后台录入白名单,并将黑名单的操作时间设定为X分钟有效;
步骤2:判断当前登录页面的IP为黑名单还是白名单;
步骤3:当前登录页面的IP为白名单时,让该IP进行正常页面逻辑操作;
步骤4:当前登录页面的IP为黑名单时,让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,同时让该IP进行正常页面逻辑操作;
步骤5:当前登录页面的IP为非黑名单和非白名单时,利用流量统计工具进行筛查,进入计数器池,在Cache计数器会在Cache计数器过期前加I操作,然后比较累加后的计数值和阀值,当计数值小于阀值,判定该IP为非爬虫,让该IP进行正常页面逻辑操作,当计数值大于阀值,将该IP设置成黑名单,并让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,若该IP不填写验证码,则判定该IP为爬虫;
步骤6:当该IP退出登录页面时,异步的JS请求,cache计数值减I操作。
[0017]上述方法的设置原理在于:由于爬虫请求是类似httpClient的机制或curl、wget的命令,而正常用户请求一般走浏览器。爬虫请求一般不会执行页面里的异步JavaScript操作,而用户请求则执行Jquery提供的异步JavaScript操作。
[0018]因此,本发明利用异步JavaScript操作,从而筛选出爬虫请求,并将爬虫请求设置成黑名单。同时由于网络IP的变化,有时同一个IP前一天为黑名单,而第二天则是正常用户登录请求,因此不能将所有的IP设置为一成不变的固定死请求IP,因此需要实时沿着当前黑名单,同时利用异步JavaScript操作区分当前黑名单是否继续为爬虫请求。
[0019]WEB系统都是走http协议跟WEB容器连通的,每次请求至少会产生一次客户端与服务器的tcp连接。通过netstat命令,就可以查看到当前同时连接服务器所对应的IP以及连接量。命令/bin/netstat _nat _n | grep 80 —般都几百或几千个。同一个IP对应的连接数超过我们观察到的一个阀值时,就可判断为非正常的用户请求。阀值设定至关重要,大型网吧或同一个学校、公司出来的IP也可能会被误判为非法请求。此策略包括两个定时脚本,一个定时封IP ( tcpForbidCmd.sh ),一个定时释放IP ( tcpReleaseCmd.sh),分别是每隔5分钟和40分钟各执行一次。此策略相当于给我们的系统设定了门槛,类似公路交通系统内,某马路设定限高4米栏杆,高于4米的车不能在此通行。该策略能预防恶意的或新手写的请求频率不规则的爬虫。
[0020]本发明的反爬虫过滤机制实现起来也比较简单,我们可以用memcached或本地内存来做访问计数器,在缓存过期之前的时间段内(如3分钟),每个IP访问一次,计数器加1,缓存的KEY包括IP,通过计数器得到的值,判断超过一个阀值,这个IP很可能有问题,那么就可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话,当然不可能填写验证码,就被拒掉了,保护了后端的资源。阀值的设定也是很重要的,不同的系统不一样。我们将这个过滤机制改进一下,将更加准确。即我们在网页的最下面添加一个JS的异步请求,此异步请求用来减计数器的值,进页面时对IP进行加值,出页面时减值,生成一个差值。根据我们之前的分析,爬虫不会执行异步JS减值请求。这样可以从生成的值的大小上判断这个IP是否为爬虫。
[0021 ] X分钟设置为30分钟。
[0022]设定计数器池Y分钟后过期,Y分钟设置成3分钟。
[0023]如上所述,则能很好的实现本发明。
【主权项】
1.一种针对爬虫的数据处理方法,其特征在于:包括以下步骤: 步骤1:管理登录并利用黑白名单池在后台录入白名单,并将黑名单的操作时间设定为X分钟有效; 步骤2:判断当前登录页面的IP为黑名单还是白名单; 步骤3:当前登录页面的IP为白名单时,让该IP进行正常页面逻辑操作; 步骤4:当前登录页面的IP为黑名单时,让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,同时让该IP进行正常页面逻辑操作; 步骤5:当前登录页面的IP为非黑名单和非白名单时,利用流量统计工具进行筛查,进入计数器池,在Cache计数器会在Cache计数器过期前加I操作,然后比较累加后的计数值和阀值,当计数值小于阀值,判定该IP为非爬虫,让该IP进行正常页面逻辑操作,当计数值大于阀值,将该IP设置成黑名单,并让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,若该IP不填写验证码,则判定该IP为爬虫; 步骤6:当该IP退出登录页面时,异步的JS请求,cache计数值减I操作。2.根据权利要求1所述的一种针对爬虫的数据处理方法,其特征在于:X分钟设置为30分钟。3.根据权利要求1所述的一种针对爬虫的数据处理方法,其特征在于:设定计数器池Y分钟后过期,Y分钟设置成3分钟。
【专利摘要】本发明公开了一种针对爬虫的数据处理方法,步骤1:管理登录并利用黑白名单池在后台录入白名单,并将黑名单的操作时间设定为X分钟有效;判断当前登录页面的IP为黑名单还是白名单;步骤3:当前登录页面的IP为白名单时,让该IP进行正常页面逻辑操作;步骤4:当前登录页面的IP为黑名单时,让该IP进入验证码页面操作,在该IP写完验证码后,释放该IP不在为黑名单,让该IP进行正常页面逻辑操作;步骤5:当前登录页面的IP为非黑名单和非白名单时,进入计数器池,在Cache计数器会在Cache计数器过期前加1操作,比较累加后的计数值和阀值,当计数值小于阀值,判定该IP为非爬虫,当计数值大于阀值,则判定该IP为爬虫。
【IPC分类】H04L29/08, H04L29/06
【公开号】CN104902008
【申请号】CN201510200123
【发明人】严澜
【申请人】成都创行信息科技有限公司
【公开日】2015年9月9日
【申请日】2015年4月26日