Данный скрипт отсечёт мне кажется всех ботов Код: function cheked_proxy(){ if($_SERVER['HTTP_X_FORWARDED_FOR']!=""){die("<div class='warning'>Вы используете proxy server, это недопустимо, сожалеем но это наше требование</div>");} if($_SERVER['HTTP_CLIENT_IP']!="" and $_SERVER['REMOTE_ADDR']!=$_SERVER['HTTP_CLIENT_IP']){die("<div class='warning'>Вы используете proxy server, это недопустимо, сожалеем но это наше требование</div>");} } //ЧЕК БОТ КРЭЗИ РЕЖИМ// function checked_bot_crazy(){ if($_SERVER['HTTP_USER_AGENT']==""){die("<div class='warning'>Ваш броузер не определён, сожалеем но это наше требование</div>");} $coockiename1=md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_USER_AGENT']."78eryher78h768erher87h77er8herh7her7h"); $coockiename2=md5($_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT'].$_SERVER['REMOTE_ADDR']."re8h7er89h67erh6er8her8h6erhye9gyreyg"); if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename1)) {}else{ if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename2)) {}else{ $hashcoockie = @fopen("logs/site_users/hashcoockie","a+"); $D = "$coockiename1 | $coockiename2\r\n"; fwrite($hashcoockie,$D); fclose($hashcoockie); }} echo " <!-- проверка есть ли у цели разрешение экрана --> <script type='text/javascript'> function setCooc (){document.cookie = '".$coockiename1."=' + screen.availWidth; document.cookie = '".$coockiename2."=' + screen.availHeight; }var Scrnonload = window.onload; window.onload = function () { if(Scrnonload) Scrnonload(); setCooc(); }</script> <!-- проверка есть ли у цели разрешение экрана --> "; $width = $_COOKIE[$coockiename1];$height = $_COOKIE[$coockiename2]; if($width=="" or $height==""){ if($_SERVER['HTTP_REFERRER']=="/" or $_SERVER['HTTP_REFERRER']=="index.php"){ die("<div class='warning'>Ваш броузер не поддерживает JavaScript либо выключены Coockie, сожалеем но это наше требование1</div>");}else{die("<meta http-equiv='Refresh' content='0;URL=index.php'>");} } $coockiename1=md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_USER_AGENT']."78eryher78h768erher87h77er8herh7her7h"); $coockiename2=md5($_SERVER['HTTP_USER_AGENT'].$_SERVER['HTTP_ACCEPT'].$_SERVER['REMOTE_ADDR']."re8h7er89h67erh6er8her8h6erhye9gyreyg"); if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename1)) {}else{die("<div class='warning'>Ваш броузер не поддерживает JavaScript либо выключены Coockie, сожалеем но это наше требование</div>2");} if (strpos(file_get_contents("logs/site_users/hashcoockie"), $coockiename2)) {}else{die("<div class='warning'>Ваш броузер не поддерживает JavaScript либо выключены Coockie, сожалеем но это наше требование</div>3");} } //ЧЕК БОТ НОРМАЛ РЕЖИМ// function cheked_bot_normal(){ if($_SERVER['HTTP_USER_AGENT']==""){die("<div class='warning'>Ваш броузер не определён, сожалеем но это наше требование</div>");} $ip = $_SERVER['HTTP_CLIENT_IP'];if($ip==""){$ip=$_SERVER['REMOTE_ADDR'];} $counter = $ip; setcookie("botchaltestbot",$counter); if($_COOKIE['botchaltestbot']!=$ip){ if($_SERVER['HTTP_REFERRER']=="/" or $_SERVER['HTTP_REFERRER']=="index.php"){ die("<div class='warning'>Ваш броузер не определён либо у вас отключены Coockie, сожалеем но это наше требование</div>");}else{die("<meta http-equiv='Refresh' content='0;URL=index.php'>");} }} //ЧЕК РАЗМЕР ЗАГОЛОВКОВ// function checked_size_http_header(){ $maxheadersize="300"; if(strlen($_SERVER['HTTP_USER_AGENT']) > $maxheadersize or strlen($_SERVER['HTTP_REFERRER']) > $maxheadersize or strlen($_SERVER['HTTP_ACCEPT']) > $maxheadersize or strlen($_SERVER['CONTENT_LENGTH']) > $maxheadersize or strlen($_SERVER['HTTP_COOKIE']) > $maxheadersize){die("<div class='warning'>Ответы вашего броузера серверу слишком длинные, сожалеем но это наше требование</div>");} } //РАЗМЕР ПОСТ И ГЕТ// function cheked_size_post_and_get(){ $maxPOSTsize="200"; $maxGETsize="100"; foreach($_POST as $val)if(strlen($val)>$maxPOSTsize){die("<div class='warning'>Ответы вашего броузера серверу слишком длинные, сожалеем но это наше требование</div>");}; foreach($_GET as $val)if(strlen($val)>$maxGETsize){die("<div class='warning'>Ответы вашего броузера серверу слишком длинные, сожалеем но это наше требование</div>");}; } Писал всё руками, если что-то не робит, отписывайтесь!!! Начнём по порядку: 1 функция function cheked_proxy() делает простую проверку на использование прокси 2 функция function checked_bot_crazy() - на мой взгляд самая крутая! что она делает: 1) Генерирует названия куки основываясь на HTTP заголовках клиента и отправляет их ему, название кукисов сгенерированно а их содержание это разрешение экрана которое берётся из яваскрипта(у ботов ведь нету разрешения, а написать бот который понимает js это целове дело) потом записывает имена куки в файл в дериктории logs/site_users/hashcoockie (hashcoockie это сам файл) далее если куки на клиенте найдены то снова генерирует название основываясь на хеадерах и сравнивает с тем что есть в базе, если всё впорядке то пропускает юзера дальше, если нет то умирает. Этим мы отсеиваем как я и сказал ботов. Даже если хакер подсунет из броузера куки то они не совпадут с генерируемым названием куки, так как у бота и броузера заголовки разные, как вы уже заметили в скрипте берутся такие вещи как $_SERVER['REMOTE_ADDR'] $_SERVER['HTTP_USER_AGENT'] и самое главное что никто никогда в ботах не высталяет это $_SERVER['HTTP_ACCEPT'] (какие файлы броузер понимает) Единственный возможный обход это полностью эдентичные заголовки в боте и броузере, но до этого злоумышленнику надо ещё догадаться!) И ещё 1 минус... про яндекс на сайте можно забыть(он же тоже бот...) Так следующая функция простой чек бота - cheked_bot_normal() посылает куки, редиректит и принимает куки, если всё ок то пропускает дальше Следующая довольно важная функция это checked_size_http_header() чекает заголовки на их размер, если размер превышает $maxheadersize то умирает cheked_size_post_and_get() тоже самое, проверяет велечину всех гет и пост запросов [war2]На страницу сайта вставляем так: include "файл с этими функциями"; И если надо активировать какую либо функцию то пишите в вашем файле index.php Код: cheked_size_post_and_get(); название функции(это для тех кто синтаксис не знает :lol: ) [/war2] P.S. Мне тоже иногда плюсики нужны P.P.S. Это кстати маленький отрывок PMW 1.5 думаю представляете будущий авторитет этого проекта скачать http://depositfiles....files/cp0tk3wtb
только прокси ?или VPN тоже? PS Имхо бота даже для такой реги написать можно =) А таг плюсег!1 PSS Ставте ReCapcha,её фиг обойдёшь =Р
Ну всё равно)защита ведь...и даже такая проверка не спасёт PS Всё что создал человек можно взломать =)
Смотря как писать...можно простым вариантом через вебброузер.Если рега проверяет и на VPN то придёцо потрудицо если нет то юзаем vpn.Куки будут юзацо как и в обычном браузе (при надобности удаляюцо) ну остальное код код и есчо раз код
ну тогда вот тебе Код: function time_pages_load($deletetime,$maxpages,$pertime,$page_for_ban){ $time=time(U); $time_detected=$time-$pertime; $ip = $_SERVER['HTTP_CLIENT_IP'];if($ip==""){$ip=$_SERVER['REMOTE_ADDR'];} $query = "select time_load from page_load_detected where ip='$ip' and time_load>'$time_detected'"; $result=mysql_query($query);$result=mysql_num_rows($result); if($result >= $page_for_ban){ $htaccess = @fopen(".htaccess","a+"); $deny = "deny from ".$ip." \r\n"; fwrite($htaccess,$deny); fclose($htaccess); die("<div class='warning'>Вы слишком часто листаете страницы, этим вы нагружаете сервер, просматривате страницы не больше чем ".$maxpages." страниц в ".$pertime." секунд(ы) <font color='red'>На данный момет вы заблокированы по IP адресу</font> для разблокировки свяжитесь с администратором</div>");} if($result >= $maxpages){die("<div class='warning'>Вы слишком часто листаете страницы, этим вы нагружаете сервер, просматривате страницы не больше чем ".$maxpages." страниц в ".$pertime." секунд(ы) <a href='index.php'>Хорошо, я постараюсь</a></div>");} $time_deleted=$time-$deletetime; $result=mysql_query("delete from page_load_detected where time_load < '$time_deleted'"); $query = "insert into page_load_detected (ip,time_load) values('$ip','$time')"; $result=mysql_query($query); } создайте таблицу page_load_detected Код: CREATE TABLE `page_load_detected` ( `id` int(20) NOT NULL AUTO_INCREMENT, `ip` varchar(50) NOT NULL DEFAULT '', `time_load` int(40) NOT NULL , PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=cp1251; и файл .htaccess в корне в index.php добавте Код: time_pages_load("600","3","1","10"); 1 число, фактически врямя ранения логов 2 число страниц 3 временной промежуток в секундах в котором можно просматривать (предыдущее число) страниц 4 если за (третье число) просмотрено N страниц то бан по .htaccess по ip в нашем варианте можно просматривать 3 страницы в 1 секунду, если просмотрено 10 страниц за 1 секунду то бан по IP, время хваранения 10 минут(600 секунд)
А вот если вдруг окажется N просмотров за N времени то автоматом вкл защита от ботов)))) Дело техники! Всё автоматом
Ну дак всеравно ведь можно написать бота =\ не такого скоростного но всёже PS Самая тру защита это рекапча.Она вставляецо в processor.php и хер ломанёшь ботами теперь...и эту же защиту по глупости (или нупству оО)могут вставить в index.php и йа упаду пат стол хДД
угу =) даже если сделать защиту(тоесть отсеивание ботов) то значит кто то всё равно будет не отсеиваться и боту будет достаточно замаскироваться под него(в данном случае под браузер)
так и что надо будет этому боту, если у него ограничение по времени на просмотры страниц стоит, тут не брутфорс не ддос...