topthink/think-throttle的使用

thinkPHP/fastadmin topthink/think-queue 多进程 thinkPHP topthink/think-queue supervisor redis 多进程 阅读详情

topthink/think-throttle

作用
通过本中间件可限定用户在一段时间内的访问次数,可用于保护接口防爬防爆破的目的。

安装

composer require topthink/think-throttle

安装后会自动为项目生成 conf/throttle.php 配置文件,安装后组件不会自动启用,需要手动设置。

开启
组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用

app/middleware.php :

<?php
return [
    \think\middleware\Throttle::class,
];

配置说明
在 config/throttle.php 配置选项:

<?php
// 中间件配置
return [
    // 缓存键前缀,防止键值与其他应用冲突
    'prefix' => 'throttle_',
    // 缓存的键,true 表示使用来源ip
    'key' => true,
    // 要被限制的请求类型, eg: GET POST PUT DELETE HEAD
    'visit_method' => ['GET'],
    // 设置访问频率,例如 '10/m' 指的是允许每分钟请求10次。值 null 表示不限制, eg: null 10/m  20/h  300/d 200/300
    'visit_rate' => '100/m',
    // 访问受限时返回的响应
    'visit_fail_response' => function (Throttle $throttle, Request $request, int $wait_seconds) {
        return Response::create('Too many requests, try again after ' . $wait_seconds . ' seconds.')->code(429);
    },
];

当配置项满足以下条件任何一个时,不会限制访问频率:

key 值为 false 或 null;
visit_rate 值为 null。

其中 key 用来设置缓存键的;而 visit_rate 用来设置访问频率,单位可以是秒,分,时,天,例如:1/s, 10/m, 98/h, 100/d , 也可以是 100/600 (600 秒内最多 100 次请求)。

灵活定制
示例一:针对用户个体做限制, key 的值可以设为函数,该函数返回新的缓存键值(需要Session支持),例如:

'key' => function($throttle, $request) {
    $user_id = $request->session->get('user_id');
    return $user_id ;
},

实例二:也可以在回调函数里针对不同控制器和方法定制生成key,中间件会进行转换:

'key' => function($throttle, $request) {
    return '__CONTROLLER__/__ACTION__/__IP__';
},

或者直接设置:

'key' => '__CONTROLLER__/__ACTION__/__IP__',

PS:此示例需要本中间件在路由中间件后启用,这样预设的替换功能才会生效。

示例三:允许在闭包内修改本次访问频率或临时更换限流策略:

'key' => function($throttle, $request) {
    $throttle->setRate('5/m');                      // 设置频率
    $throttle->setDriverClass(CounterSlider::class);// 设置限流策略
    return true;
},

示例四:允许在路由定义中独立配置(1.3.x 版本支持)

Route::group(function() {
    //路由注册

})->middleware(\think\middleware\Throttle::class, [
    'visit_rate' => '20/m',
    'key' => '__CONTROLLER__/__ACTION__/__IP__',
]);
ThinkPHP6 接口频繁访问限制 (1) composer安装think-throttle composer require topthink/think-throttle (2) 组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用 app/middleware.php return [ \think\middleware\Throttle::class, ]; (3) 在 config/throttle.php 配置选项: // 中间件配置 return [ // 缓存键前缀,防止键值与其 阅读详情

相关推荐

think-throttle:thinkphp6.0 限制访问频率的中间件

安装 composer require topthink/think-throttle 安装后会自动为项目生成 conf/throttle.php 配置文件,安装后组件不会自动启用,需要手动设置。 开启 组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用 app/middleware.php : <?php return [ \think\middleware\Throttle::class, ]; 配置说明 在 config/throttle.php 配置选项: <?php // 中间件配置 return [ // 缓存键前缀,防止键值与其他应用冲突 'prefix' => 'throttle_', // 缓存的键,true 表示使用来源ip 'key' => true, // 要被限制的请求类型, eg: G

ThinkPHP6 访问频率限制,接口限速

TP在国内应该是使用比较广泛的PHP框架之一,尤其是在对外提供接口的业务上。为了节省服务器资源,防止非法采集,提供更好的用户体验,因此很多开发者都需要考虑接口访问频率的问题。 下面介绍一下如何在TP6上实现这一功能。 首先我们安装一下第三方的模块: composer require topthink/think-throttle 提示:composer 类似 Node Vue React 使用的 npm,也就是包管理工具,采用 composer 进行安装可以方便管理各种依赖。 进入到 TP 项

指尖跳动,代码改变生活 3779

逆向实战:拼多多anti-content加密参数的全链路解析与动态对抗策略

