taavi / laravel-torblock
Laravel 扩展包,用于阻止 Tor 出口节点
3.0.0
2024-07-27 08:47 UTC
Requires
- php: ^8.2
- illuminate/cache: ^11.0
- illuminate/config: ^11.0
- illuminate/container: ^11.0
- illuminate/http: ^11.0
- illuminate/log: ^11.0
- illuminate/support: ^11.0
- wikimedia/ip-utils: ^5.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.0
README
阻止通过 Tor 使用您的 Laravel 应用程序,以防止滥用。
用法
入门
首先,安装此包
composer require taavi/laravel-torblock
然后,使用此包的最简单方法是向 HTTP 核心添加中间件
class Kernel extends HttpKernel { protected $routeMiddleware = [ 'torblock' => \Taavi\LaravelTorblock\Middleware\BlockTorAccess::class, ]; }
注册中间件后,您只需将 torblock
中间件添加到您想阻止 Tor 访问的任何路由即可。
高级用法
内部,中间件只是抛出一个 TorBlocked
异常来阻止访问。Laravel 的默认异常处理器会将其显示为 403 页面,而不会将其记录到异常日志中。您可以使用异常处理器来自定义用户看到该错误的方式。您还可以使用 vendor:publish
artisan 命令发布用于生成异常消息的语言文件。
Tor 出口节点数据默认情况下缓存一天。使用 vendor:publish
artisan 命令发布配置文件以自定义缓存持续时间或用于加载数据的 Onionoo 服务器。
测试
为了提高测试性能,您可以将包更改为使用 TorExitNodeService
的模拟实现
namespace Tests; use Taavi\LaravelTorblock\Service\FakeTorExitNodeService; use Taavi\LaravelTorblock\Service\TorExitNodeService; use Illuminate\Foundation\Testing\TestCase as BaseTestCase; abstract class TestCase extends BaseTestCase { use CreatesApplication; protected function setUp(): void { parent::setUp(); $this->app->bind(TorExitNodeService::class, FakeTorExitNodeService::class); } }
模拟实现使用两个 RFC 5737 TEST-NET-1 地址作为阻止地址列表。
鸣谢
此包基于TorBlock MediaWiki 扩展,该扩展许可协议为 GPL-2.0 或更高版本。