scrapy反爬虫与反反爬虫文章比较多,都简谈不全,现在搜集好多资料,梳理一下思路,总结了一下内容。
1. 反爬虫技术
首先我们来思考一下,为什么要反爬虫?
-
网络中充斥大量爬虫的情况下,会使得整个网络的数据不可靠。
-
网站在面对高并发爬虫的攻击时,很容易被击溃。
-
版权数据被爬取,对于网站来说是巨大的损失。
基于以上原因,反爬虫技术孕育而生,主要包含以下最常用的反爬技术: -
封IP
后台对访问进行统计,如果单个IP访问超过阈值,则封锁该IP。 -
封UserAgent
后台对访问进行统计,如果单个UserAgent访问超过阈值,则封锁该UserAgent。 -
封Cookie
后台对访问进行统计,如果单个cookies访问超过阈值,则封锁该cookie. -
设置请求时间间隔
设置请求时间间隔,规避过于频繁的请求访问,避免爬虫短时间爬取大量数据。 -
robots.txt协议
robots.txt是一个限制爬虫的规范,该文件是用来声明哪些东西不能被爬取; 设置robots.txt协议,位于robots.txt中的UserAgent不可请求网站数据。 -
验证码验证
发生大量请求时,弹出验证码验证,通过验证方可继续访问。 -
JavaScript渲染网页
将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染标签中的js代码,将信息展现在浏览器当中,而爬虫是不具备执行js代码的能力,所以无法将js事件产生的信息读取出来。 -
ajax异步传输
访问网页的时候服务器将网页框架返回给客户端,在与客户端交互的过程中通过异步ajax技术传输数据包到客户端,呈现在网页上,爬虫直接抓取的话信息为空。 -
网页iframe框架嵌套
在下载框处再内嵌一个窗口,使得爬虫提取不到内层窗口的数据。
2. 反反爬虫技术
有反爬虫技术,就会有反反爬虫技术存在,这是两种相互对抗的技术;这两种技术也在相互对抗中不断发展。
我们在编写爬虫时,要对获取海量的免费数据心怀感恩,而不是恶意攻击网站,这是一种害人害己的形为。
