爬虫与反爬的常见套路
当前常见的爬虫、反爬虫“套路”
一些网站的反爬虫手段
【1】亚马逊
亚马逊在一个爬虫的请求只包含ip,不包含cookie的情况下,会先允许爬取。在短时间内请求次数达到一定次数之后(如16个线程,每个线程各20个请求,每秒的请求数达到3个以上),会开始出现爬取失败的情况,且爬取失败的情况出现频率会逐渐增加,不会一下都访问不了。请求被阻止后会来到验证码页面进行人机识别的确认。若攻破验证码继续爬取,则有可能触发亚马逊的黑名单机制,将此ip加入黑名单。触发黑名单机制主要取决于你爬取的时间(白天or黑夜),以及ip的信誉度(亚马逊能识别你的ip是代理ip,云的ip还是住家ip,住家ip的信誉度会比较高)
在请求头里加上user-agent, cookie, accept, accept-encoding, accept-language后,触发防爬虫robotcheck的可能性降低,但在短时间内达到一定访问次数后(阈值高于情况1)依旧会触发验证码页面。若攻破验证码继续爬取,依旧按情况1的原则触发黑名单机制。
【2】猫眼电影
猫眼电影里,对于票房数据,展示的并不是纯粹的数字,而是在页面中使用了font-face定义了字符集,并通过unicode去映射展示。也就是说,除去图像识别,必须同时爬取字符集,才能识别出数字。
并且,每次刷新页面,字符集的url都是有变化的,无疑更大难度地增加了爬取成本。
【3】去哪儿网
在去哪儿网上,对于一个4位数字的机票价格,先用四个i标签渲染,再用两个b标签去绝对定位偏移量,覆盖故意展示错误的i标签,最后在视觉上形成正确的价格。
而在去哪儿的移动端,他们重新定义了字符集,如下图,将3与1的顺序刚好调换得来的结果
当一个请求被识别为爬虫之后,业内通常应对的措施有:
- 不予理睬;
- 通过验证码机制进行人机判断;
- 配置黑名单,封锁IP;
- “投毒”策略,被识别为爬虫的请求依旧可以访问到目标页面,但页面里返回的某些信息是错误的;
由上述三个事例可以看出,像猫眼电影、去哪儿网采取的防爬虫措施可以应对多数爬虫的爬取且几乎对用户体验没有恶意影响。如果他们字符集的映射算法被攻击者破译,这一层防御其实也就被攻破了。但这层防御是否被攻破,从猫眼电影、去哪儿网这一侧也无法感知(根据目前查到的资料,不知道猫眼电影、去哪儿网是否有别的反爬虫策略)。而像亚马逊的防爬虫策略其实是并不严格的,就算被识别出是爬虫,只要单位时间内请求的次数不超过限定值,亚马逊是允许爬虫进行信息获取的。同时亚马逊也使用验证码机制进行缓冲,不是简单的立即对爬虫所用的IP进行封杀。
总结
爬虫和反爬虫的博弈是一个无止境的过程。所谓上有政策下有对策,攻击者总有方法绕过防御采取新的攻击方式,更有甚者不惜投入庞大资金雇佣人力来对某些网站的信息进行“人肉爬取”,可谓防不胜防。所以,反爬虫工作也是一个长期的任务,需要从简单到复杂一步步来实施。
爬虫与反爬的常见套路相关推荐
- 爬虫与反爬:一场无休止之战
现实生活中,其实很多人都与爬虫"打过交道". 比如,逢年过节之时,为确保能买到回家火车票,有人会选择使用"抢票软件",这个软件就是利用网络爬虫来登录铁路售票网络 ...
- python爬虫反爬-python爬虫--爬虫与反爬
爬虫与反爬 爬虫:自动获取网站数据的程序,关键是批量的获取. 反爬虫:使用技术手段防止爬虫程序的方法 误伤:反爬技术将普通用户识别为爬虫,从而限制其访问,如果误伤过高,反爬效果再好也不能使用(例如封i ...
- 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图...
第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲-爬虫和反爬的对抗过程以及策略-scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...
- Python爬虫-2019年我破解了商标网数据爬虫-破解反爬技术那些事情
Python爬虫-2019年我破解了商标网!数据爬虫-破解反爬技术那些事情 由于自己一直做Python大数据挖掘技术开发,最近有不少的朋友要做大数据分析,找我帮忙商标网的数据挖掘,实现爬取中国商标网全 ...
- 16.网络爬虫—字体反爬(实战演示)
网络爬虫-字体反爬 一·字体反爬原理 二·字体反爬模块Fonttools TTF文件 三·FontCreator 14.0.0.2790 FontCreatorPortable下载与安装 四·实战演示 ...
- Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!
python3爬虫遇到了反爬 当你兴冲冲的打开一个网页,发现里面的资源好棒,能批量下载就好了,然后感谢写个爬虫down一下,结果,一顿操作之后,发现网站竟然有反爬措施,尴尬了. 接下来的几篇文章,我们 ...
- python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题
前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...
- python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题...
前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...
- python 下载文件 限速-Python网络爬虫---scrapy通用爬虫及反爬技巧
一.通用爬虫 通用爬虫一般有以下通用特性:爬取大量(一般来说是无限)的网站而不是特定的一些网站. 不会将整个网站都爬取完毕,因为这十分不实际(或者说是不可能)完成的.相反,其会限制爬取的时间及数量. ...
最新文章
- 使用sbt编译打包,spark-submit命令提交的详细步骤
- 【强化学习】强化学习专栏上线,60多篇文章等你follow
- 只读副本和Spring Data第3部分:配置两个实体管理器
- new delete 来申请动态二维数组空间
- 海思接收bt1120外同步视频流
- 自学JAVA的十大网站你都知道那些
- java 判断正态分布_如何检验数据是否服从正态分布
- 高数竞赛、数学建模、算法、计算机专业书籍等亲情大甩卖
- plotyy函数_Matlab plotyy函数的使用及问题总结
- Mybatis【面试题】
- 易语言 网页_取文本_reg的源码
- 【笔记】lua - 协程
- Android系统OTA升级
- 「06」IDEA2019.3(最全-从入门到癫狂
- 【Python】批量替换word文档内容python-docx的实现
- Bugku旧平台web writeup
- 盘一盘 Python 特别篇 19 - 天数计数|年限
- 【Android开发】 获取手机上的各种apk的包名和类名,实现跳转到其他应用
- 微信端跳转外部浏览器进行apk文件下载的实现原理及源码
- matlab线性回归结果,利用Matlab进行线性回归分析