当前位置: 首页 > 科技观察

关于Python反爬虫,我有几点想说的_0

时间:2023-03-16 10:19:11 科技观察

今天说说反爬虫。随着大数据时代的到来,无论是个人还是企业,对数据的需求都越来越大。这种需求也催生了如今极其火爆的数据产业,以及日益完善的网络数据采集技术。这种需求的膨胀使得网络爬虫日益猖獗,甚至影响网站和应用程序的正常运行。高频网页爬取行为与DDOS(分布式拒绝服务)攻击无异。法律虽然可以根治,但过程繁琐,还不如让网站本身充分强大起来。为了方便基础薄弱的同学理解,我们先来看一个基本的网站访问链接图:这包含了我们在个人电脑上通过浏览器访问网页所涉及的所有组件。同时,我们可以简化为下图:1、为什么要反爬虫?在设计反爬虫系统之前,我们先来看看爬虫会给网站带来哪些问题。从本质上讲,互联网可以供人们浏览和查看所使用的网站及其上的数据是公开和可访问的,因此不存在所谓的“非法授权访问”问题。爬虫程序访问网页和人访问网页没有本质区别。客户端向Web服务器发起HTTP请求,Web服务器收到请求后返回内容响应给客户端。只要发起一个请求,网站服务器就必须做出响应,而要响应,就必须消耗服务器的资源。网站访问者与网站之间存在互惠互利的关系。网站为访问者提供他们所需要的必要信息和服务,访问者也为网站带来流量、访客和活跃度。因此,网站的所有者会愿意消耗服务器的带宽、磁盘和内存来为访问者提供服务。那么爬虫程序呢?这无异于妓女聚会。成倍消耗网站服务器资源,占用服务器带宽,不会给网站带来任何好处,甚至,最终的结果对网站本身也是不利的。爬虫,也许是Internet的鬣狗,难怪网站所有者讨厌它们。2.识别爬虫既然你讨厌爬虫,你就应该让爬虫远离网站。要拒绝对爬虫的访问,首先当然是在您的网络访问者中识别爬虫。如何鉴别?1、HTTP请求头这是网络爬虫最基本的标识。普通网络访问者通过浏览器访问网站。并且浏览器会自带请求头来表示自己的基本信息。而这也是最容易被爬虫破解的识别方式,因为任何人都可以修改伪造HTTP请求头。2.Cookie的价值Cookie通常用于识别网站访问者的身份,就像手中的临时凭证。并靠这个与网站服务器核对身份。不幸的是,cookies是存储在客户端的数据,也是可以被修改和伪造的。3.访问频率如果访问者每1秒请求一次网站的某个页面,或者一秒内请求该页面数百次。这个访客要么是爬虫,要么是幽灵。人类中谁能快速频繁地点击鼠标访问一个页面?他是帕金森综合症还是章鱼转世?通过访问频率来识别机器人是可行的,但机器人也可以使用大量代理。IP来达到一个IP地址只被访问一次的效果,也可以通过随机请求时间间隔来避免。4.鼠标行为轨迹浏览网页的正常人类访问者不会像机器一样机械地移动和点击鼠标。通过JS脚本可以捕捉到鼠标的移动和点击,因此可以通过判断访问者的鼠标行为轨迹来判断访问者是否为爬虫程序。5.代币价值现在很多网站都是前后端分开开发的。数据通过后端接口返回给前端,前端获取数据后与页面结合进行渲染。所以很多爬虫直接找数据接口,而不是傻傻的去请求页面。令牌用于验证这些后端数据接口。token一般是由网页上的某个密钥加上时间加上一些数据组合加密而成。爬虫的识别方法还有很多,这里就不介绍了。不幸的是,上述任何识别爬虫的手段都可能被爬虫绕过和破坏。3、拒绝爬虫就像没有一劳永逸的网站安全防护。十年前关闭3389端口,可以防止服务器变成鸡。现在加了各种防火墙,各种安全措施,可能会有一些0Day漏洞被勒索。爬虫和反爬虫之间总会有斗争和升级。不同的是,网络攻防是解放双手双脚的无限格斗,而反爬虫则是戴着手套和头盔的奥林匹克拳击。网站为了运营,势必要对外开放其内容,而开放的内容就像非洲大草原上飘荡着腐肉和鲜血的味道,直接引来鬣狗的到来。很难平衡开放的内容,避免成为爬虫的数据池。1、内容限制内容开放内容开放是获取用户和流量的基础,内容必须开放。但内容的开放不是无限制的开放。非注册用户可以看到一段内容和两段内容,但不能无限期看到内容。这个限制可以要求登录,可以要求扫码验证,也可以接入谷歌验证码等点击验证机制。现在越来越多的网站采用了内容限开的机制,比如微博、知乎、淘宝等,你可以看到一两页的内容,但是如果你想继续,抱歉,请先登录。2.行为方面记录用户操作需要访问者登录并不能解决问题,因为模拟登录一直是网络爬虫程序的热门开发分支,无论是图片验证码、拼图、滑块,还是点击汉字,都会坏掉。甚至短信验证码也可以通过编写APP与爬虫和网站进行通信。因此,记录用户行为是必不可少的,所有的用户操作和访问行为都需要被记录下来,这是分析和处理爬虫的基础。3、在管控上严厉打击高频行为从实用的角度来看,也有很多爬虫程序的运行并不是为了收集网站数据和内容,而是为了方便人工收集和整理.这类爬虫的行为频率普遍高于人工浏览,但明显低于类鬣狗的高频爬虫。这种类型的爬虫行为可以忽略。做人留一线,日后相见。但对于影响网站服务器运行的高频爬虫行为,必须采取措施。结合用户和IP信息来处理相关的用户或IP。4.协议中声明的权利网站所有者必须在网站协议或用户协议中声明允许正常浏览、访问和数据获取,并有权对异常、高频、威胁稳定的网站进行进一步处理网站服务器将被保留。4、说到底,没有一座城是坚不可摧的,也没有任何措施可以阻止所有疯狂的爬虫。面对爬虫行为,利用各种技术建立有效的识别、分类和处理机制,以保持网站的开放和稳定。