Скрипт написан для решения проблем клиентов хостинг-провайдера www.1Gb.ru связанных с нагрузкой на сервер в результате попыток скачать сайт полностью программой скачивания сайта. Архив со скриптом можно взять по ссылке http://dmach.ru/prog/wgetblock/wgetblock.rar.
Содержание |
В страницу сайта вы размещаете скрытую ссылку таким образом, что "живой" человек никогда не неё не кликнет. Программа скачивания сайта не знает о такой хитрости и обходит все ссылке в коде сайта даже если они оформлены таким образом, что визуально на странице не видны. Когда программа которая обходит ваш сайт попадает на такой скрытый скрипт то скрипт точно знает, что источник запроса можно блокировать - он создаёт инструкцию по блокировке и помещает её в скрипт который прописан для всех страниц сайта записывая туда ip-адрес источника атаки. Далее при обработке последующих запросов программа доходит только до кода блокировщика, который прекращает выполнение запроса по признаку соответствия ip-адреса источника и своей базы с "плохими" адресами.
Недостатки:
Некоторые достоинства:
Для установки нужно выполнить следующие действия:
Испытания скрипта были проведены для программ Teleport Pro и wget - обе программы были успешно блокированы.
Код вызова блокирующего скрипта должен быть вписан в скрипт php который подключается для всех обращений к сайту или к требуемой группе скриптов.
Например, вы можете разместить его в файле index.php, если все обращения на сайт идут через него или в файл config.php если он подключается для всех скриптов сайта.
Пример подключения блокирующего модуля:
<?php include '/home/virtwww/w_site_715a5517/http/block.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 были написаны реализации скрипта для других скриптовых технологий: