raul3k/disposable-email-blocker-laravel

GitHub: raul3k/disposable-email-blocker-laravel

为 Laravel 应用提供一次性/临时邮箱检测能力的集成包,支持验证规则、多来源域名同步和灵活的缓存与数据库配置。

Stars: 1 | Forks: 0

# Laravel 一次性邮箱拦截器 用于检测一次性/临时邮箱的 Laravel 集成方案。基于 [`raul3k/disposable-email-blocker-core`](https://github.com/raul3k/disposable-email-blocker-core) 构建。 ## 功能 - **验证规则** - 轻松在表单中验证邮箱 - **Facade** - 简单的 API,可在任何地方检查邮箱 - **数据库检查器** - 在你的数据库中存储和管理一次性域名 - **Artisan 命令** - 从多个来源更新域名 - **Laravel Cache 集成** - 支持 Redis、文件、数据库或任何 Laravel 缓存驱动 - **自动发现** - 开箱即用,兼容 Laravel 12 ## 安装 ``` composer require raul3k/disposable-email-blocker-laravel ``` 该包使用 Laravel 的自动发现功能,因此无需手动注册 service provider。 ### 发布配置(可选) ``` php artisan vendor:publish --tag=disposable-blocker-config ``` ### 发布迁移文件(用于数据库检查器) ``` php artisan vendor:publish --tag=disposable-blocker-migrations php artisan migrate ``` ## 用法 ### 验证规则 ``` use Raul3k\DisposableBlocker\Laravel\Rules\NotDisposableEmail; // In a Form Request public function rules(): array { return [ 'email' => ['required', 'email', new NotDisposableEmail()], ]; } // With custom message 'email' => [new NotDisposableEmail('Temporary emails are not allowed')], // In a Controller $request->validate([ 'email' => ['required', 'email', new NotDisposableEmail()], ]); ``` ### Facade ``` use Raul3k\DisposableBlocker\Laravel\Facades\DisposableEmail; // Simple check if (DisposableEmail::isDisposable($email)) { return back()->withErrors(['email' => 'Disposable emails not allowed']); } // Get detailed result $result = DisposableEmail::check($email); $result->isDisposable(); // bool $result->isSafe(); // bool $result->getDomain(); // string $result->getConfidence(); // float // Check domain directly DisposableEmail::isDomainDisposable('mailinator.com'); // true // Batch checking $results = DisposableEmail::checkBatch([ 'user1@gmail.com', 'user2@mailinator.com', ]); // Domain information $info = DisposableEmail::info('user@mail.example.co.uk'); $info->domain(); // 'example.co.uk' $info->subdomain(); // 'mail' $info->publicSuffix(); // 'co.uk' $info->isPrivate(); // false ``` ### Artisan 命令 ``` # 列出可用来源 php artisan disposable:list-sources # 从所有来源更新 domain php artisan disposable:update # 从特定来源更新 php artisan disposable:update --source=mailchecker # 从特定来源导入 php artisan disposable:import mailchecker # 使用选项导入 php artisan disposable:import mailchecker --clear --chunk=500 ``` ## 配置 ``` // config/disposable-blocker.php return [ // Checker type: 'file', 'database', 'pattern', 'chain' 'checker' => env('DISPOSABLE_CHECKER', 'file'), // Use bundled list from core package 'use_bundled_list' => true, // Enable pattern-based detection 'pattern_detection' => false, // Domains to whitelist (never block) 'whitelist' => [ // 'mycompany.com', ], // Cache settings 'cache' => [ 'enabled' => true, 'store' => env('DISPOSABLE_CACHE_STORE', 'default'), 'ttl' => 3600, 'prefix' => 'disposable_email:', ], // Database settings (when checker = 'database') 'database' => [ 'table' => 'disposable_domains', 'connection' => null, ], ]; ``` ## 检查器类型 ### 文件检查器(默认) 使用核心包中内置的列表。速度快且无需设置。 ``` 'checker' => 'file', 'use_bundled_list' => true, ``` ### 数据库检查器 将域名存储在你的数据库中以便进行自定义管理。 ``` php artisan vendor:publish --tag=disposable-blocker-migrations php artisan migrate php artisan disposable:update ``` ``` 'checker' => 'database', ``` ### 链式检查器 组合多个检查器(数据库 + 内置列表)。 ``` 'checker' => 'chain', 'use_bundled_list' => true, ``` ### 模式检测 启用基于一次性域名常见模式的启发式检测。 ``` 'pattern_detection' => true, ``` ## 可用来源 该包可以从多个来源获取域名: | 来源 | 描述 | |--------|-------------| | `disposable-email-domains` | 庞大且全面的列表(约 17 万个域名) | | `burner-email-providers` | 精选列表(约 4 千个域名) | | `mailchecker` | FGRibreau 的 mailchecker 列表 | | `ivolo-disposable` | Ivolo 的一次性域名列表 | | `fakefilter` | 7c/fakefilter 列表 | ## 测试 ``` composer test ``` ## 静态分析 ``` composer analyse ``` ## 许可证 MIT 许可证。详情请参阅 [LICENSE](LICENSE)。
标签:ffuf, Laravel, OpenVAS, PHP, Syscall, Web开发, 搜索引擎查询, 数据校验, 邮箱验证, 防滥用