API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案
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接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案的更多相关文章
- 云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫
描述:反爬虫是一个复杂的过程,针对爬虫常见的行为特征,WAF反爬虫三板斧——Robot检测(识别User-Agent).网站反爬虫(检查浏览器合法性)和CC攻击防护(限制访问频率)可以全方位帮您解决业 ...
- api接口思路介绍
现在很流行api了,但各种api做法不一样,下面我整理了一些自己的想法,也是看了各大门户网站开放的api应用想到的,与大家分享分享,高手跳过. API(Application Programmin ...
- Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)
先停止tomcat服务 1.进入apache-tomcat-7.0.68/conf/Catalina/localhost(如果之前还都没有启动过tomcat,是不会有此目录的,先启动一次再关闭,会自动 ...
- 前后端分离,如何防止api接口被恶意调用或攻击
无论网站,还是App目前基本都是基于api接口模式的开发,那么api的安全就尤为重要了.目前攻击最常见的就是“短信轰炸机”,由于短信接口验证是App,网站检验用户手机号最真实的途径,使用短信验证码在提 ...
- Winform混合式开发框架访问Web API接口的处理
在我的混合式开发框架里面,集成了WebAPI的访问,这种访问方式不仅可以实现简便的数据交换,而且可以在多种平台上进行接入,如Winform程序.Web网站.移动端APP等多种接入方式,Web API的 ...
- 如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问。
由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题. 刚开始没做任何处理,用jsonp的方式调用 web api 接口, ...
- Asp.Net Web Api 接口,拥抱支持跨域访问。
如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问. 由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的问题 ...
- 使用HttpWebRequest请求API接口以及其他网站资源
很多时候,我们项目需要其他网站的资源,而这个被请求的网站可能属于你们自己开发管理的网站.也可能是公网上其他网站对外开发的API接口,比如说腾讯的微信公众平台的API接口.各大短信服务商的短信API接口 ...
- Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!
Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...
随机推荐
- Ubuntu 16.04安装ROS Kinetic详细教程 | Tutorial to Install and Configure ROS Kinetic on Ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/e2780b93/,欢迎阅读! Tutorial to Install and Configure ROS Kinetic on U ...
- JSON——IT技术人员都必须要了解的一种数据交换格式
JSON作为目前Web主流的数据交换格式,是每个IT技术人员都必须要了解的一种数据交换格式.尤其是在Ajax和REST技术的大行其道的当今,JSON无疑成为了数据交换格式的首选! 今天大家就和猪哥一起 ...
- Django使用mysql数据的流程
创建一个mysql数据库 1.打开终端(cmd): 输入: mysql -uroot -p 密码:*** 输入: create database 数据库名字; 2.在settings中进行配置 DAT ...
- Matplotlib入门简介
Matplotlib是一个用Python实现的绘图库.现在很多机器学习,深度学习教学资料中都用它来绘制函数图形.在学习算法过程中,Matplotlib是一个非常趁手的工具. 一般概念 图形(figur ...
- PowerDesigner从安装到同步数据库
前言 最近项目在如火如荼的进行着4.0版本的数据库设计工作,我们几个后端小伙伴也马不停蹄的进行着数据库的设计.使用的设计软件是PowerDesigner,这里记录一些常见的问题以备日后查看 安装 链接 ...
- 用Helm3构建多层微服务
Helm是一款非常流行的k8s包管理工具.以前就一直想用它,但看到它产生的文件比k8s要复杂许多,就一直犹豫,不知道它的好处能不能抵消掉它的复杂度.但如果不用,而是用Kubectl来进行调式真的很麻烦 ...
- JavaScript笔记三
1.数据类型 - JS中一共分成六种数据类型 - String 字符串 - Number 数值 - Boolean 布尔值 - Null 空值 - Undefined 未定义 - Object 对象 ...
- 迈进java初中级程序员分水岭是否合格?十个题告诉你!
前言 不论你是职场新人还是步入职场N年的职场新人大哥大~当然这个N<3~,我能担保你答不对这十个题~不要问我为什么这么自信~,这些个题还是"有水平"的javase的基础题,传 ...
- 豆瓣 URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:719)>
import urllib.request as urlrequest #import ssl#ssl._create_default_https_context = ssl._create_unve ...
- k8s 上部署 Redis 三主三从 集群
目录 介绍 为什么要使用Redis? 什么是Redis群集? 在Kubernetes中部署Redis集群 从 GitHub 上下载: 创建pv 创建statefulset 创建service 初始化 ...