Просмотр полной версии : Запрет компам,арбузерам и ip
Как можно через .htaccess запретить вход определенным браузерам например Mozilla/4.00 и ip допустим запретить Все ip которые начинаются на 195.189.1xx.xxx?
spider-intruder
26.06.2008, 10:06
deny from 195.189.1.
по браузерам никак
На счет ип понятно. Но вот ты говоришь по браузеру никак... А я встречал сайты на которые с компа зайти не возможно. Возможно думаю это можно обойти,но тем не менее. На фанке именно такое используется. Может скриптом можно такое реализовать?
spider-intruder
26.06.2008, 10:24
скриптом можно. $_server['http_user_agent']
Можешь подробней написать как это реализовать? В файл нужный инклюдить или еще че.
Или допустим мне нужно будет два юзер агента запретить или три. Как это сделать лучше. Напиши плз подробнее.
spider-intruder
26.06.2008, 10:48
В начале скрипта читаешь в переменную это значение
$user_agent=$_server['http_user_agent'];
А потом ишещь вхождения нужных тебе браузеров в скрипте.
Можешь сохранить в файл основные браузеры
Потом разбить строку командой array explode ( string separator, string string [, int limit] )
на массив элементов и в цикле искать в переменной элементы массива - выполняя нужные тебе действия
ни че не понял. Если я сейчас впишу то что ты написал-ничего не произойдет либо будет ошибка. Хотелось бы сделать так Если можно: файл userlog.php будет содержать Браузеры которым запрещено заходить на сайт. Вписываю в в корне index.php require('../incl/userlog.php'); и Все. Запрещенные юзер агенты отдыхают. Допустим Mozilla/4.00 и Opera/7.50. но вот вся соль в том,что я не знаю че должно быть в файле userlog.php
Примеры запрета браузеров по USER-AGENT через файл .htaccess можно посмотреть здесь:
_http://www.javascriptkit.com/howto/htaccess13.shtml .
Все остальное (тот же блок по IP) легко реализуется через PHP. Если надо - обращайся, напишу тебе такой скриптик.
======
UPD
======
Если кому понадобиться, но лень читать весь последующий флейм/непонимание товарища TLS, вот ответы на поставленные вопросы:
Блокировка по User-Agent: прописать в .htaccess
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Mozilla\/4.0
RewriteRule ^.* - [F,L]
Блокировка диапазона по маске IP
<?
/* IPADDR BanMask Filter Script by Whirt
__ __ __
.--.--.--.| |--.|__|.----.| |_
| | | || || || _|| _|
|________||__|__||__||__| |____|
[Antichat.ru]
// ваши бан-маски. синтаксис приведен ниже //
// XXX - все адреса диапазона текущего октета */
$banmask[] = "87.XXX.XXX.XXX";
$banmask[] = "166.66.XXX.XXX";
$banmask[] = "157.150.123.XXX";
$banmask[] = "137.112.10.17";
function check_deny($mask)
{
$idx = preg_match("#(.*)\.(.*)\.(.*)\.(.*)#", $mask, $ban_args);
$idx = preg_match("#(.*)\.(.*)\.(.*)\.(.*)#", $_SERVER["REMOTE_ADDR"], $ip_args);
for($x=1;$x<=4;$x++)
{
if (($ban_args[$x] == $ip_args[$x]) || $ban_args[$x] == "XXX")
return "banned";
return "clear";
}
}
foreach ($banmask as $key)
{
if (check_deny($key)=="banned")
{
header("HTTP/1.0 403 Forbidden"); die("<html><h1>403 - Forbidden</h1>You dont have access to this server</html>");
}
}
?>
Отлично... Лучше б на испанском дал адрес. Гг.
Тут на этом форуме кто нить знает вообще как это делается?
TLS, открой глаза и перечитай инфу по линку который я дал. Блокировка браузеров делается через .htaccess. Я думаю даже не надо знать английский, чтобы понять примеры из линка.
Фильтрацию по IP можно сделать в PHP, как я сказал выше.
Алгоритм примерный я тебе щас накидаю)
Я себе это представляю так:
1) Получаем REMOTE_ADDR от клиента.
2) IP адрес разбиваем на октеты (регулярным выражением, или через строковые функции, неважно), т.е. получаем 4 переменные, содержащие по октету.
3) Дальше уже колдуй со своими рулесами , как душе, угодно.
UPD: Да, забыл, в случае, блокировки - выдаем посетителю хедер 403 (denied)
через ф-ю Header, в ином случае пользователь спокойно входит на сайт.
1.уважаемый,мне твои линки не нужны,и рассуждать и предполагать тут тоже лишнее. Был задан конкретный вопрос,и хотелось бы получить ответ знающего человека который не будет тут фантазировать и думать,а просто тупо Даст конкретный пример такому чайнику как я.
2. Линк на ресурс который ты дал-не вижу в нем вообще смысла и не понимаю его,так Если по твоему это защита от определенных арбузеров,то че то вместо известных всему миру opera,mozilla,ie,и других не говоря уже о мобильных-я не вижу!
3. Ты считаешь Если я бы знал то,что спрашиваю-стал бы создавать тут тему? Конечно нет! Поэтому хотелось бы конкретный ответ.
4. блокировка по конкретному ip мне не нужна,так же не нужен скрипт php который будет якобы их блокировать.
2. Линк на ресурс который ты дал-не вижу в нем вообще смысла и не понимаю его,так Если по твоему это защита от определенных арбузеров,то че то вместо известных всему миру opera,mozilla,ie,и других не говоря уже о мобильных-я не вижу!
по линку даны примеры блокировки по USER-AGENT'у, а что тебе мешает вписать туда свои юзерагенты, которые не хочешь пропускать ?))))
4. блокировка по конкретному ip мне не нужна,так же не нужен скрипт php который будет якобы их блокировать.
Ну, как ? , ты же сам хотел по маске фильтрить IP, вот и проверяй первые два октета и блочь , я тебе и так все по полочкам разложил, пошевели мозгами, на готовом далеко не уедешь)
Я с телефона много мозгами не нашевелю. Тем более чтоб ими шевелить-нужны начальные знания.
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4.00 ^.* -[F,L]
Так что ли? Похоже что то не так
Вот, накатал тебе .htaccess )
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Firefox
RewriteRule ^.* - [F,L]
Не будет пускать огнелисов, а всякие ослоподобные а-ля IE входят без проблем.
З.Ы.
Тут очень подробно расписано, что , как и где (теперь на русском по заявкам трудящихся )))
_http://know-how.mc3.telecom.by/SintaksisModRewrite
Аффтар, неужели так трудно поюзать поиск ? )))
Сейчас попробую только с мозилой. Поиск юзал ,нифига хорошего не нашел
имхо блок по юзер агенту нуно делать пхп скриптом все таки а не хтаксессом.
да блок по айпишнику мона организовать на пхп.
все в одном флаконе так сказать.
нуно простенький скрипт накидать. что то типа:
if (strstr($_SERVER['HTTP_USER_AGENT'], $user_agent) || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}
или что то типа этого. если запрещеных браузеров несколько то нуно делать в цикле
upd
дорогой мой. нельзя быть настолько тупым. тебе реально трудно полистать пару справочников по РНР и самому написать этот скрипт да? тебе же тут норм люди нормально объяснили что нуно делать. неееет. тебе нуно все на блюдечке подавать.
иди на север друг мой. строго и прямо на север (*
имхо блок по юзер агенту нуно делать пхп скриптом все таки а не хтаксессом.
да блок по айпишнику мона организовать на пхп.
все в одном флаконе так сказать.
нуно простенький скрипт накидать. что то типа:
if ($_SERVER['HTTP_USER_AGENT']==$user_agent || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}
или что то типа этого. если запрещеных браузеров несколько то нуно делать в цикле
Самое интересное то,что подобных тут скриптов на этом форуме писали очень много-но похоже они когда питались ни кто их не проверял на работоспособность. Ни один не работает.
zyhtar, протев (с)
.htaccess нормально справляется с поставленной задачей, поддерживает регулярные выражения, и много еще чего.
если запрещенных браузеров несколько, то нужно использовать флаг [OR] (ИЛИ)
Пример:
RewriteCond условие1 [OR]
RewriteCond условие2 [OR]
RewriteCond условие3
RewriteRule преобразование
Примечание: по дефолту, все условия считываются с флагом "И".
if ($_SERVER['HTTP_USER_AGENT']==$user_agent || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}
Я дико извиняюсь, но это бред: что проверка USER_AGENT, (здесь нужна ИМЕННО регуляра, всех заипешься вписывать), что проверка IP - ТС просил явно по диапазону a.b.xxx.xxx, а не статик, как у тебя,
т.е.
извлекаем октеты a и b , и определяем их принадлежность к запрещенному диапазону)
имхо блок по юзер агенту нуно делать пхп скриптом все таки а не хтаксессом.
да блок по айпишнику мона организовать на пхп.
все в одном флаконе так сказать.
нуно простенький скрипт накидать. что то типа:
if (strstr($_SERVER['HTTP_USER_AGENT'], $user_agent) || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}
или что то типа этого. если запрещеных браузеров несколько то нуно делать в цикле
upd
дорогой мой. нельзя быть настолько тупым. тебе реально трудно полистать пару справочников по РНР и самому написать этот скрипт да? тебе же тут норм люди нормально объяснили что нуно делать. неееет. тебе нуно все на блюдечке подавать.
иди на север друг мой. строго и прямо на север (*
А у тебя не было такой ситуации что ты находишься там,что нет ни справочников ни книг?
Вот, накатал тебе .htaccess )
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Firefox
RewriteRule ^.* - [F,L]
Не будет пускать огнелисов, а всякие ослоподобные а-ля IE входят без проблем.
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Mozilla/4.0 RewriteRule ^.* - [F,L]
мозила как гуляла по сайту так и гуляет.
справночники и книги найти всегда можно если есть инет.
Whirt
естесвенно мона написать и лучше того что я накидал (*
это я так просто чтобы тс ознакомился что мона сделать
Tls, а у тебя лиса случаем не 3я стоит? Там мозилла 5.0 юзер-агент, для справки.
Щас я тебе дописываю уже твой скрипт))) Может и другим пригодится)
справночники и книги найти всегда можно если есть инет.
Может форумы закроешь Все раз по твоему есть гугл и справочники?
Tls, а у тебя лиса случаем не 3я стоит? Там мозилла 5.0 юзер-агент, для справки.
Щас я тебе дописываю уже твой скрипт))) Может и другим пригодится)
Лисы нет вообще никакой. гг И мозила 4.0 у меня лазиет а не 5.0. Как она мне надоела уже
Вот щас по ip ее шарахнул гг. Пока пропала. Но не надолго.
Вот держи кодес:
<?
/* IPADDR BanMask Filter Script by Whirt
__ __ __
.--.--.--.| |--.|__|.----.| |_
| | | || || || _|| _|
|________||__|__||__||__| |____|
[Antichat.ru]
// ваши бан-маски. синтаксис приведен ниже //
// XXX - все адреса диапазона текущего октета */
$banmask[] = "87.XXX.XXX.XXX";
$banmask[] = "166.66.XXX.XXX";
$banmask[] = "157.150.123.XXX";
$banmask[] = "137.112.10.17";
function check_deny($mask)
{
$idx = preg_match("#(.*)\.(.*)\.(.*)\.(.*)#", $mask, $ban_args);
$idx = preg_match("#(.*)\.(.*)\.(.*)\.(.*)#", $_SERVER["REMOTE_ADDR"], $ip_args);
for($x=1;$x<=4;$x++)
{
if (($ban_args[$x] == $ip_args[$x]) || $ban_args[$x] == "XXX")
return "banned";
return "clear";
}
}
foreach ($banmask as $key)
{
if (check_deny($key)=="banned")
{
header("HTTP/1.0 403 Forbidden"); die("<html><h1>403 - Forbidden</h1>You dont have access to this server</html>");
}
}
?>
Вроде все учел, если что не так в коде - поправьте.
З.Ы.
Надеюсь, вопросов больше нет?
========
UPD:
========
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Mozilla/4.0 RewriteRule ^.* - [F,L]
мозила как гуляла по сайту так и гуляет.
TLS, / , это спецсимвол регулярок.
Попробуй экранировать его:
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Mozilla\/4.0 RewriteRule ^.* - [F,L]
мозила как гуляла по сайту так и гуляет.
кидай на сервак, инклюдь в файлы, и юзай функцию которую написал Whirt.
в поисковиках можно найти лишь 90% информации (*
В логах указан ip 86.110.176.33
Mozilla/4.0
ROFL одним словом))) Уже и скрипт написали тебе, пользуйся-нехочу)
Короче: кладешь скрипт на сервер, прописываешь банмаски в скрипте по образцу, который я оставил в комментах,
далее :
в index.php твоем пишешь:
include("ipaddr_filter.php");
Важное замечание:
Необходимо инклюдить скрипт ДО ТОГО, как будут отосланы хедеры, т.е. любая информация а-ля всякие сообщения на экран, итд.
В общем, в самом верху инклюдь, и все будет ок.
ROFL одним словом))) Уже и скрипт написали тебе, пользуйся-нехочу)
Короче: кладешь скрипт на сервер, прописываешь банмаски в скрипте по образцу, который я оставил в комментах,
далее :
в index.php твоем пишешь:
include("ipaddr_filter.php");
Важное замечание:
Необходимо инклюдить скрипт ДО ТОГО, как будут отосланы хедеры, т.е. любая информация а-ля всякие сообщения на экран, итд.
В общем, в самом верху инклюдь, и все будет ок.
Вообщем скопировал Все в файл. Этот файл require ('userlog.php'); в самом верху. Ошибка-Белый экран.
ребята не работает этот код. Белый экран и Все тут что бы я ни делал. Похоже экранизация помогла. Мозила пока пропала.
содержимое index.php в студию (с)
UPD: код рабочий, я лично тестил)
блииин..
тс. то что написал вирт есть функция. ее вызвать нужно.
Хм ну не индекс же думаю мой виноват. С ним как раз Все в порядке,сайтег пашет как миленький и Все инклюдиццо нормально. Возможно при копировани появились лишние пробелы в коде,такое бывает у меня часто. Вроде убрал лишние пробелы но тоже самое. Файл бы выложить как нить но почему то на этом форуме ни че нельзя выкладывать
ты функцию check_deny вызывал?
блииин..
тс. то что написал вирт есть функция. ее вызвать нужно.
Сори чет я не понял... Каво надо вызывать и куда? ыы
Не нужно ее вызывать. Посмотри внимательнее на исходник. Она автоматически вызывается в подключаемом файле и подставляет Ip посетителя.
Функцию я написал лишь для удобства/компактности кода.
я чето недопонял. если пишешь функцию нуно сначала вызвать эту функцию с ее параметрами потом она выполнит свою работу.
то что ты написал тут есть функция.
или ты хочешь сказать что если я скопипастю то что здесь лежит, сохраню в РНР файл, зупущу скрипт функция сама себя вызовет?
test.php, info.php : http://www.rapidshare.ru/714458
Скрин этого всего, только что на локалхосте оттестил:
http://img238.imageshack.us/img238/6182/muthfuckaan0.jpg
======
UPD
======
я чето недопонял. если пишешь функцию нуно сначала вызвать эту функцию с ее параметрами потом она выполнит свою работу.
то что ты написал тут есть функция.
или ты хочешь сказать что если я скопипастю то что здесь лежит, сохраню в РНР файл, зупущу скрипт функция сама себя вызовет?
zythar, ты глянь ниже, говорю, смотри код внимательнее. Там функция кончается не на EOF , а раньше ))) Посмотри еще раз)
ааа... сорри (*
моя ошибка (*
TLS, убейся, все работает.
test.php, info.php : http://www.rapidshare.ru/714458
Скрин этого всего, только что на локалхосте оттестил:
http://img238.imageshack.us/img238/6182/muthfuckaan0.jpg
======
UPD
======
Да это ты убейся.
Не могу перейти по ссылкам которые ты выложил. Просто страница перегружается. ВСЕМ СПАСИБО ЗА помощь. Мне только что написали модуль-мозила и другие флудерасты отправляются в бан на час,при повторном появлении еще час и еще. Короче при флуде сколько запросов,столько и часов прибавляет. Установил-доволен. Тему клозед думаю.
Тему клозед думаю.
А я думаю ее вообще в кодинг надо :-D :-D :-D
Хахаххаха))) Поржал))) жжошь, чел))) тут работающий пример, написанный special 4 u, если кривые руки, испей чарку йада (с)
А я думаю ее вообще в кодинг надо :-D :-D :-D
ЯД НЕ ПЬЮ,МОЖЕШЬ СДЕЛАТЬ ЭТО ЗА МЕНЯ. ГГ АРХИВ ТВОЙ СКАЧАЛ-ПОСМОТРЮ НА ДОСУГЕ. Я же тебя говорил что дело в браузере моем,он иногда копирует код и сам пробелы лепит. Возможно из за этого и была ошибка.
з.ы. сейчас меня флуд не беспокоит. Два дня флудили,щас программа записала Все ипы и дала им по бананчегу гг.Усе тихо. А твой код пригодится людям...
Закрепи код в 1й пост если не трудно, чтоб народу по всем страницам этого флудофлейма не ползать )
Может кому и пригодится..)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot