taavi/laravel-torblock

Laravel 扩展包,用于阻止 Tor 出口节点

3.0.0 2024-07-27 08:47 UTC

This package is auto-updated.

Last update: 2024-09-27 09:14:12 UTC


README

Latest Stable Version Total Downloads License

阻止通过 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 或更高版本。