购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1.2
认识反爬虫

任务描述

网站所有者并不欢迎爬虫,往往会针对爬虫做出限制措施。爬虫制作者需要了解网站所有者反爬虫的原因和想要通过反爬虫达成的目的,并针对网站常用的爬虫检测方法和反爬虫手段,制定相应的爬取策略来规避网站的检测和限制。

任务分析

(1)了解反爬虫的目的和常用手段。

(2)针对反爬虫的常用手段制定相应的爬取策略。

1.2.1 网站反爬虫的目的与手段

网站所有者从所有网站来访者中识别出爬虫并对其做出相应处理(通常为封禁IP)的过程,被称为反爬虫。对于网站所有者而言,爬虫并不是一个受欢迎的客人。爬虫会消耗大量的服务器资源,影响服务器的稳定性,增加运营的网络成本。可供免费查询的资源也有极大可能被竞争对手使用爬虫爬走,造成竞争力下降。以上种种因素导致网站所有者非常反感爬虫,想方设法阻止爬虫爬取自家网站的数据。

爬虫的行为与普通用户访问网站的行为极为类似,网站所有者在进行反爬虫时会尽可能地减少对普通用户的干扰。网站针对爬虫的检测方法通常分为以下几种。

1. 通过User-Agent校验反爬

浏览器在发送请求时,会附带一部分浏览器及当前系统环境的参数给服务器,这部分数据放在HTTP请求的Headers部分,Headers的表现形式为key-value对,其中,User-Agent标示一个浏览器的型号,图1-1所示为Chrome浏览器中某网页的User-Agent。服务器会通过User-Agent的值来区分不同的浏览器。

50506-00-016-1

图1-1 Chrome浏览器中某网页的User-Agent

2. 通过访问频度反爬

普通用户通过浏览器访问网站的速度相对爬虫而言要慢得多,所以不少网站会利用这一点对访问频度设定一个阈值,如果一个IP单位时间内的访问频度超过预设的阈值,则网站将会对该IP做出访问限制。通常情况下,该IP需要经过验证码验证后才能继续正常访问,严重时,网站甚至会在一段时间内禁止该IP的访问。

3. 通过验证码校验反爬

与通过访问频度反爬不同,有部分网站不论访问频度如何,一定要来访者输入验证码才能继续操作。例如,在12306网站上,不管是登录还是购票,全部需要验证验证码,与访问频度无关。

4. 通过变换网页结构反爬

一些社交网站常常会更换网页结构,而爬虫大部分情况下都需要通过网页结构来解析需要的数据,所以这种做法也能起到反爬虫的作用。在网页结构变换后,爬虫往往无法在原本的网页位置找到原本需要的内容。

5. 通过账号权限反爬

还有部分网站需要登录才能继续操作,这部分网站虽然并不是为反爬虫才要求登录操作的,但确实起到了反爬虫的作用。

1.2.2 爬取策略制定

针对1.2.1节介绍的常见的反爬虫手段,可以制定相应的爬取策略。

1. 发送模拟User-Agent

爬虫可通过发送模拟User-Agent来通过服务器的User-Agent检验,模拟User-Agent指的是,将要发送至网站服务器的请求的 User-Agent值伪装成一般用户登录网站时使用的User-Agent值。通过这种方法能很好地规避服务器检验,有时有些服务器可能会禁止某种特定组合的User-Agent值,这时就需要通过手动指定来进行测试,直到试出服务器所禁止的组合,再进行规避即可。

2. 调整访问频度

目前,大部分网站都会通过User-Agent值做基础反爬检验,在此基础上,还有部分网站会再设置访问频度阈值,并通过访问频度反爬。爬虫爬取此类网站时,如果设置的访问频度不当,则有极大可能会遭到封禁或需要输入验证码,所以需要通过备用IP测试网站的访问频度阈值,然后设置比阈值略低的访问频度。这种方法既能保证爬取的稳定性,又能使效率不至于过于低下。如果仍然觉得访问频度设置得不足以满足需求,那么可以考虑使用异步爬虫和分布式爬虫。

3. 通过验证码校验

若因为访问频度问题导致需要通过验证码检验,则按照访问频度的方案实施即可,也可以通过使用IP代理或更换爬虫IP的方法来规避反爬虫。但对于一定要输入验证码才能进行操作的网站,则只能通过算法识别验证码或使用Cookie绕过验证码才能进行后续操作。需要注意的是,Cookie有可能过期,过期的Cookie无法使用。

4. 应对网站结构变化

根据爬取需求,应对这类网站的方法可分为两种:如果只爬取一次,那么要尽量赶在其网站结构调整之前,将需要的数据全部爬取下来;如果需要持续性爬取,那么可以使用脚本对网站结构进行监测,若结构发生变化,则发出告警并及时停止爬虫,避免爬取过多无效数据。

5. 通过账号权限限制

对于需要登录的网站,可通过模拟登录的方法进行规避。模拟登录时除需要提交账号和密码外,往往也需要通过验证码检验。

6. 通过代理IP规避

网站识别爬虫进行反爬虫的一个常用标识就是IP,通过代理进行IP更换能够有效地规避网站的检测。需要注意的是,公用IP代理池往往已经被网站所有者识别为重点监测对象,使用这些公用IP代理时需要注意。 R5qze7jgS3nBPEzT11H8r/BBlXdltwtb+sMKr7URXVdsgJ9UY4MDOJATLx4cx35P

点击中间区域
呼出菜单
上一章
目录
下一章
×