Деньги с Интернета

Блокировка сайта от спамеров по IP E-mail
Обзоры - Автоматизация

Так получилось, что на один из моих сайтов повадились постить спам. Причем постить весьма тупо - одно и тоже сообщение добавлять в руками комментарии, именно руками, тк менял название и id окон для ввода и кнопки отправки сообщения, но на спам это не влияло.

Конечно можно было бы включить премодерацию и заходить каждый вечер на сайт проверять посты, но зачем напрягать себя из за каких то спаммеров?

Спам шел с 2 IP, латвийского происхождения, я честным образом предупредил владельцев адресов по емайл (адресс посмотрел по ip lookup) о спаме и о том, что если не примут меры - сайт будет блокирован для этих адресов.

А после следующего спамм сообщения занялся блокировкой сайта от дебилов-сеошников.

 Блокировки по IP решил делать для всего сайта, для этого я создал файл ip_ban.php следующего содержания:

 

 

 <?php
/* http://wm-help.net/ */
/* Сообщение при банне ip */
define("bann_message", "Для вашего IP: %ip% доступ к сайту закрыт. Обращайтесь за решением вопроса к своему провайдеру.");

/* Предупреждение о возможности банна по ip */
define("wrong_message", "Вы предупреждены администратором данного сайта о возможной блокировке вашего IP: %ip% в случае дальнейшего нарушения правил.");

/* массив с ip и типом блокировки. в ключе массива IP, в значении тип блокировки */
$bann_array = array(
  "188.92.76.208"=>"bann", //спамер в коменты латвия
   //"127.0.0.1"=>"wrong" // Test
);

/* Функция для почти 100% определения IP адреса посетителя. */
/* Перебирает все возможные переменные с IP. */
function _ip()
{
if(isset($HTTP_SERVER_VARS)) {
if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
$realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) {
$realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}else{
$realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
}else{
if(getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
}elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
}else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
return $realip;
}

/* Определяет, что делать с владельцем того или иного ip адреса */
function bann_on_not_to_bann()
{
global $bann_array; // получаем массив с ip адресами
$user_ip = _ip(); // получаем ip

/* разбираем массив на ключ и значение */
foreach($bann_array as $ip=>$type)
{
if ($ip == $user_ip) // проверяем
{
switch($type) // если ip совпал то смотрим что делать
{
case "wrong": // предупреждение
{
echo str_replace("%ip%", $user_ip, wrong_message); // выводим предупреждение
break; // выход из switch
}
case "bann": // блокировка
{
die(str_replace("%ip%", $user_ip, bann_message)); // Сообщение о том, что доступ закрыт + завершение работы php
// break не требуется т.к. дальше уже ничего не выполняется
}
}
}
}
}

/* проверяем владельца ip и блокируем\предупреждаем если это спамер */
bann_on_not_to_bann();
?>

 А в файле index.php добавил такую строку 

 

include 'ip_ban.php'; 
 IP добавляем в $bann_array (не забываем ставить запятую после предыдущего значения).

 

 Теперь, спамер, при попытке зайти на сайт получает уведомление о том, что он не может зайти по причине блокировки. Если произойдет блокировка пользователей какой либо подсети или региона - то вздрючат провайдера, провайдер отпишется мне (или найдет письмо от меня) и будет конструктивный разговор о спамме с данных ip адресов.

Сам скрипт не мой, нашел в просторах интернета, на авторство скрипта не претендую.

По хорошему, этим скриптом надо блокировать такие вещи как форум и комментарии, но разбираться было лениво, да и смысла давать доступ спаммерам к своему ресурсу я не вижу. 

Конечно, можно обойти скрипт используя анонимайзеры и  прокси, но добавить ip в скрипт - дело 10 секунд :)

Кризису нет - Деньги с Интернета 

Обновлено ( 07.11.2009 10:51 )
 

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


Защитный код
Обновить

Меню сайта