- Версия Java
-
- 17
- Ядро
-
- Velocity
- Поддерживаемые версии
-
- 1.16.x
- 1.17.x
- 1.18.x
- 1.19.x
- 1.20.x
- 1.21.x
- Требуется (API)
- https://github.com/Elytrium/LimboAPI/releases/tag/1.1.26
GsAntiBot - это антибот система для Velocity Proxy, использующая web-captcha через веб сайт для проверки игроков до входа на основной сервер.
Основные возможности:
Web-captcha проверка через веб сайт
Проверка игрока на proxy
Удержание игрока в limbo до завершения проверки
Защита от ботов и спам-подключений
Лимиты по IP и количеству попыток
Временная блокировка IP после исчерпания попыток
Настраиваемые сообщения, title, subtitle, bossbar и actionbar
Лёгкая настройка через YAML-конфиг
Описание сайта:
Плагин работает через отдельный веб сайт проверки.
Сайт можно оформить под стиль вашего проекта и разместить на любом удобном домене.
На сайт можно поставить практически любую капчу под ваши задачи:
- цифровую капчу
- Cloudflare Turnstile
- hCaptcha
- Google reCAPTCHA
- кастомную форму проверки
- любую собственную реализацию
То есть вы не ограничены только одним вариантом капчи.
Как это работает:
Игрок при подключении попадает в режим проверки на proxy
Игрок получает ссылку на сайт проверки
На сайте отображается капча
Игрок проходит проверку
После успешного прохождения игрок автоматически допускается дальше на сервер
Что можно настроить:
- время на прохождение проверки
- количество попыток
- время блокировки IP
- сообщения
- ссылку на сайт
- title / subtitle
- bossbar / actionbar
- whitelist и кэш проверенных игроков
Основные возможности:
Описание сайта:
Плагин работает через отдельный веб сайт проверки.
Сайт можно оформить под стиль вашего проекта и разместить на любом удобном домене.
На сайт можно поставить практически любую капчу под ваши задачи:
- цифровую капчу
- Cloudflare Turnstile
- hCaptcha
- Google reCAPTCHA
- кастомную форму проверки
- любую собственную реализацию
То есть вы не ограничены только одним вариантом капчи.
Как это работает:
Игрок при подключении попадает в режим проверки на proxy
Игрок получает ссылку на сайт проверки
На сайте отображается капча
Игрок проходит проверку
После успешного прохождения игрок автоматически допускается дальше на сервер
Что можно настроить:
- время на прохождение проверки
- количество попыток
- время блокировки IP
- сообщения
- ссылку на сайт
- title / subtitle
- bossbar / actionbar
- whitelist и кэш проверенных игроков
YAML:
enabled: true
protection-mode: "WEB_CAPTCHA"
verification-timeout-seconds: 60
reminder-interval-seconds: 15
ui:
update-interval-seconds: 1
bossbar:
enabled: true
color: "YELLOW"
overlay: "PROGRESS"
actionbar:
enabled: true
web:
domain: "https://captcha.example.com"
player-url-template: "https://captcha.example.com/?token={token}&sig={sig}"
captcha-digits: 6
routing:
main-server: "lobby"
return-to-original-server: true
tokens:
length-bytes: 32
ttl-seconds: 120
one-time-use: true
bind-browser-ip-to-minecraft-ip: true
signature-secret: "CHANGE_ME_TO_A_LONG_RANDOM_SECRET"
rate-limit:
per-ip-connections: 6
per-ip-window-seconds: 15
global-new-connections-per-second: 80
max-concurrent-verifications: 500
verify-submit-per-ip-per-minute: 30
session-query-per-ip-per-minute: 60
ip-blocks:
auto-block-enabled: true
block-seconds: 300
suspicion-threshold: 4
suspicion-window-seconds: 60
persist-manual-bans: true
captcha-max-attempts: 5
captcha-attempt-ban-enabled: true
captcha-attempt-ban-seconds: 900
verified-cache:
enabled: true
ttl-minutes: 30
skip-if-recently-verified: true
reverify-on-ip-change: true
remember-by-ip: true
remember-by-uuid: true
http:
enabled: true
bind-host: "0.0.0.0"
bind-port: 8080
public-base-url: "https://proxy.example.com"
real-ip-header: "CF-Connecting-IP"
trusted-proxies:
- "127.0.0.1"
- "::1"
max-body-size-bytes: 16384
worker-threads: 8
paths:
session: "/api/session"
verify: "/api/verify"
health: "/health"
logging:
successful-verifications: true
failed-verifications: true
rate-limit-hits: true
http-callbacks: true
storage-events: true
debug: false YAML:
prefix: "<gray>[<gold>GsAntiBot</gold>]</gray> "
verification:
join: "{prefix}<white>Для входа нужно пройти проверку на сайте проверки. У вас <gold>{seconds}</gold> сек.</white>"
link: "{prefix}<white>Откройте страницу проверки: <click:open_url:'{url}'><u><aqua>{url}</aqua></u></click></white>"
success: "{prefix}<green>Проверка успешно пройдена.</green>"
still-pending: "{prefix}<yellow>Проверка ещё не завершена. Откройте: <aqua>{url}</aqua>. Осталось <gold>{seconds}</gold> сек.</yellow>"
command-blocked: "{prefix}<red>Команды временно заблокированы до прохождения капчи. Ссылка: <aqua>{url}</aqua></red>"
attempt-failed: "{prefix}<red>Код введён неверно. Осталось попыток: <gold>{attempts_left}</gold> из <gold>{attempts_max}</gold>.</red>"
too-many-attempts: "{prefix}<red>Попытки исчерпаны. Ваш IP заблокирован на <gold>{ban_seconds}</gold> сек.</red>"
block-reason: "исчерпаны попытки ввода капчи"
titles:
verification:
title: "<gold>Проверка входа</gold>"
subtitle: "<white>Откройте ссылку в чате и завершите проверку на сайте</white>"
success:
title: "<green>Проверка успешно пройдена</green>"
subtitle: "<white>Переходим на <gold>{server}</gold></white>"
bossbar:
verification: "<gold>Проверка входа</gold><gray> • осталось <white>{seconds}</white> сек.</gray>"
actionbar:
verification: "<yellow>До кика осталось <white>{seconds}</white> сек. Откройте ссылку из чата.</yellow>"
kick:
timeout: "{prefix}<red>Время на прохождение проверки истекло.</red>"
suspicion: "{prefix}<red>Подключение временно отклонено из-за подозрительной активности. Повторите попытку позже.</red>"
overloaded: "{prefix}<red>Сейчас слишком много активных проверок. Подключитесь чуть позже.</red>"
ip-blocked: "{prefix}<red>Ваш IP временно заблокирован. Причина: {reason}. Осталось: {seconds} сек.</red>"
commands:
no-permission: "{prefix}<red>У вас нет прав на эту команду.</red>"
unknown-subcommand: "{prefix}<red>Неизвестная подкоманда. Используйте /gsantibot help</red>"
player-not-found: "{prefix}<red>Игрок <gold>{player}</gold> не найден.</red>"
reload-success: "{prefix}<green>Конфигурация GsAntiBot успешно перезагружена.</green>"
reload-failed: "{prefix}<red>Не удалось перезагрузить GsAntiBot: {error}</red>"
forceverify-usage: "{prefix}<yellow>Использование: /gsantibot forceverify <player></yellow>"
forceverify-success: "{prefix}<green>Игрок <gold>{player}</gold> помечен как проверенный.</green>"
forceverify-notify: "{prefix}<green>Администратор подтвердил вашу проверку вручную.</green>"
unverify-usage: "{prefix}<yellow>Использование: /gsantibot unverify <player></yellow>"
unverify-success: "{prefix}<green>Статус проверки игрока <gold>{player}</gold> сброшен.</green>"
status-usage: "{prefix}<yellow>Использование: /gsantibot status <player></yellow>"
status-online: "{prefix}<white>Игрок <gold>{player}</gold>: state=<aqua>{state}</aqua>, details=<gray>{details}</gray>, ip=<gray>{ip}</gray>, seconds=<gold>{seconds}</gold>, whitelist=<gray>{whitelisted}</gray></white>"
status-whitelisted: "{prefix}<white>Игрок <gold>{player}</gold> находится в whitelist.</white>"
status-recent: "{prefix}<white>Игрок <gold>{player}</gold> недавно проходил проверку. Последний IP: <gray>{ip}</gray></white>"
status-unknown: "{prefix}<red>По игроку <gold>{player}</gold> нет данных.</red>"
whitelist-usage: "{prefix}<yellow>Использование: /gsantibot whitelist <add|remove|check> <player></yellow>"
whitelist-added: "{prefix}<green>Игрок <gold>{player}</gold> добавлен в whitelist.</green>"
whitelist-already: "{prefix}<yellow>Игрок <gold>{player}</gold> уже находится в whitelist.</yellow>"
whitelist-removed: "{prefix}<green>Игрок <gold>{player}</gold> удалён из whitelist.</green>"
whitelist-missing: "{prefix}<yellow>Игрок <gold>{player}</gold> не найден в whitelist.</yellow>"
whitelist-present: "{prefix}<green>Игрок <gold>{player}</gold> находится в whitelist.</green>"
whitelist-absent: "{prefix}<yellow>Игрок <gold>{player}</gold> не находится в whitelist.</yellow>"
ipban-usage: "{prefix}<yellow>Использование: /gsantibot ipban <ip> [reason]</yellow>"
ipban-success: "{prefix}<green>IP <gold>{ip}</gold> заблокирован. Причина: <gray>{reason}</gray></green>"
ipunban-usage: "{prefix}<yellow>Использование: /gsantibot ipunban <ip></yellow>"
ipunban-success: "{prefix}<green>IP <gold>{ip}</gold> разблокирован.</green>"
ipunban-missing: "{prefix}<yellow>IP <gold>{ip}</gold> не был заблокирован.</yellow>"
ipcheck-usage: "{prefix}<yellow>Использование: /gsantibot ipcheck <ip></yellow>"
ipcheck-hit: "{prefix}<white>IP <gold>{ip}</gold> заблокирован. Причина: <gray>{reason}</gray>. Осталось: <gold>{seconds}</gold> сек.</white>"
ipcheck-miss: "{prefix}<yellow>IP <gold>{ip}</gold> не находится в блокировке.</yellow>"
help-header: "{prefix}<white>Доступные команды GsAntiBot:</white>"
help-line-1: "<gray>/gsantibot reload</gray> <white>- перезагрузить config.yml и messages.yml</white>"
help-line-2: "<gray>/gsantibot forceverify <player></gray> <white>- вручную завершить проверку</white>"
help-line-3: "<gray>/gsantibot unverify <player></gray> <white>- сбросить кэш проверки игрока</white>"
help-line-4: "<gray>/gsantibot status <player></gray> <white>- показать состояние проверки</white>"
help-line-5: "<gray>/gsantibot whitelist <add|remove|check> <player></gray> <white>- управление whitelist</white>"
help-line-6: "<gray>/gsantibot ipban|ipunban|ipcheck <ip></gray> <white>- управление IP-блокировками</white>"
help-line-7: "<gray>/gsantibot help</gray> <white>- показать эту справку</white>" PHP:
<?php
declare(strict_types=1);
return [
'site_name' => 'GsAntiBot Test',
'base_url' => 'http://127.0.0.1:8081',
'plugin_api_base' => 'http://127.0.0.1:8080',
'plugin_session_path' => '/api/session',
'plugin_verify_path' => '/api/verify',
'timeouts' => [
'http_seconds' => 10,
],
];