©作者 | leo
01 什么是爬虫?
爬虫,见名知义,就好似一个探索的小机器人,模拟人的行为,扩散到网络的各个角落,按照一定的规则搜集整理数据,并且将他们反馈回来。这是一个很形象的方式来描述爬虫的原理。
技术角度,爬虫主要是根据一定的程序规则或者技术指标,通过网络请求的方式来获取资源,然后对获取的资源通过一定的解析手段提取所要信息并存储的过程。
02 为什么会产生反爬虫?
你见过的最变态的验证码是什么呢?是要考察小学数学的验证码,还是考察人文知识的验证码,现在越来越多的奇葩验证码的出现,在一定程度上给我们这些访客带来了很多不便,但是它们的出现真正的目的并不是给用户增加使用难度,而是为了防止大多数的无节制访问的爬虫程序。
爬虫程序的访问速度和目的是很容易被发现与正常用户的区别的,大多数爬虫具有无节制,大批量对访问目标进行爬取的行为,这些访问请求会对访问目标带来巨大的服务器压力和不必要的资源投入,因此常被运营者定义为‘垃圾流量’。
因此,为了更好的维护自身的利益,营业者就会针对爬虫的特点应用不同的手段来防止大批量爬虫的访问。
根据反爬的出发点,可以将反爬限制手段分为:
• 主动型限制:开发者会通过技术手段主动的限制爬虫的访问请求,如:验证请求头信息,限制同ip的重复访问,验证码技术等等
• 被动型限制:开发者为了节省访问资源的同时也不降低用户体验,采用了间接的技术手段限制爬虫访问的方法,如:网页动态加载,数据分段加载,鼠标悬停预览数据等等。
• 而从具体的反爬虫实现手段上来进行划分,则可大致分为:信息验证型反爬虫,动态渲染型反爬虫,文本混淆型反爬虫,特征识别型反爬虫。爬虫与反爬虫无异于一场攻防博弈,既有竞争关系,也有相互促进的可能。
常见的反爬策略以及应对措施:
信息校验型爬虫:
a. User-Agent发爬虫:
基本原理:能够向服务器端发送请求的客户端形式多种多样,既可以是不同型号的个人电脑,手机,平板电脑,编程程序,也可以是网络请求软件,那么服务器该如何识别这些不同的客户端呢?
User-Agent便是这样一个用户发送请求时附带的请求信息的记录。它的主要格式包括如下几个部分:
💡 **浏览器标识(操作系统标识,加密等级标识;浏览器语言)渲染引擎标识 版本信息**
例如:
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)