|
Скрипт написан для решения проблем клиентов хостинг-провайдера www.1Gb.ru связанных с нагрузкой на сервер в результате попыток скачать сайт полностью программой скачивания сайта. Архив со скриптом можно взять по ссылке http://dmach.ru/prog/wgetblock/wgetblock.rar.
[править] ТеорияВ страницу сайта вы размещаете скрытую ссылку таким образом, что "живой" человек никогда не неё не кликнет. Программа скачивания сайта не знает о такой хитрости и обходит все ссылке в коде сайта даже если они оформлены таким образом, что визуально на странице не видны. Когда программа которая обходит ваш сайт попадает на такой скрытый скрипт то скрипт точно знает, что источник запроса можно блокировать - он создаёт инструкцию по блокировке и помещает её в скрипт который прописан для всех страниц сайта записывая туда ip-адрес источника атаки. Далее при обработке последующих запросов программа доходит только до кода блокировщика, который прекращает выполнение запроса по признаку соответствия ip-адреса источника и своей базы с "плохими" адресами. Недостатки:
Некоторые достоинства:
[править] Инструкция по установкеДля установки нужно выполнить следующие действия:
Испытания скрипта были проведены для программ Teleport Pro и wget - обе программы были успешно блокированы. [править] Подробное описание[править] Блокировщик (по умолчанию - block.php)Код вызова блокирующего скрипта должен быть вписан в скрипт php который подключается для всех обращений к сайту или к требуемой группе скриптов. Например, вы можете разместить его в файле index.php, если все обращения на сайт идут через него или в файл config.php если он подключается для всех скриптов сайта. Пример подключения блокирующего модуля: <?php include '/home/virtwww/w_site_715a5517/http/block.php'; ?> [править] Уловитель (по умолчанию - catch.php)Уловитель вам нужно разместить таким образом, что бы живой человек не мог попасть на скрипт с ним, это можно сделать, к примеру, пустой ссылкой: <a href='catch.php'></a> Что бы обойти вариант, когда человек инициирует повторную скачку сайта постарайтесь видоизменять ссылку каждый раз при обращении к странице, например дописывая какой-нибудь параметр средствами того же php: <?php print "<a href='catch.php?p=".rand(1, 100)."'></a>"; ?> Если ожидать от программы скачивания сайта повышенного интеллекта - что она не будет открывать пустые ссылки (вдруг кто такое напишет), можно усложнить ссылку скрыв её при помощи CSS а не пустого тела. Например, так: <?php print "<a href='catch.php?p=".rand(1, 100)."' style='visibility: hidden;'>My photo</a>"; ?>
Скрипт-уловитель конфигурируется путём задания нужных параметров в теле скрипта. Единственный обязательный параметр - $blockScriptPath, полный физический путь к скрипту-блокировщику. [править] Меры предосторожностиТак как есть вероятность, что на данный скрипт попадёт какая либо поисковая система (например Яндекс) и тем самым будет блокирована - нужно принять меры предосторожности против этого. В качестве одной из мер - размещение файла robots.txt запрещающего индексировать скрипт-уловитель. Пример инструкций файла robots.txt ниже: User-agent: * Disallow: /catch.php Если же поисковая система проигнорирует директивы файла robots.txt и попадётся в скрипт-уловитель. Чтож, сама виновата. В любом случае, вы сможете получить уведомление на электронную почту и быстро снять блокировку. [править] Дополнительные замечания
[править] Обновления скрипта
[править] Варианты для других технологийТак же пользователями хостинга 1Gb.ru были написаны реализации скрипта для других скриптовых технологий:
[править] См. также
|
|





