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框架嵌套 在下载框处再内嵌一个窗口,使得爬虫提取不到内层窗口的数据。
有反爬虫技术,就会有反反爬虫技术存在,这是两种相互对抗的技术;这两种技术也在相互对抗中不断发展。
我们在编写爬虫时,要对获取海量的免费数据心怀感恩,而不是恶意攻击网站,这是一种害人害己的形为。