本文深入解析了拼多多anti-content加密参数的全链路生成逻辑与动态对抗策略。通过逆向工程实战,详细拆解了包含设备指纹、用户行为采集和动态密钥生成在内的12个关键环节,并提供了可持续对抗的精准模拟方案和自动化更新机制,帮助开发者有效应对拼多多的反爬体系。

weixin_30687051的博客 160

tp6 接口频率限制

tp6 接口频率限制

szh1605598126的博客 735

电池管理系统(BMS)系列—状态估计之SOH

BMS系列文章,介绍了SOH估计

zxx52113140的博客 1846

【学习笔记】计算机网络 第八章 无线局域网(WLAN)

计算机网络 第八章 无线局域网(WLAN)

Vera_shsf的博客 1243

清华大学--赵志磊 tp6接口频率访问限制

接口频率限制 composer require topthink/think-throttle 注:限制接口访问频率限制,不是用户,也不是ip 命令,安装插件 composer require topthink/think-throttle 在应用route目录下的app.php内 use think\middleware\Throttle; 示例: Route::group(function (){ Route:resourece(‘goods’,”Goods”); })->middleware

wuqingchaishao的博客 393

U8 API接口开发踩过的坑

U8 API接口开发踩过的坑

haiyang5233233的专栏 1656

tp6限制频繁访问api

composer下载安装think-throttle composer require topthink/think-throttle 组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用 app/middleware.php return [ \think\middleware\Throttle::class, ]; 在 config/throttle.php 配置选项 // 中间件配置 return [ // 缓存键前缀,防止键值与其他应用冲突

that_were_you的博客 768

Hypermesh到Abaqus CEL网格转换全攻略:解决欧拉体导入难题

本文详细解析了Hypermesh到Abaqus CEL网格转换的全流程,重点解决欧拉体导入难题。通过单元类型转换、INP文件编辑和多组件合并技术,实现流固耦合仿真的高效前处理。文章包含实用脚本和工程案例,帮助工程师突破ABAQUS CEL分析中的网格转换瓶颈。

weixin_30832143的博客 190

22、嵌入式软件随机延迟生成与加密算法防护技术

本文探讨了嵌入式软件中的随机延迟生成方法与块密码软件实现的高阶掩码及洗牌技术。重点介绍了浮动均值延迟生成方法,其在8位AVR平台上的实现效率为Θ(1),显著提升了抗相关功率分析(CPA)攻击的能力,相比传统方法更安全且轻量。同时,分析了高阶掩码与洗牌技术结合的方案,通过理论建模量化其对高级差分功率分析(DPA)攻击的抵抗能力,并以AES为例展示了该方案的应用流程。最后对比了不同防护技术在安全性与开销之间的权衡,为实际应用中选择合适的安全策略提供了依据。未来可进一步优化实现效率并融合多种防护手段以应对复杂安全

fern8的博客 88

tp6 接口频繁访问

原理:通过中间件可以限定用户一段时间内的访问次数,防止用户恶意频繁访问接口。 使用命令安装插件 composer require topthink/think-throttle 在应用route目录下的app.php内 use think\middleware\Throttle; ...

aaa50820的博客 695

Open3D 基于法向量夹角的特征点提取

基于法向量夹角的特征点提取是一种在点云处理中用于识别表面变化显著区域的技术。通过计算点云中每个点的法向量与其邻域点法向量之间的夹角,可以判断点云表面的局部变化程度,并提取那些法向量变化较大的点作为特征点。这种方法特别适用于提取边缘、角点等关键几何特征。

纵马踏花向自由 1553

THINKPHP官方推荐第三方插件库

数据库 数据库迁移工具topthink/think-migration——https://github.com/top-think/think-migration ORM类库topthink/think-orm——https://github.com/top-think/think-orm Oracle驱动topthink/think-oracle——https://github.com/top-think/think-oracle MongoDb扩展topthink/...

4585

全新YOLOv11一文弄懂 | YOLOv11网络结构解读 、yolov11.yaml配置文件详细解读与说明、模型训练参数详细解析 | 通俗易懂!入门必看系列!

本文全面介绍了YOLOv11目标检测算法,包含网络结构解析、yaml配置文件详解及训练教程。YOLOv11通过改进的C3k2f模块、SPPF和C2PSA注意力机制等创新设计,在COCO数据集上实现了比YOLOv8更优的性能。文章详细解读了yolov11.yaml配置文件的参数设置、主干网络(backbone)和头部网络(head)结构,并提供了完整的训练代码示例和参数说明。训练部分涵盖了模型选择、参数设置及优化技巧,包括epochs、batch size、学习率等关键参数的调整建议。最后总结了YOLOv11

