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

今天来谈谈关于反爬虫的东西。

随着大数据时代的来临,无论是个人还是企业,对于数据的需求都越来越大。这种需求也催生了如今异常热门的数据产业,也催生了日益完善的网络数据采集技术。

[[326890]]

这种需求的扩大, 同时让网络爬虫日益猖獗,猖獗到甚至影响到了网站和APP的正常运行。

高频的网络爬虫行为无异于DDOS(分布式拒绝服务)攻击,虽然法律可以治它,但是其过程之繁琐,还是不如先让网站自身充分地强大起来。

为了便于基础薄弱的同学理解,我们先看一个基本的网站访问链路图:

这其中包含了我们从个人电脑的浏览器上访问一个网页所涉及的所有部件。同时我们可以将其简化为下图:

一、为什么要反爬虫?

在设计反爬虫系统之前,我们先来看看爬虫会给网站带来什么问题?

本质上来说,互联网上可以供人们浏览、查看和使用的网站及其网站上的数据,都是公开和允许获取的,所以并不存在于所谓的“非法授权访问”问题。

爬虫程序访问网页和人访问网页没有本质区别,都是由客户端向网站服务器发起HTTP请求,网站服务器接收到请求之后将内容响应返回给客户端。

只要是发起请求,网站服务器必然要进行响应,要进行响应,必然要消耗服务器的资源。

网站的访问者与网站之间是互相互惠互利的关系,网站为访问者提供了自己所需要的必要的信息和服务,而访问者也为网站带来了流量、访客、活跃度。所以网站的所有者会愿意消耗服务器的带宽、磁盘、内存,为访问者提供服务。

而爬虫程序呢?无异于白嫖党。成倍地消耗网站服务器资源、占用服务器带宽,却不会为网站带来一丝的利益,甚至于,最后的结果是有损于网站本身的。 

爬虫,可能算得上是互联网里的非洲鬣狗了,也难怪遭网站的所有者讨厌了。

二、识别爬虫

既然讨厌爬虫,所以要将爬虫拒之于网站的门外了。要拒绝爬虫的访问,首先当然要识别出网络访问者中的爬虫程序。如何识别呢?

1. HTTP请求头

这算是最基础的网络爬虫识别了,正常的网络访问者都是通过浏览器对网站进行访问的。而浏览器都会带上自己的请求头以表明自己的基础信息。而这也是最容易被爬虫程序突破的识别手段,因为HTTP请求头谁都可以进行修改和伪造。

2. Cookie值

Cookie通常用来标识网站访问者的身份,就像是手上的一张临时凭证。并凭着这个凭着与网站服务器进行身份的校对。很遗憾,Cookie是保存在客户端的数据,也可以被修改和伪造。

3. 访问频率

如果一个访问者,每隔1秒请求一次网站的某个页面,或者一秒钟请求了几百次这个页面。这个访问者不是爬虫程序就有鬼了。试问人类中有谁能快速和频繁地点击鼠标访问一个页面?他是得了帕金森综合征还是八爪鱼转世?

通过访问频率来识别爬虫程序是可行的,但是爬虫程序也能通过使用大量的代理IP来实现一个IP地址只访问了一次的效果,也可以通过随机的请求时间间隔规避。

4. 鼠标行为轨迹

正常人类访问者浏览网页势必不会像机器一样,机械地移动和点击鼠标。而鼠标的移动和点击,是可以通过JS脚本捕获到的,所以可以通过判断访问者的鼠标行为轨迹来判断访问者是否为爬虫程序。

5. token值

现在很多网站都是前后端分离开发的,数据通过后端接口返回给前端,前端拿到数据再结合页面进行渲染。所以很多爬虫程序都直接找数据接口,而不是傻傻地请求页面了。token就用在验证这些后端数据接口上。token一般通过网页上的某个密钥加上时间再加上某些数据组合加密而成。

还有更多地识别爬虫的手段在此就不一一进行介绍。很遗憾的是,上述任何一种识别爬虫的手段,都有可能被爬虫绕过和突破。

三、拒绝爬虫

就像没有一劳永逸的网站安全防护一样,十年前把3389端口一关,就能防止服务器成为肉鸡,如今各种防火墙、各种安全措施都加上了,还有可能因为某个0Day漏洞被勒索。

爬虫与反爬虫之间,也永远都在斗争和升级。所不同的是,网络攻防是放开手脚的无限制级格斗,而反爬虫则是带着拳套和头盔的奥运拳击。

网站为了运营,势必要对外开放内容,而开放的内容就像是飘忽在非洲大草原的腐肉和血腥味,直勾勾地吸引着鬣狗的到来。

在开放内容和避免沦为爬虫的数据矿池之间平衡,是一个难事。

1. 内容上限制内容的开放

开放的内容是获取用户、流量的基础,所以内容必须是开放的。但是内容的开放并不是无限制的开放。非注册用户可以看到一篇内容、两篇内容,但是不能无限地一直看到内容。这个限制,可以是要求登录,可以是要求扫码验证,可以是接入谷歌验证码之类的点击验证机制。

现在已经有越来越多的网站采用了有限内容开放的机制,比如微博、知乎、淘宝等,你可以看到一页两页的内容,但是如果还想继续,对不起请登录。

2. 行为上记录用户操作

需要访问者进行登录并不能解决问题,因为模拟登录一直是网络爬虫程序的一个热门发展分支,无论是图片验证码、拼图、滑块还是点选汉字,都会被突破。甚至于短信验证码都可以通过编写APP与爬虫程序和网站之间进行通信。

所以记录用户行为必不可少,用户的一切操作和访问行为都需要记录在案,这是分析和处理爬虫的基础。

3. 控制上严厉打击高频行为

从实际上来看,也有很多爬虫程序的运行并非是为了往死里薅网站的数据和内容,仅仅是为了方便进行手工的收集和整理工作,这种类型的爬虫行为一般会比人工浏览的频次要高,但是又显著低于鬣狗般的高频爬虫,对这种类型的爬虫行为可以忽略掉。做人留一线,日后好相见。

但是对于影响网站服务器运行的高频爬虫行为,必须采取措施。结合用户和IP信息,对相关用户或IP进行处理。

4. 协议里申明权利

网站的所有者必须在网站协议或用户协议里申明,允许正常的浏览、访问和数据获取,对于异常、高频、威胁网站服务器稳定的行为,将保留进一步处理的权利。

四、最后

没有一个城池是固若金汤的,也没有一个措施可以阻挡所有疯狂的爬虫。面对爬虫的行为,利用各种技术建立一个行之有效的识别、分级和处理机制,才能既保得网站的开放,才能获得网站的稳定。

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/125441.html<

(0)
管理的头像管理
上一篇2025-02-23 18:15
下一篇 2025-02-23 18:17

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注