andrey-helldar / spammers
Requires
- php: ^5.6|^7.0|^8.0
- illuminate/console: ^5.4|^6.0|^7.0|^8.0
- illuminate/database: ^5.4|^6.0|^7.0|^8.0
- illuminate/http: ^5.4|^6.0|^7.0|^8.0
- illuminate/support: ^5.4|^6.0|^7.0|^8.0
- illuminate/validation: ^5.4|^6.0|^7.0|^8.0
- jaybizzle/laravel-crawler-detect: ^1.2
Requires (Dev)
- mockery/mockery: 0.9.*|1.*
- phpunit/phpunit: ^8.0|^9.0
Suggests
- symfony/thanks: Give thanks (in the form of a GitHub) to your fellow PHP package maintainers
README
用于防止垃圾邮件访问 Laravel 应用的简单包。
安装
要获取此包的最新版本,只需使用 Composer 引用项目
$ composer require andrey-helldar/spammers
当然,您也可以手动更新 require 块并运行 composer update
命令
{ "require": { "andrey-helldar/spammers": "^1.0" } }
如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php
文件中的 providers 数组
Helldar\Spammers\ServiceProvider::class,
接下来,设置 config/spammers.php 文件后,调用 php artisan vendor:publish
和 php artisan migrate
命令来安装迁移
现在,使用 spammer()
助手和 Artisan 命令。
文档
助手存储
将 IP 地址存储在垃圾邮件表中
spammer()
->ip('1.2.3.4')
->store();
// or
spammer('1.2.3.4')->store();
从垃圾邮件表中删除 IP 地址
spammer()
->ip('1.2.3.4')
->delete();
// or
spammer('1.2.3.4')->delete();
从垃圾邮件表中恢复 IP 地址
spammer()
->ip('1.2.3.4')
->restore();
// or
spammer('1.2.3.4')->restore();
检查垃圾邮件表中是否存在 IP 地址
spammer()
->ip('1.2.3.4')
->exists();
// or
spammer('1.2.3.4')->exists();
助手访问
要保存 URL 中的 IP 地址到数据库,请使用助手 spammer()->access()
spammer()
->access()
->ip('1.2.3.4')
->url('/foo/bar')
->store();
// or
spammer('1.2.3.4')
->access()
->url('/foo/bar')
->store();
当尝试获取带有错误的页面次数超过给定数量时,进行禁止。
示例
- 当尝试次数达到
100
时 - 禁止24
小时。 - 当尝试次数达到
300
时 - 禁止72
小时。 - 当尝试次数达到
500
时 -永久禁止
。
默认,永久禁止
。
中间件
接下来,在 app/Http/Kernel.php
文件中的 $routeMiddleware
块中添加中间件的链接,并在 $middlewareGroups
块中使用它
protected $middlewareGroups = [ 'web' => [ // ... 'spammers' ], 'api' => [ // ... 'spammers' ], ]; protected $routeMiddleware = [ // ... 'spammers' => Helldar\Spammers\Middleware\Spammers::class ];
或者您可以在 Http/Kernel.php
文件的 $middleware
属性中全局指定
protected $middleware = [ // ... \Helldar\Spammers\Middleware\Spammers::class, ];
控制台命令
此包可以在控制台中调用
spam:amnesty
spam:store 1.2.3.4
spam:delete 1.2.3.4
spam:restore 1.2.3.4
spam:exists 1.2.3.4
spam:amnesty
命令允许您删除已过期的 IP 地址。
附加
您可以使用 Helldar\Spammers\Models\Spammer
模型。它是扩展的 Illuminate\Database\Eloquent\Model
。
简单使用
您可以在 Http/Kernel.php
文件的 $middleware
属性中全局指定。
protected $middleware = [ // ... \Helldar\Spammers\Middleware\Spammers::class, ];
接下来,在 app\Exceptions\Handler.php
文件的 report()
方法中,添加对 spammer()->access()
助手的调用。
public function report(Exception $exception) { spammer(request()->ip()) ->access() ->url(request()->fullUrl()) ->store(); parent::report($exception); }
然后在 app/Console/Kernel.php
文件的 schedule()
方法中添加一条规则。
protected function schedule(Schedule $schedule) { $schedule->command('spam:amnesty') ->everyThirtyMinutes(); }
执行命令。
php artisan vendor:publish php artisan migrate
根据您的需求自定义 config/spammers.php
文件。
盈利!
版权和许可
Laravel Spammers 由 Andrey Helldar 为 Laravel 框架 5.4 或更高版本编写,并使用 MIT 许可证发布。有关详细信息,请参阅 LICENSE 文件。
翻译
文本和注释的翻译由 Google 翻译完成。帮助翻译 +1 在 karma :)