Ai缝合怪、助力小伙伴高效发论文 3万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

PHP使用topthink/think-queue消息队列实例

​ 常住队列消费命令 sudo nohup php7.2 think queue:work --daemon --queue createAdminLogQueue --tries 2 > out.file 2>&1 & sudo php7.2 think queue:listen --queue createAdminLogQueue 单次队列消费命令 su...

owenzhang的博客 2085

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

thinkphp5.0消息队列topthink/think-queue详解

第一、安装topthink/think-queue composer require topthink/think-queue=1.1.6 第二、配置queue.php信息 找到应用目录下面的extra/queue.php进行配置,队列驱动有三种,包括sync/redis/database,下面以redis为例 第三、创建任务类 推荐使用app\job作为任务类的指定空间,也可以随意选择可以自动加载到的地方 任务类不需要继承任何类,如果这个类只有一个任务,那么只要提供一个fire方法就可

Leader_pioneer的博客 3136

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【亲测免费】 Think-Throttle 中间件使用指南

Think-Throttle 中间件使用指南 1. 项目介绍 Think-Throttle 是一个基于 Laravel 框架思想设计的 PHP 中间件,它主要用于限制用户在一定时间内的访问次数,从而达到防止爬虫、保护API接口免受恶意攻击和爆破的目的。该项目由 TopThink 团队开发,可以通过 Composer 安装并集成到 ThinkPHP 项目中。 2. 项目快速启动 2.1 安装 在你的...

gitblog_00244的博客 633

探索流量控制新境界:全面解析Think-Throttle中间件

探索流量控制新境界:全面解析Think-Throttle中间件 项目地址:https://gitcode.com/gh_mirrors/th/think-throttle 在当今的互联网世界,接口安全至关重要,尤其是在面对恶意爬虫和高频率请求的挑战时。今天,我们来深入探索一款强大的PHP中间件——Think-Throttle,它正是为了解决这一痛点而生。这款由TopThink团队打造的开源工具,以...

gitblog_00028的博客 777

学习路之PHP--TP5.0使用-消息队列topthink/think-queue

listen、work只能运行一种,运行work,再运行listen,那么就会停止work监听任务并执行如:php think queue:listen --queue helloJobQueuephp think queue:work --daemon(不加--daemon为执行单个任务) 如:php think queue:work --queue helloJobQueue --daemon。......

Green 4873

Think-Throttle 中间件使用教程

Think-Throttle 中间件使用教程 1. 项目的目录结构及介绍 Think-Throttle 是一个用于限制访问频率的中间件,适用于 ThinkPHP 框架。以下是其基本目录结构: think-throttle/ ├── src/ │ ├── Middleware/ │ │ └── Throttle.php │ ├── Service.php │ └── config...

gitblog_00631的博客 682

tp6接口限流

作用 通过本中间件可限定用户在一段时间内的访问次数,可用于保护接口防爬防爆破的目的。 步骤 在项目根目录下载命令 composer require topthink/think-throttle 安装后会自动为项目生成 conf/throttle.php 配置文件,修改可以检测POST的提交方式和返回信息 2.在应用route目录下的app.php内 use think\middleware\Throttle; 如: Route::group(function (){ Route:resou

m0_61217035的博客 820

ThinkPHP 5/6.x - 学习/实践

主要用于快速高效开发安全高性能web应用,开发新项目/产品, 维护老项目.

"代码"的日常搬运 4672

topthink/think-swoole 扩展包的使用 之 Task

本想自己适配的,奈何keng貌似不少,所以果断选择官方提供的包来适配233。。。 默认条件:thinkphp5.1.*版本下,且安装了swoole扩展 主要演示:task 任务的投递 友情提示:在swoole启动框架时,需注意静态变量的使用,会常驻内存(比如单例的变量),... 无图言卵,我么的口号是有图有真相(搞事) 以下是swoole下单例模式发送邮件: 请看收件人...

anhe0516的博客 1831

thinkphp6.0 限制访问频率的中间件 think-throttle

作用 通过本中间件可限定用户在一段时间内的访问次数,可用于保护接口防爬防爆破的目的。 安装 composer require topthink/think-throttle 安装后会自动为项目生成conf/throttle.php配置文件,安装后组件不会自动启用,需要手动设置。 开启 组件以中间件的方式进行工作,因此它的开启与其他中间件一样,例如在全局中间件中使用app/middleware.php: <?php return [ \think\middleware...

1599
上一篇: Redis简单配置主从复制
下一篇: Docker Linux下安装配置及启动
SphinxD
博客等级 码龄9年 0粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值