极简爬虫攻防分页爬虫是构建搜索引擎的基础,负责抓取网页信息,并对网页进行识别、分类、过滤。我们熟悉的电商、搜索、新闻和各大门户网站都有强大的爬虫集群,每天都在高负载运行:京东大战京东。淘宝对战拼多多“友好”价格监控,今日头条对战网易对战腾讯相互“和谐”新闻聚合参考,谷歌/百度/搜狗尽职尽责做好网页信息搜索优化,各大研究机构努力建设数据集。
但是各大网站对非搜索引擎爬虫都不是很开放,让他们各取所需。毕竟内容的价值在任何时候都是显而易见的,所以才有了下面爬虫和反爬虫的混战大戏~
各大巨头之间爬虫和反爬虫的攻防战并不轻松一会儿。反爬虫网站要想制定反爬虫策略,就必须根据爬虫的特点来选择方案。那么爬虫有什么特点呢?脚本+自动化。因此,反爬虫的破坏动作无外乎两种:非脚本访问=>浏览器真实性检测非自动访问=>访问用户真实性检测激战一触即发!非战斗人员迅速撤离!第一轮:你真的是浏览器吗?由于其运行环境和运行原理,浏览器会具有一些独特的属性:有用于协议协商的Headers和可执行的JavaScript代码片段。那么反爬党的第一座堡垒就开始基于浏览器的真伪检测搭建起来了。
在行动之初,反爬虫党就率先提供了User-Agent、Content-Type、Application/*、iAccept-Encoding、Accept-Language、X-Forwarded-For等header,Referer等不同header的爬虫陆续被触发,秒杀。不过,爬行动物也不是吃素的!他们用了一个聪明的绝招,通过锻造头球快速突破防线!
反爬虫丝毫没有慌乱,在html中添加了一个JavaScript脚本地雷供自己浏览由于爬虫提前知道了地雷的位置,所以可以安全绕过,不会影响正常的网页页面显示,爬虫却浑然不觉,相继被中招,非死即伤,直到大杀器Node.js出现,可以直接执行JavaScript,爬虫终于反击,再下一城!!9b56-8fdc09caaf77.png#align=left&display=inline&height=178&name=image.png&originHeight=178&originWidth=984&size=194086&status=done&width=984)
防爬方法失败,采用迷宫防御——单页应用——重铸堡垒的方式,爬虫用尽了所有的努力,但由于单页应用巧妙的构建方式,无法解析任何数据。反爬虫一方开始单方面屠杀,爬虫一方士气一落千丈……**千军镇守,百将舍身,十年磨一剑,成一鸣惊人!**终于,这场战斗的终结者出现了,他就是,无头铬科技!随着新技术的出现,爬虫端的军火库焕然一新:Selenium、Puppeteer、PhantomJS、CasperJS等重磅攻城杀手不断建功,反爬虫端崩溃万里。爬虫族终于锁定了首战的胜利!第二轮:你真的是人吗?由于悬崖式技术HeadlessChrome的出现,反爬党在浏览器识别大战中立于不败之地。然而,胜败是兵家常事,东不明西明。在数据保卫战的生死关头,反爬虫意外发现了一个现象。虽然浏览器很难识别,但人性是贪婪的!人类可以做很多脚本做不到的事情!连人的行为都有固定的规律!就这样,反攀方使出了浑身解数,苦战良久,终于再次踏上了战场!这场战斗的制高点是对灵魂和哲理的双重拷问:**你是人吗?!**
第一道防线直指爬虫的症结——贪婪(访问频率)!这种每秒10次的高频访问请求,怎么会发生在一个人身上,斩!爬虫端不得不大幅降低攻击频率,反爬虫端终于松了一口气。
第二道防线直指爬虫的痛点——懒惰(固定IP)!最后几百个请求都是从同一个IP发出的。世界上怎么会有这么无聊的人?切!为此,爬虫不得不付出巨大的代价购买代理IP。即便如此,反爬虫仍然可以通过封禁公网IP来封杀大量代理地址。经过反攀方的周密操作,敌人的攻势逐渐被有效削弱。
战斗再次升级,反爬党请来了一个利器:验证码!大国重器刚上马不久就取得了巨大的成功,爬行动物顿时损失惨重。似乎一夜之间,所有的攻城器械都失效了,工事之战陷入了胶着状态……直到爬虫族多年积累的OCR重剑技术破土而出,才逐渐扭转颓势,但依旧无法压制住攻城地下党的反扑,尤其是谷歌的反水技术,爬虫方的主力:

战斗一打,反攀一方立马大获全胜!
最终,反攀登队乘胜追击,追寻终极防御:模式识别。爬虫毕竟不是人,在请求时只能机械地设置目标资源的requestid和请求参数,导致请求参数和请求顺序必须一致。反爬虫利用这个规则,通过设置阈值对请求进行统计和识别,最终彻底杜绝了爬虫冒充人类的攻击!第二战,反攀方获胜!两战过后,双方互有胜负,激战不断。祝贺双方的友谊和激情!--亲身经历过爬虫与反爬虫之战的老手为大家现场报道,感谢收看,再见!
