Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache: запрещаем скачивать сайт менеджерами закачек

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулась с тем, что безбожно скачивают сайт, а это здорово грузит сервер. Буквально моей крохе (серверу) хватает одного подключившегося с качалкой (при том, что у меня органичение на число соединений с одного IP), как swapinfo  показывает, что вместо обычных 10% своп израсходован на 50-60 %, при этом сервер сильно тормозит.
 
В числе прочих действий, я запретила скачивать качалками скрипты.
Для этого не понадобилось даже устанавливать дополнительные модули, все решилось модулем mod_setenvif, который идет с Apache-ем по дефолту.
 
Для тех, у кого он отсутствует, строки в httpd.conf для него такие (пути должны быть ваши):
 
LoadModule setenvif_module    libexec/apache/mod_setenvif.so
AddModule mod_setenvif.c  
 
Далее определяем User-Agent посетителя
и если он соотвествует юзер-агенту качалок, то запрещаем отдачу ресурса.
 
Мне нужно было закрыть от скачки скрипты, поэтому мой код выглядит так:
 
 
 
SetEnvIf User-Agent ^Teleport getout
SetEnvIf User-Agent ^Offline  getout
SetEnvIf User-Agent ^DISCo getout
 
    Order deny,allow
    Deny from all env=getout
    Allow from all
 
 
 
Это можно прописать в .htaccess, или в httpd.conf, в последнем случае так:
 
SetEnvIf User-Agent ^Teleport getout
SetEnvIf User-Agent ^Offline  getout
SetEnvIf User-Agent ^DISCo getout
<Directory ...>
    Order deny,allow
    Deny from all env=getout
    Allow from all
</Directory>
 
 
Документация по модулю mod_setenvif

 
http://httpd.apache.org/docs/mod/mod_setenvif.html#setenvif -- Apache 1.3.x
http://httpd.apache.org/docs-2.0/mod/mod_setenvif.html#setenvif  -- Apache 2.x
 
Документация по директиве SetEnvIf

 
http://httpd.apache.org/docs/mod/mod_setenvif.html#setenvif -- Apache 1.3.x
http://httpd.apache.org/docs-2.0/mod/mod_setenvif.html#setenvif  -- Apache 2.x
 
 
Список большого числа User-agent-ов:
http://www.webmasterworld.com/forum11/1084.htm
(будьте внимательны, не все советы того форума правильные)
 
 
Обзор менеджеров закачек

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 06:46 24-06-2003 | Исправлено: lynx, 06:48 24-06-2003
VoSi



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а что мешает изменить юзер агента???
в том же телепорте такое возможно!
реально можно какт-о испортить жизнь качкам л,ишь по методу запрета частых просмотров с одного айпи! хотя ,если просмотр через прокси ... из-под большой локали, но и тут можно определить внутрисетевой айпишник ... если прокся говорит его... блин ... я и сам уже запутался ... витзде подводные камни %)

Всего записей: 212 | Зарегистр. 08-12-2002 | Отправлено: 21:28 09-07-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Действительно, не проблема подменить User-Agent.
Раз уже стоит ограничение на кол-во одновременных коннектов с Ай-Пи, может, стоит это ограничение уменьшить?
 
Хорошая идея производить такой-себе статистический анализ кол-ва запросов / ед. времени, ну и ограничивать его соответственно.
А для проксей можно использовать механизм сессий, т.е. генерировать в куки уникальный идентификатор и ограничивать исходя из него а не из IP.
 
Вот только если посчитать время убитое на реализацию подобной системы... Апгрейд обойдется дешевле

----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 00:12 10-07-2003
VoSi



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если куки отключены ... пол общаги в КПИ (покрайнемере ФИВТовской) поотключали в броузерах все что можно ... (это я к примеру) ... и как ты будешь ограничивать тогда против качков в этом случае,??? хотя по статистике больше юзеров юзают вкл куки... ноооо

Всего записей: 212 | Зарегистр. 08-12-2002 | Отправлено: 01:46 10-07-2003
tankistua

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну это практически невозможно , а вот отрубить некоторых юзеров со специфическими настройками ой как легко...
 
не канает...

Всего записей: 9572 | Зарегистр. 15-01-2002 | Отправлено: 14:22 10-07-2003
VoSi



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
давайте в этом топике кидать рассуждения на сабж ... авось придумаем чегото такое ... что уже будет нелегко продвинутым юзерам обойти?!!!!
вместе всегда легче!
 

Всего записей: 212 | Зарегистр. 08-12-2002 | Отправлено: 17:34 10-07-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VoSi
 

Цитата:
а что мешает изменить юзер агента???

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

Цитата:
 
80.*.*.18 - - [21/Jul/2003:13:45:23 +0700] "GET /cgi-bin/ib/printpage.cgi?forum=6&topic=48 HTTP/1.0 " 200 9064 "**/cgi-bin/ib/topic.cgi?forum=6&topic=48" "Teleport Pro/1.29"

 
Его не победить, хоть и в логах есть юзер-агент, вот настройки:
 
<Directory "/usr/home/site/wwwsite1/cgi-bin/">  
Options Includes ExecCGI
 
