Четверг, 2025-01-23, 8:40 AM
Статьи - PHP
Приветствую Вас Гость | RSS
Главная страница Каталог статей Регистрация Вход
Меню сайта

Категории каталога
PHP [158]
Статьи по PHP

Наш опрос
Какой раздел нужно пополнить (создать) ?
Всего ответов: 100

Начало » Статьи » PHP » PHP

Ловушка для спам-бота
100 % работающий скрипт!

Многие спам-боты, чтобы скрыть свои реальные имена (названия), которые легко отследить по записи user_agent, изменяют эту запись, меняя её на записи разных браузеров (например: "mozilla/4.0 (compatible; msie 5.5; windows nt 5.0)" и так далее). Также эти боты игнорируют стандарты записей для файла robots.txt (описание стандарта Вы можете прочесть здесь www.robotstxt.org/wc/exclusion.html robots.txt standard).

Можно, конечно, пойти путём записи нужных инструкций в файл robots.txt, а можно и предпринять другой способ, который мы опишем ниже.

Метод №1

Используем специальную директорию /bot-trap:
1. создайте поддиректорию /bot-trap (можете использовать любое другое имя)
2. сделайте такую запись в файле robots.txt:

user-agent: *
disallow: /bot-trap/

3. вставьте невидимую ссылку (это пиксел размера 1х1) в самом начале входной страницы сайта:

<a href="/bot-trap/"><img src="images/pixel.gif" border="0" alt=" " width="1" height="1"></a>

Теперь можно ждать и просматривать лог сервера, чтобы посмотреть кто перешёл по этой ссылке.
Человек не увидит этой ссылки, поэтому не сможет по ней перейти, а поисковые системы управляются директивами, записанными в фале robots.txt , поэтому никогда не посетят директорию /bot-trap.

4. В созданную нами директорию мы поместим /bot-trap/index.php. С помощью этого скрипта мы будем автоматически сохранять все ip адреса в файл blacklist.dat.
Для начала создайте пустой файл ../blacklist.dat и сделайте его доступным для чтения и записи на сервере.

* В тексте скрипта измените значения, выделенные курсивом.

<?php
if(phpversion() >= "4.2.0") {
extract($_server);
}
?>
<html>
<head><title> </title></head>
<body>
<p>Здесь нечего смотреть. Так что же Вы здесь делаете?</p>
<p><a href="http://your.domain.ru/">вернуться назад</a></p>
<?php
$badbot = 0;
/* перебираем все записи файла blacklist.dat, чтобы не допустить задвоенности данных */
$filename = "../blacklist.dat";
$fp = fopen($filename, "r") or die ("Ошибка открытия файла ... <br>n");
while ($line = fgets($fp,255)) {
$u = explode(" ",$line);
if (ereg($u[0],$remote_addr)) {$badbot++;}
}
fclose($fp);
if ($badbot == 0) {
/* отсылаем информацию веб-мастеру */
$tmestamp = time();
$datum = date("y-m-d (d) h:i:s",$tmestamp);
$from = "badbot-watch@domain.ru";
$to = "hostmaster@domain.ru";
$subject = "Внимание! На сайт заходил спам-бот!";
$msg = "Бот пришёл с $request_uri $datum n";
$msg .= "адрес $remote_addr, агент $http_user_agentn";
mail($to, $subject, $msg, "from: $from");
/* добавляем запись в лог-файл blacklist.dat */
$fp = fopen($filename,'a+');
fwrite($fp,"$remote_addr - - [$datum] "$request_method $request_uri $server_protocol" $http_referer $http_user_agentn");
fclose($fp);
}
?>
</body>
</html>

5. Чтобы исключить повторный заход спам-бота на страницвы сайта, перед выводом любой страница сайта нужно проверять содержимое файла blacklist.dat:

<?php include($_server['document_root'] . "/blacklist.php"); ?>

Это текст скрипта blacklist.php , который нужно подключать ко всем страницам Вашего сайта:

<?php
if(phpversion() >= "4.2.0") {
extract($_server);
}
$badbot = 0;
/* перебираем все записи файла blacklist.dat */
$filename = "../blacklist.dat";
$fp = fopen($filename, "r") or die ("Ошибка открытия файла ... <br>n");
while ($line = fgets($fp,255)) {
$u = explode(" ",$line);
if (ereg($u[0],$remote_addr)) {$badbot++;}
}
fclose($fp);
if ($badbot > 0) { /* это спам-бот, запрещаем вход на сайт */
sleep(12);
print ("<html><head>n");
print ("<title>Сайт недоступен.</title>n");
print ("</head><body>n");
print ("<center><h1>Добро пожаловать!</h1></center>n");
print ("<p><center>Этот сайт временно недоступен ...</center></p>n");
print ("<p><center>Если Вы считаете, что это ошибка, отправьте письмо владельцу сайта.</center></p>n");
print ("</body></html>n");
exit;
}
?>

Метод №2

Другой метод не использует php и также запрещает доступ спам-ботов к Вашему сайту. Он заключается в использовании файла .htaccess.

Пример записи:

setenvifnocase user-agent "indy library" bad_bot
setenvifnocase user-agent "internet explore 5.x" bad_bot
setenvif remote_addr "195.154.174.[0-9]+" bad_bot
setenvif remote_addr "211.101.[45].[0-9]+" bad_bot
order allow,deny
allow from all
deny from env=bad_bot

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

Категория: PHP | Добавил: webmaster (2006-12-04)
Просмотров: 361 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Сервисы

Поиск по каталогу

Друзья сайта

| Ссылки 1 | Ссылки 2 | Ссылки 3 |
www.webmaster.clan.su Каталог+поисковая система be number one Bakililar.az Top Sites Сервис авто регистрации в
каталогах, статьи про раскрутку сайтов, web дизайн, flash, 
photoshop, хостинг, рассылки; форум, баннерная сеть, каталог 
сайтов, услуги продвижения и рекламы сайтов Скрипт для определения тиц (Яндекс CY: индекс цитирования). Определение pr (Google Pagerank). Проверить тиц pr сайта.
Copyright WebMaster.Clan © 2006 Бесплатный хостинг uCoz