{% else-1 %}
Любой вебмастер рано или поздно сталкивается с проблемой защиты своего сайта от слишком частого обращения к страничкам сайта с какого-либо IP адреса. Хорошо, если в этот момент вебмастер находится у компьютера и может вручную забанить IP, с которого идет DDoS атака или скачивание сайта. Но что делать, если Вы далеко от компьютера? Ведь нельзя же постоянно быть за монитором и отслеживать подобные ситуации.

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

Для работы нашего скрипта автобана необходима поддержка хостингом MySQL.

В MySQL необходимо будет создать две таблицы: all_visits и black_list_ip.

В all_visits мы будем помещать информацию об IP адресе посетителя и времени обращения к страничке. В black_list_ip будут храниться IP адреса, доступ на сайт которым будет запрещен.
В обеих таблицах в поле id напротив AUTO_INCREMENT должна стоять галочка! При необходимости в дальнейшем данные таблицы могут быть расширены для хранения дополнительной информации.

                        
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP']))
$ip=$_SERVER['HTTP_CLIENT_IP'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
else $ip=$_SERVER['REMOTE_ADDR'];
$bot=$_SERVER['HTTP_USER_AGENT'];

if (strstr($_SERVER['HTTP_USER_AGENT'], 'Yandex')) {$bot='Yandex';}
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Google')) {$bot='Google';}
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Yahoo')) {$bot='Yahoo';}
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'Mail')) {$bot='Mail';}

if ($bot!='Yandex' and $bot!='Google' and $bot!='Yahoo' and $bot!='Mail') {

$link=mysql_connect(Хост,Логин,Пароль) or die("Could not connect: ".mysql_error());
mysql_select_db("Имя базы", $link);

$result=mysql_query("INSERT INTO all_visits (ip,date)
VALUES ('".$ip."','".time(true)."')");
$result=mysql_query("SELECT count(id) FROM all_visits
WHERE (ip='".$ip."' and date>'".(time(true)-10)."') LIMIT 1", $link);
$count_visit=mysql_fetch_array($result);

if ($count_visit[0]>10) {
$result=mysql_query("INSERT INTO black_list_ip (ip) VALUES ('".$ip."')");

$file_htaccess=".htaccess";

$lines_htaccess[]="Order Allow,Denyrn";
$lines_htaccess[]="Allow from allrn";

$result=mysql_query("SELECT ip FROM black_list_ip ORDER BY INET_ATON(ip)", $link);
$number=mysql_num_rows($result);

for ($n=1; $n<=$number; $n++) {
$htaccess_ip=mysql_fetch_array($result);
$lines_htaccess[]="Deny from ".$htaccess_ip["ip"]."rn";
}

file_put_contents($file_htaccess, $lines_htaccess);
}
}
?>
-3 35 0
0

Нет фото
Chainsaw * [мошенник] 0
• 27 дек 2014, 15:07


о боги

0

Нет фото
APLLEz * 0.07
• 8 сен 2014, 17:30


и что это за хрень?

0

Нет фото
• 6 сен 2014, 22:12


да ну наф?Или я нуб или автор олень?Зачем использовать Базу при ддосе?Ведь нагрузка станет еще больше!*

0

Фотография
• 4 сен 2014, 17:30


*
Так еще больше сайт загружается.

0

Нет фото
Yee * 1.81
• 4 сен 2014, 17:26


ЗЕЛЁНЫЙ ШЕРШЕНЬ, Добавляет блокированный IP