反爬虫-方案设计

前言

在日常开发业务场景中,某些知识是需要付费才能观看的,而我们的爬虫开发者同志们想不劳而获,把对方的付费内容爬下来放置在自己的网站上,免费为大家观看。对C端用户来说特别好,因为免费看到了付费的知识内容。对内容的创建者特别不友好,因为辛苦努力的成果被爬免费曝光了,没有产生任何收益。如我们喜欢的小说网站,像上面一些最新章节是需要付费的,但看着看着就需要付费了,此时很多选手都想到去网上免费找资源看。那么我们如何来预防其它人来爬我们的数据呢。

方案一:接口限流

如果业务场景允许,我们对目标接口采取限流处理,比如限制此接口单位时间内只能请求xx次,单位时间内超出此限制则抛出500错误,告知前端接口限流。能一定程度减少损失。(但无法完全规避,爬虫可以循环延时获取数据)

概念图
在这里插入图片描述

方案二:用户请求限流

基于方案一的优化,如果某个接口一直被爬虫占用着,那么就影响到了我正常的C端用户访问使用,这是不合理的,基于此,我们对限流限制到用户层级(基于用户id来控制关键接口的限流)。(但无法完全规避,爬虫可以循环延时获取数据和采用多个账户模拟web请求获取)

方案三:动态数据渲染

我们的数据并不随html文件的生成而直接放置数据,把数据的获取单独作为一个接口获取。这样爬虫爬下来的就只是一个html文件,如果相关爬虫程序没有web内核,那么就解析不出其中的数据获取接口。就达不到爬取数据。(能拦住大部分的爬虫,但某些爬虫是可以植入web内核,通过引擎解析javascript的也能爬下来)

方案四:动态数据渲染 + 数据通信加密

基于方案3,我们把接口响应的数据进行加密处理,前端获取到加密数据后根据一定的算法解密出来使用。这样爬虫从接口上获取的数据是没有办法直接使用的(能拦住大部分的爬虫,但某些爬虫是可以植入web内核,等待javascript获取到数据后再等解密成功后渲染到页面上时,从页面捕获其数据内容,比较耗时,要匹配相关html标签和解析标签内容)

方案五:验证码效验

在某些场景下,一旦用户在单位时间访问一定次数就需要用户完成验证码匹配操作(图形验证码、短信验证码、邮箱验证码等),这样也能防范大部分爬虫。(能拦住大部分的爬虫,但某些高级爬虫连这都规避防不住。)

方案六:动态数据渲染 + 数据通信加密 + ip限流 + 用户请求限流 + 验证码效验

基于方案2,方案4,再加一个ip访问限流。 能最大程度在业务层面对用户进行限制。
在配合阿里云的web网盾最大可能避免扒手扒数据。(但实际也不能完全防住爬虫,但这个层面爬虫想获取到数据也不容易,要提前准备大量的真实账户+匹配的html内容解析规则+部分虚拟ip 才能获取到想要的数据,其中,一旦匹配的前端html规则发生了一些结构上的变化,那么爬虫开发者就需要花大量的时间去做匹配规则,得不偿失,比的就是谁更有耐心)。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值