cloakings / cloakings-common
Cloakings通用库
1.5.0
2024-06-26 15:59 UTC
Requires
- php: >=8.3
- symfony/http-foundation: ^7.1
Requires (Dev)
- phpunit/phpunit: ^10.5
README
检测用户是否为机器人或真实用户。
安装
composer require cloakings/cloakings-common
使用
基本使用
如果有一个库符合您的需求并且实现了 CloakerInterface
- 使用它。
use Cloakings\CloakingsCommon\CloakerFactory; use Cloakings\CloakingsCommon\CloakModeEnum; use Cloakings\CloakingsCommon\SampleCloaker; $cloaker = new SampleCloaker(); // or $cloaker = (new CloakerFactory())->create(SampleCloaker::class); $result = $cloaker->handle(new Request(server: ['HTTP_USER_AGENT' => 'Chrome 100'])); // $result->mode === CloakModeEnum::Real // show real site $result = $cloaker->handle(new Request(server: ['HTTP_USER_AGENT' => 'GoogleBot', 'REMOTE_ADDR' => '8.8.8.8'])); // $result->mode === CloakModeEnum::Fake // show fake site $result = $cloaker->handle(new Request(server: ['HTTP_USER_AGENT' => 'GoogleBot', 'REMOTE_ADDR' => '11.22.33.44'])); // $result->mode === CloakModeEnum::Response // stop and show this response $result = $cloaker->handle(new Request()); // no user agent // $result->mode === CloakModeEnum::Error // decide by yourself: may be show default (fake or real) site, may be try chaining decision to another cloaker
链式调用
如果您想让访客通过多个遮蔽器,则使用 ChainCloaker
use Cloakings\CloakingsCommon\AlwaysRealCloaker; use Cloakings\CloakingsCommon\CloakerFactory; use Cloakings\CloakingsCommon\SampleCloaker; $cloaker = (new CloakerFactory())->createChain([ AlwaysRealCloaker::class, SampleCloaker::class, ]);
逻辑
- 如果遮蔽器说 "假" - 停止并返回 "假"
- 如果遮蔽器说 "响应" - 停止并返回 "响应"
- 如果遮蔽器说 "真实" - 继续到下一个遮蔽器;返回最后的 "真实" 响应
- 如果遮蔽器说 "错误" - 继续到下一个遮蔽器;返回最后的 "真实" 响应;如果所有遮蔽器都返回 "错误" 则返回最后的 "错误"
创建自己的遮蔽器
实现 CloakerInterface
。
返回 模式
- "真实":看起来访客是真实的人类用户
- "假":看起来访客是机器人用户
- "响应":不显示假或真实站点,而是此响应:通常用于额外检查的临时页面,如验证码或JS挑战
- "错误":无法决定
返回 响应
:仅在 "响应" 或 "错误" 模式下使用
返回 概率
:你有多确定 0.0 - 1.0
。如果您有多个遮蔽器,一个说 "真实",另一个说 "假",并且您想决定。通常只需保留默认值 1.0
。