由于博主对于爬虫的相关知识极度感兴趣,在大致自学完成了Python爬虫和Java爬虫的主要内容后,目前正在钻研反爬虫的原理。本文将会对反爬虫的相关知识进行总结,以方便之后在爬虫编码过程中的迅速回忆和查阅。因为博主尚且正在学习反爬虫,因此本文长期更新。
反爬虫的概念
反爬虫的原因
开发者为了保证服务器的正常运转或降低服务器的压力与运营成本,不得不使用各种各样的技术手段来限制爬虫对服务器资源的访问。
反爬虫的简介
限制爬虫程序访问服务器资源和获取数据的行为称为反爬虫。
反爬虫的划分
限制爬虫的手段包括但不限于请求限制、拒绝响应、客户端身份验证、文本混淆和使用动态渲染技术。这些限制根据出发点可以分为主动型反爬虫和被动型反爬虫。
- 主动型反爬虫:开发者有意识地使用技术手段区分正常用户和爬虫,并限制爬虫对网站的访问行为。(如:验证请求头信息、限制访问频率、使用验证码等)
- 被动型反爬虫:为了提升用户体验或节省资源,用一些技术间接提高爬虫访问难度的行为。(如:数据分段加载、点击切换标签页、鼠标悬停预览数据等)
信息校验型反爬虫
信息校验中的“信息”指的是客户端发起网络请求时的请求头和请求正文,而“校验”指的是服务器端通过对信息的正确性、完整性或唯一性进行验证或判断,从而区分正常用户和爬虫程序的行为。
总体来说,信息校验型反爬虫是开发者主动实现的主动型反爬虫。