srdante/antibotlinks

此包已被废弃且不再维护。作者建议使用miguilim/antibotlinks包。

使用PHP + InterventionImage实现的一个易于安装的自托管图片验证码库。

1.0.1 2023-08-11 02:04 UTC

This package is auto-updated.

Last update: 2024-02-03 21:23:42 UTC


README

AntiBotLinks是一个易于安装的自托管图片验证码库。通过预定义的字典,该库生成必须按特定顺序选择的图片。

此验证码解决方案可能无法100%防止机器人,但与其他流行的验证码服务结合使用,将为您的平台提供额外的安全层。

example

内容

安装

您可以通过composer安装此包

composer require miguilim/antibotlinks

使用

要开始使用此包,您必须使用make()静态方法,并将标识字符串作为第一个参数传递。此标识参数将用于存储和获取生成的挑战和解决方案。

Use Miguilim\AntiBotLinks\AntiBotLinks;
use Miguilim\AntiBotLinks\CacheAdapters\SimpleFileCacheAdapter;

$antibotlinks = AntiBotLinks::make('1', new SimpleFileCacheAdapter(__DIR__ . '/cache'));

var_dump($antibotlinks->generateLinks());

通常您应该使用用户ID、IP地址或生成的cookie。

缓存适配器

为了使用AntiBotLinks类,您需要选择一个缓存适配器,以便它可以将生成的挑战存储在某个地方。此包默认附带以下适配器

  • \Miguilim\AntiBotLinks\CacheAdapters\LaravelCacheAdapter
  • \Miguilim\AntiBotLinks\CacheAdapters\SimpleFileCacheAdapter

但是,您可以创建并使用自己的适配器,它扩展了抽象适配器类

use Miguilim\AntiBotLinks\CacheAdapters\AbstractCacheAdapter;

class MyCustomCacheAdapter extends AbstractCacheAdapter
{
    public function remember(string $key, int $expiresIn, callable $callback): mixed
    {
        //
    }

    public function get(string $key): mixed
    {
        //
    }

    public function forget(string $key): bool
    {
        //
    }
}

生成链接

您可以使用generateLinks()方法生成/检索验证码链接。您可以传递要生成的链接数量作为第一个参数。此方法从缓存中获取生成的链接值,并在未找到链接时生成。

$links = $antibotlinks->generateLinks(amount: 3);

验证答案

您可以使用validateAnswer()方法验证用户答案。

$antibotlinks->validateAnswer($answer);

刷新链接

您可以刷新当前缓存值并强制重新生成一个新的验证码挑战。 当用户回答错误时,强烈建议使用此方法。

$antibotlinks->flushLinks();

自定义选项

在生成AntiBotLinks图片时,您可以启用/禁用一些选项。

// Enable or Disable image noise (Default: true)
$antibotlinks->noise(value: false);

// Enable or Disable image background (Default: false)
$antibotlinks->background(value: true);

// Enable or Disable dark theme (Default: false)
$antibotlinks->darkTheme(value: true);

您还可以自定义单词宇宙。您可以覆盖单词宇宙或将其数组与默认数组合并。

$wordUniverse = [...];

$antibotlinks->wordUniverse($wordUniverse);
// Or...
$antibotlinks->mergeWordUniverse($wordUniverse);

许可证

AntiBotLinks 是一个开源软件,受 MIT 许可证 许可。

这个库受到了 MakeJar 创建的 FBU Script 中的 "AntiBotLinks" 的启发。