Как забанить IP адреса списком

Неугодные IP-адреса можно забанить не только по отдельности, используя файл .htaccess и онлайновый генератор кода, но и списком, причем этот список вы можете регулярно обновлять через FTP.

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

<?php

$file = array_map('trim', file('ban.txt')); #берем данные из файла
foreach ($file as $expression)

{
$expression = str_replace('.', '.', $expression);
$expression = str_replace('*', '(.*)', $expression);
if (preg_match('#' . $expression . '#', $_SERVER['REMOTE_ADDR'])) #проверяем IP
{
header('HTTP/1.1 403 Forbidden'); #отправляем в ответ заголовок 403
die("<title>BANNED</title>rnrn<h1>You Are Banned! / Доступ к сайту для Вас заблокирован.</h1>"); #передаем привет
}
}

?>

Смекнули, что ban.txt — это обычный текстовый файл, котрый содержит простой список IP-адресов? Вот примерно такой:

188.92.76.233
94.45.*.96
94.45.166.*

Заметили * в адресах. Вот именно так и банятся целые подсети спаммеров. Например, 94.45.166.* означает, что будут забанены адреса с 94.45.166.0 до 94.45.166.255.
Почему бы этот код просто не добавить в header.php в самое начало? Довольно удобно сидеть дома и постепенно накапливать базу IP адресов спаммеров, периодически ее просто обновляя и закидывая в блог через FTP.

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. serg

    А есть разница в каком месте кода шаблона будет находиться этот код?

    Ответить
    1. Лучше вставлять в header.php до строчки body.

      Ответить
  2. Эсъюдс

    А не легче ли обновлять «Параметры => Обсуждение => Черный список» вместо того, чтобы вставлять коды и грузить по FTP?

    Ответить
    1. С помощью FTP можно автоматизировать процесс обновления черного списка (например, синхронизация по расписанию).

      Ответить
  3. Эсъюдс

    Тиарус, проблема в том, что меня замучил спам с одной подесети. Конечно Акисмет весь его метит, но гордо мне сообщает, что в очереди стоит 200 спам комментариев и приходится их проверять. Про тот черный список, что я тебе написал — он не работает. То есть все комментарии с того IP заносятся в очередь, но я вообще не хочу их видеть.

    Я только сейчас понял, что ты предлагаешь бан подсететей — то есть с конкретного IP вообще нельзя будет написать? Я правильно понимаю?

    Ответить
  4. Эсъюдс

    Данный код не работает. Его вставка в шаблон вызывает появление страницы ошибки с текстом: «Parse error: syntax error, unexpected ‘=’ in /home/asjudc/vizualdata.ru/wp-content/themes/grey-matter/header.php on line 39».

    Ответить
    1. Воспользуйтесь способом, описанном в посте Как забанить неугодные IP | .HTACCESS Banning Generator: https://n-wp.ru/kak-zabanit-neugodnyie-ip-htaccess-banning-generator/

      Ответить