SetEnvIf User-Agent ^Teleport getout
SetEnvIf User-Agent ^Offline  getout
SetEnvIf User-Agent ^DISCo getout
 
    Order deny,allow
    Deny from all env=getout
    Allow from all
</Directory>
 
 
Дажене знаю, что делать. Оффлайн Экспрорером тестила - все ОК.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 12:47 21-07-2003 | Исправлено: lynx, 12:48 21-07-2003
djelektronik

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lynx может проще тебе паковать отдельный материал и выкладыавть в архивах если кому надо
пусть тащат наздоровье

Всего записей: 2530 | Зарегистр. 28-06-2001 | Отправлено: 13:05 21-07-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
djelektronik
 
Мне не надо другой способ решения того, что должно работать, надо понять причину, почему это не работает.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 13:12 21-07-2003
liks



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
lynx  

Цитата:
Для тех, у кого он отсутствует, строки в httpd.conf для него такие (пути должны быть ваши):  
LoadModule setenvif_module libexec/apache/mod_setenvif.so  
AddModule mod_setenvif.c  

У меня нет такого мудуля в Апаче (Win), где его можно взять?  

Цитата:
 
Далее определяем User-Agent посетителя  
и если он соотвествует юзер-агенту качалок, то запрещаем отдачу ресурса.  
Мне нужно было закрыть от скачки скрипты, поэтому мой код выглядит так:  
 
SetEnvIf User-Agent ^Teleport getout  
SetEnvIf User-Agent ^Offline getout  
SetEnvIf User-Agent ^DISCo getout  
 
Order deny,allow  
Deny from all env=getout  
Allow from all  
 

В каом месте httpd.conf это надо прописывать?  

Цитата:
 
Это можно прописать в .htaccess, или в httpd.conf  
 

 
А как это сделать в .htaccess и если надо запретить скачивать качалками не только скрипты скрипты, но и архив или html?  

Всего записей: 55 | Зарегистр. 09-04-2002 | Отправлено: 01:41 15-09-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
liks
 

Цитата:
У меня нет такого мудуля в Апаче (Win), где его можно взять?  

 
Вообще-то странно - он идет по дефолту.
 
Какая версия Апача то?
 
Для 2.х: http://httpd.apache.org/docs-2.1/en/mod/mod_setenvif.html
 
Для 1.3.х: http://httpd.apache.org/docs/mod/mod_setenvif.html
 
 
А почему ты решил, что его у тебя нету?  
 
Для 1.3.х:
В папочке Апача в директории /modules в поддиректории   standard/ найди файл: mod_setenvif.c
 
Для 2.х:
modules/mod_setenvif.so
 
 
Эту строчку:
 

Цитата:
LoadModule setenvif_module libexec/apache/mod_setenvif.so  

 
Для 1.3.х не надо писать.
Только эту:
AddModule mod_setenvif.c
 
Затем лучше написать так:
 

Код:
 
<IfModule mod_setenvif.c>
 
и дальше, что надо
 
</IfModule>
 

 
 
 
 

Цитата:
В каом месте httpd.conf это надо прописывать?  

В той директории, которую ты хочешь запретить выкачивать качалками.
Например в DocumentRoot - это для всего сайта тогда будет.
 
то есть:

Код:
 
DocumentRoot "дира"
<Directory "дира">
#Пошли установки:
<IfModule mod_setenvif.c>
 
и дальше, что надо
 
</IfModule>
....
</Directory>
 
 

 
 

Цитата:
А как это сделать в .htaccess и если надо запретить скачивать качалками не только скрипты скрипты, но и архив или html?  

 
Положить .htaccess в корень сайта.
 
В .htaccess не пиши <Directory ...>
Пишет сразу установки:
 

Код:
SetEnvIf User-Agent ^Teleport getout  
SetEnvIf User-Agent ^Offline getout  
SetEnvIf User-Agent ^DISCo getout  
 
Order deny,allow  
Deny from all env=getout  
Allow from all  

 
 
Добавлено

Цитата:
Эту строчку:  
 
 
Цитата:
LoadModule setenvif_module libexec/apache/mod_setenvif.so    
 
 
Для 1.3.х не надо писать.  

 
В смысле если для Винды - то не надо. Весь пример выше в первом посте - на Никсах ессно.
 

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 03:40 15-09-2003
Aleksanders



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как вариант, могу предложить автоматическую замену по маске во всех файлах сайта ссылок http://итд на ссылки javascript:... А, кроме того, если сайт небольшой, выложить его в архивчике (zip, rar, rar-sfx, tgz... или любом другом, по вкусу). Ну и пусть радуются.

----------
LINUX = Linux Is Not a UniX

Всего записей: 1428 | Зарегистр. 07-07-2002 | Отправлено: 06:13 15-09-2003
liks



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Aleksanders

Цитата:
Как вариант, могу предложить автоматическую замену по маске во всех файлах сайта ссылок http://итд  на ссылки javascript:...  

Хотелось бы попробовать.

Цитата:
А, кроме того, если сайт небольшой...

