爬虫程序是一种计算机程序,旨在通过执行自动化或重复性任务来模仿或替代人类的操作。爬虫程序执行任务的速度和准确性比真实用户高得多。爬虫程序在互联网上扮演着各种各样的角色,超过一半的网络流量是由爬虫程序产生的。有些爬虫程序非常有用,例如,搜索引擎爬虫程序,这种爬虫程序有助于搜索引擎了解网站内容以返回更准确的搜索结果。聊天爬虫程序可以快速解答客户和用户的提问。许多公司会创建自定义爬虫程序来自动执行内部任务和合作伙伴任务。
有些爬虫程序是“灰色”爬虫程序,没有恶意,但在某些情况下令人讨厌。这些爬虫程序可能合法但干扰性大。例如,来自其他程序的 API 频繁调用您的系统,或者合作伙伴爬虫程序不断对您的站点执行 ping 操作。在许多情况下,您不想阻止这些爬虫程序,只想减缓其速度或更有效地进行管理,以确保不会降低您的网站性能并对您的用户体验产生负面影响。
需要担心的爬虫程序是恶意爬虫程序,即网络犯罪分子用来执行造成用户损失的危险攻击的对抗性恶意爬虫程序,这些攻击包括囤积库存、窃取数据、抓取网站内容和定价信息、在网站上启动被盗凭据以确认有效凭据,甚至运行分布式拒绝服务攻击。恶意爬虫程序通常是僵尸网络的一部分,僵尸网络即一组联网的爬虫程序协同工作以大规模执行这些攻击。
网络爬虫一般分为如下两个阶段:第一阶段,URL库初始化然后开始爬取;第二阶段,爬虫读取没有访问过的URL,来确定它的工作范围。对于所要抓取的URL,具体步骤如下:
(1)获取URL链接;
(2)解析内容,获取URL内的相关数据;
(3)存储有价值的数据;
(4)对新抓取的RL进行规范化;
(5)过滤掉不相关的URL;
(6)将要抓取的URL更新到URL库中;
(7)重复步骤2,直到终止条件为止。
爬虫实现需要设定有效的规则和策略从繁杂无序的页面中提取中需要的关键信息:
指定初始URL选择策略;
检测页面是否更新的重新访问策略;
定义如何避免网站过度访问的约定性策略;
如何部署分布式网络爬虫的并行策略。
网络爬虫主要爬取策略有:深度优先策略、宽度优先策略等等。
网络爬虫本质是是互联网资源的抓取、分析、过滤、存储的过程,一个典型的网络爬虫系统组成主要有控制器,解析器,资源库三部分组成。控制器负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。
网络爬虫短时间内发出大量请求,消耗大量的服务器带宽,可能会影响正常用户访问。另外,数据已成为一个公司的核心资产,企业需要保护自身的核心数据,以维持或提升自身的核心竞争力,因此反爬虫非常重要。
一些爬虫程序还被用于网络攻击、僵尸网络攻击或其他非法目的。
爬虫有一个最基本的特征就是批量获取,而反爬虫机制也是根据这个特征来判断并进行反爬虫的。