Как забанить 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("BANNEDrnrn

You Are Banned! / Доступ к сайту для Вас заблокирован.

"); #передаем привет } } ?>

Смекнули, что 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 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

7 Комментарии

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

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

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

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

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

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*