Плагин Whois Ban -  через стандартный модуль sockets, он обращается на API сайта ip-api.com для получения Whois данных. К сожалению, альтернативных сайтов практически нет, т.к. все перешли на https, а предлагаемый AMX модуль такое не поддерживает (правда есть сторонние решения в виде модуля Curl, но об этом в другой раз).

Сайт ip-api.com имеет ряд ограничений на бесплатном тарифе (регистрация не требуется), по этому в плагине встроено кеширование, чтобы он по дружески относился к вашему серверу и сайту.

Что можно получить через Whois данные ?

В нашем случае, мы можем получить самое главное - это AS провайдера (вики), с которого заходит игрок. Проще говоря, нам не нужно определять диапазоны IP адресов и заниматься подобной дичью, а можем выдавать бан сразу по AS, отрубив всего провайдера целиком.

Подобную идею реализовал Lev и своем плагине СубнетБан, в виде отдельного амх модуля, но та разработка реально старая, а модуль на новых билдах серверов (в частности на линуксе), толком не работает.

Код для этого плагина я писал для себя, чтобы бороться с обходами. Весь код снабжен комментариями. Можете использовать в своих целях. Ничего подобного по реализации вы в Интернетах не найдете. Используются отложенные запросы, что не вызывает фризов на сервере, но на всяких случай в плагин встроен предохранитель, отключающий его работы, если по какой-то причине функция socket_open начнет капризничать.

Как это работает ?

При получении данных с Whois через Api, плагин их кеширует и сверяется со списком из файла whois_banlist.ini
Если AS игрока совпадает, он кикается.
В сам файли я уже добавил несколько AS хостингов и дата-центров.
Я предлагаю продолжить тему и публиковать IP адреса AS провайдеров игроков, которые играют через прокси. Я, по мере возможности, буду их добавлять и обновлять список.

Что такое Whois данные и что с ними делать ?

Самый простой способ получения Whois данных и AS по IP адресу здесь: https://2ip.ru/whois/
Отличить хостинг/дата-центр от домашнего провайдера достаточно легко. Многие указывают в данных слова Hosting, vds, и т.д.
Так же, практически всегда есть почта, которая и является сайтом провайдера или название фирмы, которое легко гуглится. С хостингов и дата-центров обычные игроки не заходят.

Минимальные требования 

AmxModX 1.8.3 и выше с поддержкой SOCK_NON_BLOCKING

Дополнительно

В плагин добавлено логгирование, в тех случаях, когда не удается получить ответ от сайта или определить AS. Это бывает редко и я грешу на сам модуль sockets, т.к. тот же Curl справляется с более сложными задачами без проблем.


Автор: SISA
Версия: 2.0