反爬虫策略调研与分析
爬虫时代
在互联网上,各类的信息数据相当大一部分是发布在Web页面上的,于是一大批以此为生的网站便诞生了。 baidu和google便成为其中的佼佼者,它们是这个星球上最大牌的爬虫,最多的爬虫,为这个世界的Web页面建立索引,方便大家查找信息。在爬虫基础之上,才有了大家每天都离不开的搜索引擎服务。
爬虫可以爬取任何可以访问的Web页面,开发一个爬虫其实非常的简单和容易。但是并不是所有的页面都是非常容易获取信息的,于是便诞生了各类的反爬虫策略。道高一尺魔高一丈,反爬虫策略的兴起,则在一定程度上提高了爬虫的入门门槛。
为什么要反扒?
- 爬虫的PV访问如果量很大,且无节制,会造成大量的服务器资源消耗
- 公司的核心数据被爬虫无偿爬取,对于公司来说降低了竞争力,这是一种损失。
- 爬虫爬取的数据,是有价值的,但是对于被爬取方却无法从中得到好处。
- 4.
反爬虫策略
- robots.txt
robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。robots.txt允许使用类似”Disallow: *.gif”这样的通配符.
对于搜索引擎的爬虫来说,会遵守类似规则,对于个人开发的爬虫来说,则一般不会关注robots.xml中的约束。 - 后台对访问进行统计,如果单个IP访问超过阈值,予以封锁。
在某个时间段内,对于来源于特定ip的请求,超过某个阈值之后,对于这个IP的访问进行封锁。
分析: 容易封锁正常访问的用户,误伤好人。 目前IP资源非常廉价,IP资源池可以很低成本低获取,都是包月服务,这个是最容易突破的防线。 - 后台对访问进行统计,如果单个session访问超过阈值,予以封锁。
对单个session的访问次数进行统计,超过法制,进行封锁。
分析: 这个策略很基础,基本无效。 当连接断开后,重新连接,即可重新生成session。 - 基于规则的验证码人机检查
当系统怀疑当前的请求是来自于机器人或者爬虫之时,将弹出验证码对话框,要求用户填入正确的验证码,方可正常访问。
分析: 对于某些情况下,正常的用户访问也会被提示验证码,用户体验不好。
爬虫可以基于tensorflow或者第三方接口自动提取验证码,并自动填入,从而突破验证码策略。普通的验证码识别是有一定的技术门槛和复杂度的。 - 基于Cookie中特殊值的判定。
通过cookie限制抓取信息,比如我们模拟登陆之后,想拿到登陆之后某页面信息,千万不要以为模拟登陆之后就所有页面都可以抓了,有时候还需要请求一些中间页面拿到特定cookie,然后才可以抓到需要的页面。
分析: 可以有效地阻止大部分的爬虫,当不符合cookie中的值时,则跳转或者喂给其假数据。
解决办法: 需要针对流程进行分析,观察整个过程都请求了哪些URL(主要包括HTML、JS、XHR),挨个试,试到成功为止 - 对于核心数据的加载,使用动态Javascript脚本来加载。
当爬虫请求的页面返回时,其中并没有期望的核心数据。其中的数据是通过javascript动态加载的脚本,在脚本中使用ajax请求,然后利用回调函数的方式来将数据填充到页面中。在页面实现层面就是将数据与页面显示分离开。
分析: 对于简单爬虫来说,是一场噩梦,很多核心的数据是拿不到的。
解决办法: 需要分析页面找到对应的请求,然后分析请求,模拟请求得到最终想要的数据。或者使用无头浏览器的方式也可以规避这个问题。 - javascript渲染
网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染
参考资料
- scrapy-proxies https://github.com/aivarsk/scrapy-proxies
反爬虫策略调研与分析相关推荐
- 反击“猫眼电影”网站的反爬虫策略
0×01 前言 前两天在百家号上看到一篇名为<反击爬虫,前端工程师的脑洞可以有多大?>的文章,文章从多方面结合实际情况列举了包括猫眼电影.美团.去哪儿等大型电商网站的反爬虫机制.的确,如文 ...
- python爬取网页防止重复内容_python解决网站的反爬虫策略总结
本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下. 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.这里我们只讨论数据采集部分. 一般网站从三个方面 ...
- Scrapy绕过反爬虫策略汇总
文章目录 一.Scrapy无法返回爬取内容的几种可能原因 1,ip封锁爬取 2,xpath路径不对 3,xpath路径出现font,tbody标签 4,xpath路径不够明确 5,robot协议 6, ...
- 使用scrapy做爬虫遇到的一些坑:网站常用的反爬虫策略,如何机智的躲过反爬虫Crawled (403)
在这幅图中我们可以很清晰地看到爬虫与反爬虫是如何进行斗智斗勇的. 在学习使用爬虫时,我们制作出来的爬虫往往是在"裸奔",非常的简单. 简单低级的爬虫有一个很大的优点:速度快,伪装度 ...
- scrapy框架开发爬虫实战——反爬虫策略与反反爬虫策略
反爬虫.反反爬虫 简单低级的爬虫有一个很大的优点:速度快,伪装度低.如果你爬取的网站没有反爬机制,爬虫们可以非常简单粗暴地快速抓取大量数据,但是这样往往就导致一个问题,因为请求过多,很容易造成服务器过 ...
- 【web性能优化】之一:反爬虫策略
反爬虫策略,表面上看似乎跟WEB系统优化没有关系,经过分析,发现该策略是可以归到WEB性能优化的系列之中. 通过分析apache日志发现,某系统40%的带宽和服务器资源都消耗在爬虫上,如果除去10%- ...
- 代理ip网站开发_网站反爬虫策略,用代理IP都能解决吗?
很多人会使用到网页采集器,其实这也是通过程序来进行采集的,如果没有使用代理IP,采集速度快了,照样是会被封住的.另外,这些网站还有其他的一些反爬策略,同样也会影响到我们采集网页的数据,这是如何限制的呢 ...
- 网站反爬虫策略VS反反爬虫策略
网站反爬虫策略 1.通过User-Agent校验反爬 2.通过访问频度反爬 3.通过验证码校验反爬 4.通过变换网页结构反爬 5.通过账号权限反爬 反反爬虫策略制定 1.发送模拟User-Agent: ...
- 常见的一些反爬虫策略(下篇)-Java网络爬虫系统性学习与实战系列(10)
常见的一些反爬虫策略(下篇)-Java网络爬虫系统性学习与实战系列(10) 文章目录 联系方式 反爬虫策略 文本混淆 SVG映射 CSS文字偏移 图片混淆伪装 字体反爬 Referer字段反爬 数据分 ...
最新文章
- Python自用工具包PyTls
- Python索引index常用的8种操作
- mysql5.6的my.cnf配置详解
- Ibatis.Net 学习手记一 简单的Demo
- 百度之星2019 初赛一 题解
- v210 启动脚本分析
- 华为云公布2021产品上新计划,让云无处不在,让智能无所不及
- win7怎么把计算机放到桌面6,手机投屏到电脑win7最简单具体操作步骤
- 【python】实现共享表格协同编辑
- ios中文字添加删除线
- oracle解一元二次方程,第 6 章 浮点运算
- 我们项目组的Team Building
- 第二章 确定性知识系统
- 音声合成:音高、泛音、谐波、基频 到底是什么概念?
- MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法
- 从吴军的书《格局》总结出的37条为人方法论
- 计算机键盘无法使用怎么处理,电脑键盘失灵怎么解决
- micropython STM32移植笔记(一)
- 绕圈圈面试题(Python经典编程案例)
- java 微信 图灵机器人,SAE服务下用java实现微信公众账号图灵机器人
热门文章
- 关于纯洁的微笑《Spring Boot(七):Mybatis 多数据源最简解决方案》文章补充说明多数据源事务的配置
- DM共享存储集群搭建
- 大数据课程笔记3:Kolmogorov Complexity
- 关于SQL server 内容乱码问题的资料收集
- XPath注入漏洞学习
- 底部工具栏不见了,亦或者桌面不见了!(急速高效解决方案)
- FLYPRO飞豹获评胡润百富中国最具投资价值新星企业百强榜深圳50强
- Pandas-数据操作-数值型(二):累计统计函数【cumsum、cumprod、cummax、cummin】【计算前1/2/3/…/n个数的和、积、最大值、最小值】
- php理论掌握太少,为了让大家不至于对法系的职业不了解..请看这帖(没耐心的别看了)...
- 方差、标准差、均方差、均方误差(MSE)区别总结