爬虫程序是一种计算机程序,旨在通过执行自动化或重复性任务来模仿或替代人类的操作。爬虫程序执行任务的速度和准确性比真实用户高得多。爬虫程序在互联网上扮演着各种各样的角色,超过一半的网络流量是由爬虫程序产生的。有些爬虫程序非常有用,例如,搜索引擎爬虫程序,这种爬虫程序有助于搜索引擎了解网站内容以返回更准确的搜索结果。聊天爬虫程序可以快速解答客户和用户的提问。许多公司会创建自定义爬虫程序来自动执行内部任务和合作伙伴任务。
有些爬虫程序是“灰色”爬虫程序,没有恶意,但在某些情况下令人讨厌。这些爬虫程序可能合法但干扰性大。例如,来自其他程序的 API 频繁调用您的系统,或者合作伙伴爬虫程序不断对您的站点执行 ping 操作。在许多情况下,您不想阻止这些爬虫程序,只想减缓其速度或更有效地进行管理,以确保不会降低您的网站性能并对您的用户体验产生负面影响。
需要担心的爬虫程序是恶意爬虫程序,即网络犯罪分子用来执行造成用户损失的危险攻击的对抗性恶意爬虫程序,这些攻击包括囤积库存、窃取数据、抓取网站内容和定价信息、在网站上启动被盗凭据以确认有效凭据,甚至运行分布式拒绝服务攻击。恶意爬虫程序通常是僵尸网络的一部分,僵尸网络即一组联网的爬虫程序协同工作以大规模执行这些攻击。
网络爬虫工作原理是什么?
网络爬虫一般分为如下两个阶段:第一阶段,URL库初始化然后开始爬取;第二阶段,爬虫读取没有访问过的URL,来确定它的工作范围。对于所要抓取的URL,具体步骤如下:
(1)获取URL链接;
(2)解析内容,获取URL内的相关数据;
(3)存储有价值的数据;
(4)对新抓取的RL进行规范化;
(5)过滤掉不相关的URL;
(6)将要抓取的URL更新到URL库中;
(7)重复步骤2,直到终止条件为止。
爬虫实现策略包括哪些?
爬虫实现需要设定有效的规则和策略从繁杂无序的页面中提取中需要的关键信息:
指定初始URL选择策略;
检测页面是否更新的重新访问策略;
定义如何避免网站过度访问的约定性策略;
如何部署分布式网络爬虫的并行策略。
网络爬虫主要爬取策略有:深度优先策略、宽度优先策略等等。
一个典型的网络爬虫系统组成包括哪些?
网络爬虫本质是是互联网资源的抓取、分析、过滤、存储的过程,一个典型的网络爬虫系统组成主要有控制器,解析器,资源库三部分组成。控制器负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。
网络爬虫有什么危害?
网络爬虫短时间内发出大量请求,消耗大量的服务器带宽,可能会影响正常用户访问。另外,数据已成为一个公司的核心资产,企业需要保护自身的核心数据,以维持或提升自身的核心竞争力,因此反爬虫非常重要。
一些爬虫程序还被用于网络攻击、僵尸网络攻击或其他非法目的。
- 撞库爬虫程序会使用密码破解工具在未经授权的情况下访问用户帐户,并窃取会员积分和信用卡信息等资产。
- 库存囤积爬虫程序会抢夺限量供应的高价值商品,例如运动鞋、游戏机和音乐会门票,从而阻止真实用户购买。
- 垃圾邮件爬虫程序会搜索网站以获取电子邮件地址,从而供垃圾邮件发送者使用。
- 文件共享爬虫程序会观察用户的搜索查询并提供虚假链接,使攻击者能够用病毒或恶意软件感染计算机。
- 流量爬虫程序模仿真实用户在网络上的活动来提高流量并增加网站的点击率。
- DDoS 或分布式拒绝服务僵尸网络试图用大量请求使网站不堪重负,从而让网站离线或提出勒索条件,直到其特定的要求被满足。
- 社交媒体爬虫程序在社交媒体平台上创建虚假帐户以支持某些言论或增加用户或社交媒体帐户的粉丝。
- 下载爬虫程序会自动下载软件或恶意软件,以增加下载量并人为地帮助应用程序提高排名。
常见的反爬虫技术手段有哪些?
爬虫有一个最基本的特征就是批量获取,而反爬虫机制也是根据这个特征来判断并进行反爬虫的。
- 限制IP:设定单个IP访问的阈值,如果一个IP 地址在短时间内访问频率超过阈值,可以暂时对这个IP予以封禁;监控到IP的请求频率,如果一直处于同一个频率,很可能是爬虫,也要进行封禁。
- 基于Headers:Headers 是区分浏览器行为和机器行为最简单的方法。对于每个浏览器,访问网站都会有其固定的useragent,而网络爬虫的User-agent一般为空缺的,审查访问的请求头,如果是爬虫框架的形式,则判定为机器人用户,返回403错误,禁止访问。
- 添加人机识别的验证码:验证码作为一种人机识别手段,其主要作用是区分正常人和机器的操作,拦截恶意行为。传统的图形验证码在OCR、神经网络面前越来越形同无物,建议使用新一代行为式验证码,采用深度学习,快速准确的进行人机判断,具有可靠的安全性。
- 采用数据异步加载:网页实现异步更新,爬虫所抓取的都是一个网站起始的HTML代码,不是异步刷新后的代码,可以将网站中受保护的部分使用AJAX技术异步加载到HTML中,既可以让用户正常访问,又可以保护内容不被网络爬虫爬取。
- 登录与cookies:校验Cookie的值来判定发起访问请求的是否是爬虫,通过登录ccokies反爬。
- 通过JS脚本加密网页内容。
- 企业可以通过部署爬虫程序管理解决方案来防止爬虫程序和僵尸网络干扰系统或影响用户体验。出色的反爬虫程序解决方案将允许非恶意爬虫程序活动,同时阻止恶意活动和僵尸网络攻击。务必要记住,即使是非恶意爬虫程序也需要管理。高级爬虫程序安全解决方案支持使用特定技术,例如在您的网站有大量真实用户流量时减缓非恶意爬虫程序的速度。