一、爬虫的原理
爬虫本质上就是用机器模仿人的行为操作,然后将数据获取下来的技术手段。一般爬虫和数据解析、大数据分析是分不开的,数据获取下来之后需要对数据进行分析。根据分析的结果决定下一步动作。
所以防爬虫就是:
1、区分机器和人
2、增加机器模拟人行为的难度
3、增加数据解析难度
二、如何区分机器和人
1、请求、访问的频率,一般来说人的访问频率一定是相对比较低的,所以如果某一个IP访问的频率过高,则必定是爬虫。
2、操作习惯,人的操作是离散的,有延迟的,而机器操作则更为精准,低延迟的。比如浏览网页时用户可能会鼠标点击,滑动多次才会获取到数据,而机器往往会更直接的获取到数据。
三、如何增加机器模拟人行为的难度
1、账号密码,系统必须登录才能获取数据,尽量减少不登陆的获取数据情况
2、Token方式,Token带有过期时间,过一段时间必须重新进行身份验证
3、验证码,数字图像验证码,算术验证码,点击顺序验证码,操作验证码(滑块、拼图),分类验证码(选择指定类型的图片)等等
4、请求信息验证,通过Cookie,Session, 请求头Header(Host,Refer,Origin,User-Agent等)增加响应标记,身份信息和判断请求信息是否是爬虫(成功率较低,一般会爬虫的都会模拟相同请求头)
5、操作习惯,要求用户过一段时间必须进行一个随机操作,比如屏幕上动态出现一个气球,要求用户进行点击操作
6、身份认证,基于摄像头(人脸识别,虹膜识别),语言识别(如语言读出指定文字),手写字迹(根据手写字迹与预留字迹比较),指纹识别(移动端有操作可能性,PC端系统相对较难)
7、物理设备认证,如银行的UK,加密狗,U盘加密,RFID刷新,身份证读卡器等等
四、如何增加数据解析难度
1、数据如果是服务端数据,则可以采用加密,前端JS解密展示方式
2、数据是前端数据,则可以进行JS混淆,也可以是动态页面(当前VUE就是这种方式)
五、建议说明
一般平台基于成本、自身技术能力,建议采用 二1,三1,三2,三3,三4,四2方式进行防护。