Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Htaccess-мать его
цитата
18/02/07 в 17:22
 Politryk
Народ, подскажите что я делаю не так.
Хочу закрыть содержимое папки от скачивания всякими качалками.

Решил заюзать htaccess следующего содержания:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC Web Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^download manager [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web Image Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule .* - [F]

Но после заливки файла с таким содержанием - урл не открываеться не только качалками но и через броузер. Выдаёт 500 ошибку.

В логах увидел следующую причину:
.htaccess: RewriteCond: bad flag delimiters

Что в файле не так? Я не спец в этом, поэтому самому сложно разобраться.
цитата
18/02/07 в 17:43
 zteam
Даже, если и доведёшь до ума такую конструкцию, то mod_rewrite обычно грузит сервер при нормальном трафе. Юзай вот такое:
SetEnvif user-agent Wget baduser
SetEnvif user-agent ... baduser
SetEnvif user-agent ... baduser
Order Allow,Deny
Allow from all
Deny from env=baduser

Должно помочь.
цитата
18/02/07 в 20:31
 Politryk
zteam писал:
SetEnvif user-agent Wget baduser
SetEnvif user-agent ... baduser
SetEnvif user-agent ... baduser


Я не спец в хтаксесе, но разве так его правила записываются?

Или это так нужно php записывать?

Сорри за тупость, но я с этим раньше не сталкивался.
цитата
19/02/07 в 02:05
 zteam
Да, так они записываются. В своём первом варианте ты юзаешь mod_rewrite в апаче, а в данном примере - mod_setenvif. Только в:
SetEnvif user-agent Wget baduser
SetEnvif user-agent ... baduser
SetEnvif user-agent ... baduser
замени "..." на все качалки, что у тебя в Rewrite'ах стоят.
цитата
19/02/07 в 02:36
 Politryk
2 zteam:
Спасибо за ответы.

И ещё пара вопросов. А в начале нужно что-то писать типа:
RewriteEngine On
только для mod_setenvif?

и нужно ли использовать по принцыпу приведённого мной примера разделители
%{} ^[OR]
в твоём варианте?
цитата
19/02/07 в 03:07
 zteam
Нет, тебе ничего в .htaccess не нужно писать ничего из того, что привёл ты.
Пишешь мой пример, заменяя "..." на имена качалок:
SetEnvif user-agent Wget baduser
SetEnvif user-agent ... baduser
SetEnvif user-agent ... baduser
Order Allow,Deny
Allow from all
Deny from env=baduser

Основная идея в том, что качалки будут резаться по рефереру, он у них выглядит, как их название, т.е. "Wget/...", "Reget/..." и т.д..
цитата
21/02/07 в 19:19
 Politryk


2 zteam:
Попробовал твою конструкцию.
Всеравно моя качалка взяла файл. Как оказалось она рефер свой не передаёт а косит под Mozilla 4.0 собственно как и все современные качалки.
Тогда я вот подумал, а как бы в твою конструкцию дописать чтобы перед отдачей файла проверялся рефер юзера.
Т.е. допустим ссылка на файл лежит на защищённой страничке и только пришедшему с этой странички - отдавался файл?

Нашёл нечто подобное:

SetEnvIf Referer ^http:\/\/www\.myhost\.ru from_my_site
<Directory /restricted>
order deny,allow
Deny from All
Allow from env=from_my_site
</Directory>

Только незнаю как его увязать с предыдущим куском. Ведь выше уже используються и SetEnvIf и Deny from All, Allow from env?
цитата
21/02/07 в 19:23
 Politryk
Кстати по ходу нарыл в поисковиках похожего рода топик на одной из борде.
Чел ставил задачу:
"Нужно ограничить доступ к одной из директорий сайта с чужих ссылок (и без рефереров вообще) средствами Апаче."

И вроде как хостер ему помог это реализовать с помощью:
Options +SymLinksIfOwnerMatch

Только вот жаль он не написал самого исходника, как это у него получилось.
Есть какие-нибудь идеи по этому поводу?
цитата
21/02/07 в 19:58
 lega_cobra
Не совсем понятно, зачем с юзер-агента съехали к рефереру... zteam написал все правильно. Должно работать. Я бы только заменил директиву SetEnvIf на SetEnvIfNoCase, и добавил бы якоречек к имени агента. Ну и не забываем ескепить пробелы, или ставить кавычки.

....
SetEnvIfNoCase User-Agent "^dowload manager" baduser
....
Deny from env=baduser

P.S. mod_rewrite в топку icon_smile.gif
цитата
21/02/07 в 20:00
 lega_cobra
Politryk писал:

И вроде как хостер ему помог это реализовать с помощью:
Options +SymLinksIfOwnerMatch


В огороде бузина... icon_smile.gif Это из другой оперы icon_smile.gif
цитата
21/02/07 в 23:15
 Politryk
lega_cobra писал:
Не совсем понятно, зачем с юзер-агента съехали к рефереру... zteam написал все правильно. Должно работать.


Дело всё в том, что мой например ReGet свой юзер-агент реальный не передаёт и в логах в строчке Get нет ни малейшего упоминания о нём.
Косит под браузер чётко.
цитата
21/02/07 в 23:35
 Politryk
lega_cobra писал:

....
SetEnvIfNoCase User-Agent "^dowload manager" baduser
....
Deny from env=baduser


Только что проверил и такую комбинацию. Не пашет. Т.е. качалки по прежнему делают своё дело.
Нужно наверное всётаки с рефером что-то замутить.

Или как последний способ - скрипты (подстановка левого урла или редиректы). Жаль в скриптах не силён.

Может кто из програмёров сможет сделать нечто работоспособное?
цитата
22/02/07 в 00:03
 lega_cobra
Politryk писал:
Дело всё в том, что мой например ReGet свой юзер-агент реальный не передаёт и в логах в строчке Get нет ни малейшего упоминания о нём.


Ну так ты пытаешься бороться с качалками, а качалки борются с тобой icon_smile.gif

Так-что надежного решения нет. Редиректами тоже не поможешь, ибо качалки очень хорошо по редиректам ходят.
цитата
22/02/07 в 00:21
 Stek
а разве такие методы еще срабатывают ? Вроде все вменяемые качалки давно браузером прикидываются, ну разве раритет какой еще остался.
цитата
22/02/07 в 00:28
 color
большинство современных качалок и реферер тоже перехватывают icon_smile.gif
цитата
22/02/07 в 04:00
 zteam
Дык изначально было ясно, что это простейшая защита от качалки глупого юзера, который не знает, что такое User-Agent, Referef и т.п.
Я спотрю, что по ходу топика съехали к антихотлинку больше, чем к защите от качалок.
цитата
22/02/07 в 04:02
 zteam
lega_cobra писал:

P.S. mod_rewrite в топку icon_smile.gif

Таки да...
Offtop: помнится по неопытности на серваке виртуального хостинга сделал антихотлинк на базе реврайта. Захожу потом на сервак - а идла 0 icon_smile.gif)
цитата
22/02/07 в 16:36
 Politryk
zteam писал:
Я спотрю, что по ходу топика съехали к антихотлинку больше, чем к защите от качалок.


Так всё же давайте вернёмся к теме топика.

Как же всё таки закрыть доступ качалкам?

Неужели никто незнает ни одного варианта.


Эта страница в полной версии