PDA

Просмотр полной версии : Запрет компам,арбузерам и ip


TLS
26.06.2008, 09:48
Как можно через .htaccess запретить вход определенным браузерам например Mozilla/4.00 и ip допустим запретить Все ip которые начинаются на 195.189.1xx.xxx?

spider-intruder
26.06.2008, 10:06
deny from 195.189.1.

по браузерам никак

TLS
26.06.2008, 10:17
На счет ип понятно. Но вот ты говоришь по браузеру никак... А я встречал сайты на которые с компа зайти не возможно. Возможно думаю это можно обойти,но тем не менее. На фанке именно такое используется. Может скриптом можно такое реализовать?

spider-intruder
26.06.2008, 10:24
скриптом можно. $_server['http_user_agent']

TLS
26.06.2008, 10:37
Можешь подробней написать как это реализовать? В файл нужный инклюдить или еще че.

TLS
26.06.2008, 10:43
Или допустим мне нужно будет два юзер агента запретить или три. Как это сделать лучше. Напиши плз подробнее.

spider-intruder
26.06.2008, 10:48
В начале скрипта читаешь в переменную это значение

$user_agent=$_server['http_user_agent'];

А потом ишещь вхождения нужных тебе браузеров в скрипте.

Можешь сохранить в файл основные браузеры
Потом разбить строку командой array explode ( string separator, string string [, int limit] )
на массив элементов и в цикле искать в переменной элементы массива - выполняя нужные тебе действия

TLS
26.06.2008, 10:55
ни че не понял. Если я сейчас впишу то что ты написал-ничего не произойдет либо будет ошибка. Хотелось бы сделать так Если можно: файл userlog.php будет содержать Браузеры которым запрещено заходить на сайт. Вписываю в в корне index.php require('../incl/userlog.php'); и Все. Запрещенные юзер агенты отдыхают. Допустим Mozilla/4.00 и Opera/7.50. но вот вся соль в том,что я не знаю че должно быть в файле userlog.php

Whirt
26.06.2008, 10:58
Примеры запрета браузеров по 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
26.06.2008, 11:08
Отлично... Лучше б на испанском дал адрес. Гг.

TLS
26.06.2008, 12:19
Тут на этом форуме кто нить знает вообще как это делается?

Whirt
26.06.2008, 12:39
TLS, открой глаза и перечитай инфу по линку который я дал. Блокировка браузеров делается через .htaccess. Я думаю даже не надо знать английский, чтобы понять примеры из линка.
Фильтрацию по IP можно сделать в PHP, как я сказал выше.

Алгоритм примерный я тебе щас накидаю)
Я себе это представляю так:
1) Получаем REMOTE_ADDR от клиента.
2) IP адрес разбиваем на октеты (регулярным выражением, или через строковые функции, неважно), т.е. получаем 4 переменные, содержащие по октету.
3) Дальше уже колдуй со своими рулесами , как душе, угодно.


UPD: Да, забыл, в случае, блокировки - выдаем посетителю хедер 403 (denied)
через ф-ю Header, в ином случае пользователь спокойно входит на сайт.

TLS
26.06.2008, 13:17
1.уважаемый,мне твои линки не нужны,и рассуждать и предполагать тут тоже лишнее. Был задан конкретный вопрос,и хотелось бы получить ответ знающего человека который не будет тут фантазировать и думать,а просто тупо Даст конкретный пример такому чайнику как я.
2. Линк на ресурс который ты дал-не вижу в нем вообще смысла и не понимаю его,так Если по твоему это защита от определенных арбузеров,то че то вместо известных всему миру opera,mozilla,ie,и других не говоря уже о мобильных-я не вижу!
3. Ты считаешь Если я бы знал то,что спрашиваю-стал бы создавать тут тему? Конечно нет! Поэтому хотелось бы конкретный ответ.
4. блокировка по конкретному ip мне не нужна,так же не нужен скрипт php который будет якобы их блокировать.

Whirt
26.06.2008, 13:28
2. Линк на ресурс который ты дал-не вижу в нем вообще смысла и не понимаю его,так Если по твоему это защита от определенных арбузеров,то че то вместо известных всему миру opera,mozilla,ie,и других не говоря уже о мобильных-я не вижу!

по линку даны примеры блокировки по USER-AGENT'у, а что тебе мешает вписать туда свои юзерагенты, которые не хочешь пропускать ?))))
4. блокировка по конкретному ip мне не нужна,так же не нужен скрипт php который будет якобы их блокировать.
Ну, как ? , ты же сам хотел по маске фильтрить IP, вот и проверяй первые два октета и блочь , я тебе и так все по полочкам разложил, пошевели мозгами, на готовом далеко не уедешь)

TLS
26.06.2008, 13:43
Я с телефона много мозгами не нашевелю. Тем более чтоб ими шевелить-нужны начальные знания.

TLS
26.06.2008, 13:57
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4.00 ^.* -[F,L]
Так что ли? Похоже что то не так

Whirt
26.06.2008, 14:14
Вот, накатал тебе .htaccess )

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Firefox
RewriteRule ^.* - [F,L]


Не будет пускать огнелисов, а всякие ослоподобные а-ля IE входят без проблем.

З.Ы.
Тут очень подробно расписано, что , как и где (теперь на русском по заявкам трудящихся )))
_http://know-how.mc3.telecom.by/SintaksisModRewrite
Аффтар, неужели так трудно поюзать поиск ? )))

TLS
26.06.2008, 14:21
Сейчас попробую только с мозилой. Поиск юзал ,нифига хорошего не нашел

zythar
26.06.2008, 14:21
имхо блок по юзер агенту нуно делать пхп скриптом все таки а не хтаксессом.
да блок по айпишнику мона организовать на пхп.
все в одном флаконе так сказать.

нуно простенький скрипт накидать. что то типа:


if (strstr($_SERVER['HTTP_USER_AGENT'], $user_agent) || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}


или что то типа этого. если запрещеных браузеров несколько то нуно делать в цикле


upd

дорогой мой. нельзя быть настолько тупым. тебе реально трудно полистать пару справочников по РНР и самому написать этот скрипт да? тебе же тут норм люди нормально объяснили что нуно делать. неееет. тебе нуно все на блюдечке подавать.


иди на север друг мой. строго и прямо на север (*

TLS
26.06.2008, 14:24
имхо блок по юзер агенту нуно делать пхп скриптом все таки а не хтаксессом.
да блок по айпишнику мона организовать на пхп.
все в одном флаконе так сказать.

нуно простенький скрипт накидать. что то типа:


if ($_SERVER['HTTP_USER_AGENT']==$user_agent || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}


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

Whirt
26.06.2008, 14:30
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 , и определяем их принадлежность к запрещенному диапазону)

TLS
26.06.2008, 14:48
имхо блок по юзер агенту нуно делать пхп скриптом все таки а не хтаксессом.
да блок по айпишнику мона организовать на пхп.
все в одном флаконе так сказать.

нуно простенький скрипт накидать. что то типа:


if (strstr($_SERVER['HTTP_USER_AGENT'], $user_agent) || strstr($_SERVER['REMOTE_ADDR'], "ip_address") {
print "fuck u";
}


или что то типа этого. если запрещеных браузеров несколько то нуно делать в цикле


upd

дорогой мой. нельзя быть настолько тупым. тебе реально трудно полистать пару справочников по РНР и самому написать этот скрипт да? тебе же тут норм люди нормально объяснили что нуно делать. неееет. тебе нуно все на блюдечке подавать.


иди на север друг мой. строго и прямо на север (*
А у тебя не было такой ситуации что ты находишься там,что нет ни справочников ни книг?

TLS
26.06.2008, 14:57
Вот, накатал тебе .htaccess )

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Firefox
RewriteRule ^.* - [F,L]


Не будет пускать огнелисов, а всякие ослоподобные а-ля IE входят без проблем.


RewriteEngine On RewriteCond %{HTTP_USER_AGENT} Mozilla/4.0 RewriteRule ^.* - [F,L]
мозила как гуляла по сайту так и гуляет.

zythar
26.06.2008, 15:02
справночники и книги найти всегда можно если есть инет.

Whirt

естесвенно мона написать и лучше того что я накидал (*
это я так просто чтобы тс ознакомился что мона сделать

Whirt
26.06.2008, 15:07
Tls, а у тебя лиса случаем не 3я стоит? Там мозилла 5.0 юзер-агент, для справки.

Щас я тебе дописываю уже твой скрипт))) Может и другим пригодится)

TLS
26.06.2008, 15:17
справночники и книги найти всегда можно если есть инет.


Может форумы закроешь Все раз по твоему есть гугл и справочники?

TLS
26.06.2008, 15:19
Tls, а у тебя лиса случаем не 3я стоит? Там мозилла 5.0 юзер-агент, для справки.

Щас я тебе дописываю уже твой скрипт))) Может и другим пригодится)
Лисы нет вообще никакой. гг И мозила 4.0 у меня лазиет а не 5.0. Как она мне надоела уже

TLS
26.06.2008, 15:21
Вот щас по ip ее шарахнул гг. Пока пропала. Но не надолго.

Whirt
26.06.2008, 15:24
Вот держи кодес:
<?
/* 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]
мозила как гуляла по сайту так и гуляет.

TLS
26.06.2008, 15:29
И че мне с этим делать?

zythar
26.06.2008, 15:31
кидай на сервак, инклюдь в файлы, и юзай функцию которую написал Whirt.


в поисковиках можно найти лишь 90% информации (*

TLS
26.06.2008, 15:32
В логах указан ip 86.110.176.33

Mozilla/4.0

Whirt
26.06.2008, 15:35
ROFL одним словом))) Уже и скрипт написали тебе, пользуйся-нехочу)
Короче: кладешь скрипт на сервер, прописываешь банмаски в скрипте по образцу, который я оставил в комментах,
далее :
в index.php твоем пишешь:

include("ipaddr_filter.php");

Важное замечание:
Необходимо инклюдить скрипт ДО ТОГО, как будут отосланы хедеры, т.е. любая информация а-ля всякие сообщения на экран, итд.
В общем, в самом верху инклюдь, и все будет ок.

TLS
26.06.2008, 15:56
ROFL одним словом))) Уже и скрипт написали тебе, пользуйся-нехочу)
Короче: кладешь скрипт на сервер, прописываешь банмаски в скрипте по образцу, который я оставил в комментах,
далее :
в index.php твоем пишешь:

include("ipaddr_filter.php");

Важное замечание:
Необходимо инклюдить скрипт ДО ТОГО, как будут отосланы хедеры, т.е. любая информация а-ля всякие сообщения на экран, итд.
В общем, в самом верху инклюдь, и все будет ок.
Вообщем скопировал Все в файл. Этот файл require ('userlog.php'); в самом верху. Ошибка-Белый экран.

TLS
26.06.2008, 16:12
ребята не работает этот код. Белый экран и Все тут что бы я ни делал. Похоже экранизация помогла. Мозила пока пропала.

Whirt
26.06.2008, 16:13
содержимое index.php в студию (с)

UPD: код рабочий, я лично тестил)

zythar
26.06.2008, 16:17
блииин..
тс. то что написал вирт есть функция. ее вызвать нужно.

TLS
26.06.2008, 16:19
Хм ну не индекс же думаю мой виноват. С ним как раз Все в порядке,сайтег пашет как миленький и Все инклюдиццо нормально. Возможно при копировани появились лишние пробелы в коде,такое бывает у меня часто. Вроде убрал лишние пробелы но тоже самое. Файл бы выложить как нить но почему то на этом форуме ни че нельзя выкладывать

zythar
26.06.2008, 16:21
ты функцию check_deny вызывал?

TLS
26.06.2008, 16:21
блииин..
тс. то что написал вирт есть функция. ее вызвать нужно.
Сори чет я не понял... Каво надо вызывать и куда? ыы

Whirt
26.06.2008, 16:23
Не нужно ее вызывать. Посмотри внимательнее на исходник. Она автоматически вызывается в подключаемом файле и подставляет Ip посетителя.
Функцию я написал лишь для удобства/компактности кода.

zythar
26.06.2008, 16:27
я чето недопонял. если пишешь функцию нуно сначала вызвать эту функцию с ее параметрами потом она выполнит свою работу.
то что ты написал тут есть функция.

или ты хочешь сказать что если я скопипастю то что здесь лежит, сохраню в РНР файл, зупущу скрипт функция сама себя вызовет?

Whirt
26.06.2008, 16:31
test.php, info.php : http://www.rapidshare.ru/714458

Скрин этого всего, только что на локалхосте оттестил:

http://img238.imageshack.us/img238/6182/muthfuckaan0.jpg


======
UPD
======

я чето недопонял. если пишешь функцию нуно сначала вызвать эту функцию с ее параметрами потом она выполнит свою работу.
то что ты написал тут есть функция.

или ты хочешь сказать что если я скопипастю то что здесь лежит, сохраню в РНР файл, зупущу скрипт функция сама себя вызовет?

zythar, ты глянь ниже, говорю, смотри код внимательнее. Там функция кончается не на EOF , а раньше ))) Посмотри еще раз)

zythar
26.06.2008, 16:45
ааа... сорри (*
моя ошибка (*

TLS
26.06.2008, 17:07
TLS, убейся, все работает.

test.php, info.php : http://www.rapidshare.ru/714458

Скрин этого всего, только что на локалхосте оттестил:

http://img238.imageshack.us/img238/6182/muthfuckaan0.jpg


======
UPD
======

Да это ты убейся.
Не могу перейти по ссылкам которые ты выложил. Просто страница перегружается. ВСЕМ СПАСИБО ЗА помощь. Мне только что написали модуль-мозила и другие флудерасты отправляются в бан на час,при повторном появлении еще час и еще. Короче при флуде сколько запросов,столько и часов прибавляет. Установил-доволен. Тему клозед думаю.

Whirt
26.06.2008, 17:20
Тему клозед думаю.
А я думаю ее вообще в кодинг надо :-D :-D :-D

TLS
26.06.2008, 17:30
Хахаххаха))) Поржал))) жжошь, чел))) тут работающий пример, написанный special 4 u, если кривые руки, испей чарку йада (с)


А я думаю ее вообще в кодинг надо :-D :-D :-D
ЯД НЕ ПЬЮ,МОЖЕШЬ СДЕЛАТЬ ЭТО ЗА МЕНЯ. ГГ АРХИВ ТВОЙ СКАЧАЛ-ПОСМОТРЮ НА ДОСУГЕ. Я же тебя говорил что дело в браузере моем,он иногда копирует код и сам пробелы лепит. Возможно из за этого и была ошибка.
з.ы. сейчас меня флуд не беспокоит. Два дня флудили,щас программа записала Все ипы и дала им по бананчегу гг.Усе тихо. А твой код пригодится людям...

Whirt
26.06.2008, 17:36
Закрепи код в 1й пост если не трудно, чтоб народу по всем страницам этого флудофлейма не ползать )
Может кому и пригодится..)

TLS
26.06.2008, 18:19
Я не умею гг