API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案

采用多级拦截,后置拦截的方式体系化解决

1 分层拦截

1.1 第一层 商业web应用防火墙(WAF)

直接用商业服务

传统的F5硬件,不过现在用的很少了 云时代就用云时代的产品,典型代表 阿里云 web应用防火墙

1.2 第二层 API 网关(API Gateway)层

API 网关(API Gateway)

kong为代表的开源 API 网关 实现 openresty + lua 自实现 windows平台 安全狗、云锁 实现

1.3 第三层 应用层

用Redis内置lua脚本

redis是块砖,哪里需要哪里搬 redis内置了lua引擎,2.6版本后你可以编写一段lua脚本,完成逻辑判断流程

常见的有对某维度计数器法 对某维度令牌桶法 维度的概念比如就是IP或者IP+模块等, 多个字段合并成一个维度

本方案满足绝大多数应用层的限流需求 当然也可以自己用应用层程序实现,前提是redis+lua满足不了你的需求

2 后置拦截

基本的套路其实很简单,从日志这里计算出恶意IP,恶意用户,再给其他系统用 分控的基本思想也是这样的

已经在用ELK日志系统:可以用ES中定时查询高频IP,送入WAF做拦截 已经在用流计算系统:flink和spark等流计算系统计算出高频恶意IP,用户等

然后就可以应用这些计算出的结果数据做限制,封禁等

3 一+二+三+后置协同工作

第一层Waf当然有拦截,但是对于新IP他不会马上生效, 会有几分钟的时间才会拦截 特别是恶意爬虫IP池一上,大量新IP就来了,第一层会放过来,如果只是一层,结果就是数据库慢查询告警叮叮叮

配合上二层 三层 一层一层拦截 如果没有精力搞二层,那么第一层用买的,第二层不做,搞第三层

后置拦截的结果可以作为长期封禁使用 这种多次拦截的策略和多级缓存的概念是不是很像 多层次的拦截保障源站监控告警静悄悄

面向C端的产品被爬虫,被恶意访问的概率会大很多 面向B端的网页也不是没有风险 面向B端的API也有限流的需求

API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案的更多相关文章

  1. 云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫

    描述:反爬虫是一个复杂的过程,针对爬虫常见的行为特征,WAF反爬虫三板斧——Robot检测(识别User-Agent).网站反爬虫(检查浏览器合法性)和CC攻击防护(限制访问频率)可以全方位帮您解决业 ...

  2. api接口思路介绍

    现在很流行api了,但各种api做法不一样,下面我整理了一些自己的想法,也是看了各大门户网站开放的api应用想到的,与大家分享分享,高手跳过.   API(Application Programmin ...

  3. Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)

    先停止tomcat服务 1.进入apache-tomcat-7.0.68/conf/Catalina/localhost(如果之前还都没有启动过tomcat,是不会有此目录的,先启动一次再关闭,会自动 ...

  4. 前后端分离,如何防止api接口被恶意调用或攻击

    无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了.目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提 ...

  5. Winform混合式开发框架访问Web API接口的处理

    在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的 ...

  6. 如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。

    由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题. 刚开始没做任何处理,用jsonp的方式调用 web api 接口, ...

  7. Asp.Net Web Api 接口,拥抱支持跨域访问。

    如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问. 由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题 ...

  8. 使用HttpWebRequest请求API接口以及其他网站资源

    很多时候,我们项目需要其他网站的资源,而这个被请求的网站可能属于你们自己开发管理的网站.也可能是公网上其他网站对外开发的API接口,比如说腾讯的微信公众平台的API接口.各大短信服务商的短信API接口 ...

  9. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

随机推荐

  1. hdu 2255 奔小康赚大钱 (KM)

    奔小康赚大钱Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  2. Cognitive Graph for Multi-Hop Reading Comprehension at Scale(ACL2019) 阅读笔记与源码解析

    论文地址为:Cognitive Graph for Multi-Hop Reading Comprehension at Scale github地址:CogQA 背景 假设你手边有一个维基百科的搜索 ...

  3. vue cli3.0 封装组件全局引入js文件并发布到npm

    首先用 vue create创建一个项目 当前的项目目录是这样的: 首先需要创建一个 packages 目录,用来存放组件 然后将 src 目录改为 examples 用作示例 二.修改配置 启动项目 ...

  4. 解决php使用支付宝SDK报错问题

    最近公司将一些项目转移了服务器,后来发现使用支付宝支付时发现出现错误,错误如下: 1 The each() function is deprecated. This message will be s ...

  5. Java流程控制之(三)嵌套

    目录 嵌套循环 for循环嵌套 while循环嵌套 总结 之前谈到各种循环结构,有for循环啊,有while循环啊,可以完成不断重复的动作,相当方便.那么如果好多个循环结合再一次,又是如何实现效果的呢 ...

  6. JAVA中的类不要使用$符的原因解析

    下面是在Java中标识符的定义 1.标识符由字母.数字.货币符号(¥.$等).连接符号(_等)组成.(这里的字母为Unicode字符集, 而不再局限于传统的26个英文字母.)2.标识符的首字符可以是字 ...

  7. 1 JAVA语言的特点

    1.可移植性 通过先将java文件编译成字节码,再由特定平台的JVM转义为机器码,使得JAVA语言具有,编写一次,到处执行的特点.可移植性好. 2.面向对象的编程 面向对象编程的良好实现.有良好的面向 ...

  8. Java异常处理只有Try-Catch吗?

    今天,我们将讨论一个非常重要的主题-Java 中的异常处理.尽管有时可能会对此主题进行过多的讨论,但并非每篇文章都包含有用且相关的信息. Java 中最常见的异常处理机制通常与 try-catch 块 ...

  9. Redis的面试问题总结,面试跳槽必备

    1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...

  10. Spring Cloud报错Error creating bean with name 'requestMappingHandlerMapping'

    如果我们使用Spring Cloud的Feign实现熔断,首先需要自定义一个熔断类,实现你的feign接口,然后实现方法,这些方法就是熔断方法,最后需要在你的feign接口中指定fallback为自定 ...