В том то и дело, что сайт большой, несколько тысяч файлов (html), вот и хочется или запретить качать качалками или ограничить коннект с одного ip.
 
Добавлено
lynx

Цитата:
А почему ты решил, что его у тебя нету?  
Для 1.3.х:  
В папочке Апача в директории /modules в поддиректории   standard/ найди файл: mod_setenvif.c  

Искал, поэтому и говорю, у меня в Апаче только /modules и все, standard нету.

Всего записей: 55 | Зарегистр. 09-04-2002 | Отправлено: 21:57 15-09-2003
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
liks
 

Цитата:
А почему ты решил, что его у тебя нету?    
Для 1.3.х:  
В папочке Апача в директории /modules в поддиректории   standard/ найди файл: mod_setenvif.c  
 
Искал, поэтому и говорю, у меня в Апаче только /modules и все, standard нету.

 
Поставь версию посвежей.

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 02:25 16-09-2003
djelektronik

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все бред  
тока лишняя нагрузка на сервер
достаточно выложить архив
способ провереный уже
 
если сайт большой то имеет смысл писать на диск и продавать

Всего записей: 2530 | Зарегистр. 28-06-2001 | Отправлено: 02:25 16-09-2003
liks



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
djelektronik

Цитата:
если сайт большой то имеет смысл писать на диск и продавать

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

Всего записей: 55 | Зарегистр. 09-04-2002 | Отправлено: 06:35 16-09-2003
adsh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Для 2.х:  
modules/mod_setenvif.so  
 
 
Эту строчку:  
 
 
Цитата:
LoadModule setenvif_module libexec/apache/mod_setenvif.so  

 
Для второго апача ничего этого писать не надо.
 
Модули, которые видны по httpd -l грузятся сами - см. документацию...

Всего записей: 105 | Зарегистр. 02-05-2003 | Отправлено: 09:02 08-02-2004
Als

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я уже встречал когда-то разговор на тему об ограничении на скачивальщики. Только не помню где, поэтому передаю идею на словах. Для реализации необходима поддержка каких-либо скриптов PHP, Perl и т.д. Ну, т.к. все тут рулят на сервере, то это я думаю не проблема.  
В начальную веб страницу (а еще лучше в каждую) на самом незаметном месте (лучше на картинку размера 1x1) помещаем ссылку на скрипт с названием, к примеру, asd.pl. Этот скрипт генерит страницу с которой есть ссылки на asd.pl?1, asd.pl?2 .. asd.pl?9. Ну всем, я надеюсь,  понятно, что 1..9 - параметры скрипта.  
При обращении, к примеру, к странице asd.pl?2 генерируется страница в каторой находится список ссылок на страницы asd.pl?21, asd.pl?22 ... asd.pl?29. Таким образом основная задача скрипта - генерация ссылок следующего уровня. Чтобы не завести веб-сервер в ступор, когда качалки дойдут до страницы asd.pl?111...1, то можно ограничить число уровней до 9. Скачать 9^9 почти пустых страниц с сервера будет уже большой проблемой, поэтому так вы защитите сайт от скачивания.
Теперь модернизируем скрипт таким образом, чтобы сбалансировать нагрузку на сервер. Можно в скрипте заставить поток отдыхать (как в перле не знаю, но в C++ for Windows для этого служил оператор Sleep) секунд так 5. Во время такого сна ресурсы сервера не потребляются, а качалка пытается дождаться данных. В результате качальщики вроде как сами себя наказывают.

Всего записей: 75 | Зарегистр. 23-10-2003 | Отправлено: 09:41 09-02-2004
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
можно сделать проще...
 
1. далем к примеру файлик  названием anti.php
2. прописываем в robots.txt, чтобы поисковики его не скачивали.
3. в этом anti.php пишем скриптец такого плана, который определеяет IP адрес с которого посетили страничку, а также чтобы скрипт добисывал в .htaccess запись в начало скрипта "Deny from $REMOTE_ADDR" и кладем к примеру в корень.
4. в первой страничке (по возможности на всех страницах) сайта делаем незаметную ссылку на эту страничку.. что-то типа <a href='/anti.php'></a>
 
это так.. на скорую руку...  
потому как надо будет проверять не зашел ли качальщик с прокси, а если и спрокси, то не с анонимного ли...
 
также можно будет .htaccess коментариями  с датами.. чтобы тот же самый anit.php чистил старые запрета по истечению какого-либо времени.

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 06:40 10-02-2004
adsh

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ, а почему у меня не пускает никого:
 
SetEnvIf User-Agent ^Teleport getout
SetEnvIf User-Agent ^Offline getout
SetEnvIf User-Agent ^DISCo getout
 
<Directory />
    Options MultiViews SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    Deny from all env=getout
    AllowOverride None
</Directory>
 
Если строчку с Deny закомментировать - пускает всех.
 
Апач 2.0.49 Unix.
 
Разобрался - правильно писать:
 
Deny from env=getout
 
all там не надо!

Всего записей: 105 | Зарегистр. 02-05-2003 | Отправлено: 07:14 24-04-2004 | Исправлено: adsh, 07:42 24-04-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache: запрещаем скачивать сайт менеджерами закачек


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru