您的位置: 首页 > 新闻资讯 > 正文

浅谈爬虫与反爬虫之间的那些事

发布时间:2019-10-24 14:58:03 来源:黑洞代理

浅谈爬虫与反爬虫之间的那些事!爬虫是构建大数据平台的基础,负责抓取网页信息并对网页识别、分类及过滤。我们熟识的电商、搜索、新闻及各大门户网站都有强大的爬虫集群在每天高负荷运转,它们相互之间"和谐地"聚合借鉴新闻消息,它们尽职地做网页信息的搜索优化以及各大研究机构卖力地进行数据集构建。

浅谈爬虫与反爬虫之间的那些事

然而, 各大网站是不太会对爬虫网开一面、任其予取予求的,毕竟无论什么时候,内容的价值都是显而易见的,所以就有了爬虫方与反爬方的混战大戏。

爬虫与反爬虫的攻防战斗没有一刻放松, 反爬网站要想制定反爬策略, 就要根据爬虫的特性针对性选择方案, 那么爬虫有什么特点? 脚本 + 自动化。因此反爬方的毁灭性大招无非两个:

一、非脚本访问 => 浏览器真实性检测。

二、非自动化访问 => 访问用户真实性检测。

浏览器由于其运行环境及运行原理, 会自带一些特有的属性: 存在Headers用于协议negotiation、可执行JavaScript代码片段。那么反爬方的第一个堡垒就基于浏览器的真实性检测开始构建。

战役伊始, 反爬虫方率先祭出User-Agent, Content-Type, Application ,iAccept-Encoding, Accept-Language, X-Forwarded-For, Referer等headers电网, 第一批与正常浏览器headers不同的爬虫纷纷触发, 瞬间毙命。然而, 爬虫方也不是吃素的! 他们用了一招漂亮的瞒天过海, 迅速通过伪造headers的方式突破防线!

反爬方丝毫不慌, 在html中添加了一段JavaScript脚本地雷, 己方浏览器由于提前知道了地雷的位置,可以安全绕过, 不会影响正常的网页显示, 爬虫方却不明就里, 纷纷中招, 非死即伤,直到大杀器Node.js出现,可以直接执行JavaScript,爬虫方终于奋起反击,再下一城!!

反爬方一计不成又生一计, 采用了迷宫式防御 "单页应用" 的方式重铸了堡垒,爬虫方费尽了心机却由于单页应用巧妙的构筑方式而解析不到任何数据,一时间被绕得晕头转向,束手无策,单页应用统治了战场!反爬方开始了单方面的屠杀,爬虫方的士气一蹶不振…...

终于,这场战役的终结者出现了,他就是,Headless Chrome技术!新技术一出现,爬虫方的武器库焕然一新:Selenium,Puppeteer, PhantomJS, CasperJS等重装攻城杀器不断建功,反爬方一溃千里。爬虫方终于锁定了第一场战役的胜局!

由于断崖式技术Headless Chrome的出现,反爬方在浏览器识别战役上望风披靡。然而胜败乃兵家常事,东方不亮西方亮。在数据保卫战生死存亡的关头, 反爬方偶然发现了一个现象,浏览器虽然很难识别,但是人性是贪婪的!人类能做到很多脚本做不到的事!甚至人类的行为也是有固定的规律的!就这样,反爬方卧薪尝胆了许久,终于再次踏上了战场!这一役的制高点,是一个灵魂兼哲学的双层拷问:"你到底是不是人?"

第一层防线直指爬虫方的要害——贪欲(访问频率)!每秒钟请求10次这种高频访问,怎么可能发生在一个人类的身上,斩!爬虫方不得不大幅降低了攻击频率,反爬方终于缓了一口气。

第二层防线指向爬虫方的痛处——懒惰(固定IP)!最近的几百次请求,都是同一个IP发出来的,世间哪有这么无聊的人?斩!爬虫方为此不得不付出巨大的代价来购买代理ip,即使是这样,反爬方依然可以通过封禁公网IP的方式来紧掉大量的代理地址。经过反爬方的精心运作,逐渐有效削弱了敌方的攻势。

就这样,爬虫与反爬虫的战斗持续的进行下去,谁也不认输,有时候道高一尺魔高一丈,有时候魔高一尺道高一丈,当反爬策略升级了,爬虫策略也要跟着升级,不然的话,落后就要挨打

相关文章内容简介

1 浅谈爬虫与反爬虫之间的那些事

浅谈爬虫与反爬虫之间的那些事!爬虫是构建大数据平台的基础,负责抓取网页信息并对网页识别、分类及过滤。我们熟识的电商、搜索、新闻及各大门户网站都有强大的爬虫集群在每天高负荷运转,它们相互之间"和谐地"聚合借鉴新闻消息,它们尽职地做网页信息的搜索优化以及各大研究机构卖力地进行数据集构建。然而,∵各大网站是不太会对爬虫网开一面、... [阅读全文]

最新标签