之前的章节也略有提及反爬策略, 本节, 我们就来系统的对反爬, 反反爬的种种, 做一个了结.
从防盗链说起:
自从论坛兴起的时候, 网上就有很多人会在论坛里发布一些很棒的文章, 与当下流行的 "点赞"" 分享 "一样, 很多人都会因为" 欣赏 "而选择" 转发 "到各大论坛. 今时今日, 我们大多数人在转载他人文章时, 还会特别注明" 转载自 xxx", 可在以前, 人们的意识还没有那么强, 那时, 在线播放的视频资源还是比较少的, 转载的难度不高, 手段也比较粗糙, 仅凭复制粘贴就可以转载大部分的资源, 导致优秀的作品很难找到出处, 甚至搜索引擎前三页都没有原创作者及其发布的论坛的信息. 这就导致原创作者及论坛站长们的极度不满. 很快, 站长们就研究出了各种各样的防盗链技术, 其中, 最常见使用最广泛的就是图片资源的防盗链技术.
它的实现原理, 其实也很简单, 其实就是检查请求头 (headers) 里的 referer 字段的值, 来判断的. 这里对防盗链策略的攻防不做过多的阐述, 引一篇文章 https://www.jb51.net/article/164483.htm , 大家大概了解一下原理即可.
由此可以看出, 防盗链的产生, 可以说是最原始的反 "扒" 策略了, 正式拉开 "爬" 与 "反爬" 战争的序幕.
人, 都是自私的:
随着互联网日益繁荣, 内容, 资源也日渐丰富多采, 对于那些没有资源在手的人来说, 他们也已经不再满足于简单的摘抄了, 毕竟手工操作, 成本太高, 效率太低了, 也很难及时发现新鲜热点资源, 但又极度渴望.
于是, 面向大众的草根爬虫系统诞生了. 为什么要说是 "面向大众" 的呢, 我这里想作一个区分, 其实, 普遍意义上的爬虫, 并不是在这时才诞生的, 想想我们之前章节介绍的爬虫原理, 不难猜测出, 第一只爬虫, 很可能就是伴随着浏览器的诞生而诞生的, 浏览器不就是爬虫么! 而浏览器的诞生, 可要早的多的多. 然而, 全球最大的爬虫, 恐怕要算是搜索引擎了, 也要比这些草根爬虫出生的更早.
一碗水端不平:
对于大部分资源主, 面对大爬虫 "搜索引擎" 是持欢迎的态度的, 甚至还绞尽脑汁的优化 SEO, 提升搜索排名, 生怕被搜索引擎落下. 当然, 他们似乎也默契的达成了某种 "君子协议"--robots 协议, 这里引用百度百科的词条, 有兴趣的可以深度了解一下:)
但是对于草根爬虫的姿态可就没那么优雅了, 想尽办法, 生出各种反爬策略来阻止, 阻挠, 限制草根爬虫的肆意生长:(
当然了, 这碗水端不平, 是完全可以理解的:
对于非资源主来说, 他们又非常渴望这些优势资源, 有的是他们没有能力获取的, 有的是他们没有权力获取的, 但他们又有着各自的目的, 比如: 股票分析, 科学研究等, 没有资源, 就等于没有根基, 而握有资源的资源主, 可能又不向这个方向发展, 这就更加使得非资源主想要得到如此资源的迫切程度超乎一切;
对于资源主来说, 一方面, 他们不希望优势资源被普及, 垄断才是他们的期望, 比如, 某友圈, 某博; 另一方面, 他们也不得不考虑如果童叟无欺的面向草根爬虫开发资源, 那么, 带来的 (身心及服务器) 压力都是巨大的, 能不能挺得住, 尚未可知......
展开博弈:
既然是技术型文章, 下面就从技术的角度拉一个表单, 列举出我所能想到的以及常见反爬与反反爬策略:
反爬策略 | 反反爬策略 |
限制、过滤 Referer | 伪造、清除 Referer |
Cookies 验证 & nbsp; | 保留、伪造必要 Cookie,删除非必要 Cookie |
User-Agent | 随机分配模拟 User-Agent |
匿名帐户访问限制 & nbsp; | 模拟注册帐户、模拟登录,伪造 Cookie 或 Token |
限制同一 IP 的访问频率 & nbsp; | 拉大访问间隔,降低访问频率,使用代理(池) |
图形识别、文字、数字、字母图片识别验证码 & nbsp; | 手工打码、打码平台、OCR |
滑动验证码 & nbsp; | JS 模拟 |
手机验证码 & nbsp; | 号商 |
语音验证码 & nbsp; | 号码识别、语音识别、播放录音 |
用户行为检测 & nbsp; | 模拟真实用户行为轨迹,避免广度优先,选择深度优先 |
接口加密、数据加密、HTTPS | 没有固定策略、通用策略 |
其他更为复杂的反爬策略 & nbsp; | 自动化测试方式、脚本 |
终极反爬策略 & nbsp; | 手动采集 T_T |
表格中列出了大部分常见的反爬及反反爬策略. 随着反爬策略的升级, 反反爬的难度也是日益提升.
感慨:
从事爬虫这么多年, 感慨颇多. 双方在这场博弈中, 斗智斗勇, 也是两败俱伤, 各自徒升成本不说, 还胜负难料.
幻想:
既然资源可以被看得到摸得着, 那么, 它就不是保密资源, 既然不是保密资源, 资源主又何苦死抱着不放. 曾几何时, 谁又能想到, 软件项目居然可以开源, 时下开源项目如此繁荣, 是软件行业的一大幸事. 资源主何时能想明白这件事, 就像博客园如此火爆的社区, 每日的更新也不过 1~2 千, 反爬策略再严格, 魔高一尺, 道高一丈, 再不济, 多加几个人, 人工采集也可以跟得上. 但, 这不是科学的发展, 人类的进步的体现, 这是一个恶性的循环.
大胆的幻想一个良性循环的圈子, 资源主与草根爬虫也可以搭建一个 "君子协议" 啊, 资源主可以以提供数据接口的方式, 将数据开放, 草根爬虫根据协议, 获取所需数据. 当然, 资源主可以对数据进行付费, 免费的划分, 甚至是高价低价的划分, 玩法花样颇多. 这样, 资源主也不必劳心劳神的处处提防, 徒增烦恼与成本. 草根爬虫也不必花费高昂的代价去获取资源.
而且, 现在的云平台, 鼓吹各种服务上云, 是, 水龙头都上云了, 可惜拧开一看, 没水...... 只有数据上云, 那才能称得上是真正的云平台, 才能真正的符合云平台的理念, 也才能真正的体现云平台的价值.
资源主也可以依托云平台, 将数据服务与主要业务分离, 压力转移到云平台, 这样, 也不用担心草根爬虫聚集造成的正常业务受到影响了.
对于非资源主来说, 无论出于什么目的, 使用什么手段, 获取他人数据, 都会带来很多成本 (开发成本, 设备成本, 维护成本) 还有可能伴随着反爬策略升级, 资源方间歇性掉线, 中间造成数据断档, 想要实现一个长期稳定的业务线, 也是无比困难, 苦不堪言. 何不直接以此成本, 购买一个安心的服务呢.
在资源平等时, 想要取胜, 拼得就是服务了, 而服务的不断提升, 这才是将社会推向新发展的方向:)
来源: https://www.cnblogs.com/mikecheers/p/12330829.html