ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_9.2 网站反爬虫

网友投稿 169 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第9章,第2节,吕云翔、张扬和韩延刚等编著。

9.2 网站反爬虫

9.2.1 反爬虫的策略

网站反爬虫的出发点很简单,网站的目的是服务普通人类用户,而过多的来自爬虫程序 的访问无疑会增加很多不必要的资源压力,不仅不能为网站带来真实流量(能够创造商业效 益或社会影响力的用户访问数),反而白白浪费了服务器和运行成本。为此,网站方总是会 设计一些机制来进行“反爬虫”,与之相对,爬虫编写者们使用各种方式避开网站反爬虫机 制的过程就被称为“反反爬虫”(当然,递归地看,还存在“反反反爬虫”等)。网站反爬虫 的机制从简单到复杂各不相同,基本思路就是要识别出一个访问是来自于真实用户还是来自 于开发者编写的计算机程序(这么说其实有歧义,实际上真实用户的访问也是通过浏览器程 序来实现的,不是吗),因此, 一个好的反爬虫机制的最基本需求就是尽量多地识别出真正 的爬虫程序,同时尽量少地将普通用户访问误判为爬虫。识别爬虫后要做的事情其实就很简 单了,根据其特征限制乃至禁止其对页面的访问即可,但这也导致反爬虫机制本身的一个尴 尬局面,那就是当反爬虫力度小的时候,往往会有“漏网之鱼”(爬虫),但当反爬虫力度大 的时候,却有可能损失真实用户的流量(即“误伤”)。

从具体手段上看,反爬虫可以包括很多方式。

1 ) 识 别 Request Headers 信息。这是一种十分基础的反爬虫手段,主要是通过验证 Headers 中的 User-Agent 信息来判定当前访问是否来自于常见的界面浏览器。更复杂的 Headers 信息验证则会要求验证 Referer 、Accept-Encoding 等信息, 一些社交网络的页面甚至 会根据某一特定的页面类别使用独特的 Headers 字段要求。

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_9.2 网站反爬虫

2)使用 AJAX 和动态加载。严格地说这不是一种为反爬虫而生的手段,但由于使用了 动态页面,如果对方爬虫只是简单的静态网页源码解析程序,那么就能够起到保护数据和流 量的作用。

3)使用验证码。验证码机制(前面的章节已经涉及)与反爬虫机制的出发点非常契 合,那就是辨别出机器程序和人类用户的不同,因此验证码被广泛用于限制异常访问。 一个 典型场景是,当页面受到短时间内频次异常高的访问后,就会在下一次访问时弹出验证码。 作为一种适用于普遍应用场景的安全措施,验证码无疑是整个反爬虫体系的重要一环。

4)更改服务器返回的信息。即通过加密信息、返回虚假数据等方式保护服务器返回的 信息,避免被直接爬取, 一般会配合AJAX 技术使用。

5)限制或封禁 IP 。这是反爬虫机制最主要的“触发后动作”,判定为爬虫后就限制乃至 封禁来自当前IP 地址的访问。

6)修改网页或 URL 内容,尽量使得网页或 URL 结构复杂化,乃至通过对普通用户隐 藏某些元素和输入等方式来区别用户和爬虫。

7)账号限制。即只有登录账号才能够访问网站数据。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:实战之路《Excel 数据处理与分析实战宝典_第2版》_8.3 LOOKUP 函数应用案例
下一篇:学习《Python网络爬虫 从入门到精通》_14.0 爬虫实践:拼多多用户评论数据爬虫
相关文章
×