Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Fix Nosey JavaScripts
 Сайт -> Форумы » Фильтры
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb

СообщениеДобавлено: Сб, Ноя 04 2006 19:16 Цитировать |  |  | 

Переделал фильтр Fix Nosey JavaScripts [ALX] в два:

Код:
Name = "Fix Nosey JavaScripts {html} [ALX]"
Active = TRUE
Multi = TRUE
Bounds = "$NEST(<script,</script>)"
Limit = 16000
Match = "($URL(http(s|)://$LST(CookieList))|$SET(5=1))"
        "(<script*>)\0"
        "\1"
        "$LST(NoseyJS-RE)"
        "([^a-z0-9_-] *)\9"
Replace = "<ins by=Fix_Nosey_JavaScript></ins>\0\1\2toString(9)\9"

Name = "Fix Nosey JavaScripts {js} [ALX]"
Active = TRUE
URL = "$TYPE(js)"
Limit = 64
Match = "($URL(http(s|)://$LST(CookieList))|$SET(5=1))"
        "$LST(NoseyJS-RE)"
        "([^a-z0-9_-])\9"
Replace = "\2toString(9)\9"


NoseyJS-RE.txt:
Код:
#
# Proxomitron nosey JavaScript keywords list - Russian Edition (NOADDURL)
# Used by "Fix Nosey JavaScripts [ALX]"
#

(.)\2referrer
(.)\2colorDepth
(.)\2pixelDepth
(.)\2external
(.)\2cookie$TST((\5)=1))
([^a-z0-9_-])\2(history(^(^.length)))
# Enable to deny manipulation with plugins:
##(.)\2plugins
##~.plugins\["Shockwave Flash"\]


Последний раз редактировалось: chAlx (Чт, Май 07 2009 21:09), всего редактировалось 2 раз(а)
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Вт, Ноя 07 2006 15:00 Цитировать |  |  | 

Ну теперь точно надо добавить ;) :

Код:
Name = "Set AllowCookies [SSL]"
Active = TRUE
URL = "($LST(CookieList)$SET(AllowCookies=1)|$SET(AllowCookies=0))$LOG(RAllowCookies = $GET(AllowCookies))"
Limit = 1
Match = "$STOP()"


И соответственно в твоих двух:
($URL(http(s|)://$LST(CookieList))|$SET(5=1)) - выкинуть
А в блоклисте $TST((\5)=1)) заменить на $TST(AllowCookies=0)

Может в первом фильтре тоже проверку типа содержимого добавить? Иначе вроде как и смысла не было делить...
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb

СообщениеДобавлено: Вт, Ноя 07 2006 18:17 Цитировать |  |  | 

Unknown Mystic:

А вот и нет ;) Моя пара не завязана друг на друга и на другие фильтры: хочешь -- выключай, хочешь -- только один из них оставь, все остальные выключи.

"Смысла делить" было, т.к. фильтры вместе не работают. Ну разве что первый залезет в JS, который сам вставляет скрипт в HTML, и вычистит его вместо второго -- ну так и правильнее будет. А делалось это как раз ради JS: на них предыдущая версия плохо работала (если вообще).
Хотя принципиальных причин не вставить $TYPE(htm) вроде как нету -- может, и будет как-нибудь..

К глобальной переменной я в целом отношусь положительно: нормальная такая оптимизация тупой проверки. Но отдельным фильтром ой как не хочется.. Попробую на досуге засунуть это дело в блоклист, чтобы нельзя было отключить. У нас как раз есть CookieList, из которого вызывается CookieList-RE: отличное место для выставления глобальной переменной.
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Вт, Ноя 07 2006 19:22 Цитировать |  |  | 

Согласен, условие и правда было у фильтра странное. Кстати если бы поменять части ИЛИ местами, то получилось бы самое то ;) Ну разве что лимит для JS малость великоват :))

Установку глобальной переменной в блок-лист переносить... Можно конечно $SET()<что-то не совпадающее>. Но только тогда проверка будет много раз выполняться... Я для того ее отдельным фильтром и выделял.
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb

СообщениеДобавлено: Вт, Ноя 07 2006 22:14 Цитировать |  |  | 

Unknown Mystic:

Ну мы-то знаем толк в извращениях ;)

Вот одно: работает туго, зато можно вообще вызовы не менять:

Код:

# Debug logging:
$LOG(R$DTM(c):Checking cookies..) #This should never match#

# Russian Edition system URLs:

$TST(AllowCookies=1)$LOG(R$DTM(c):Cookies already allowed)
(^$TST(AllowCookies=(?*)))$LST(CookieList-RE)$SET(AllowCookies=1)$LOG(R$DTM(c):Cookies allowed)


# User added URLs (add sites here):





# Russian Edition system tail:
($TST(AllowCookies=0)$LOG(R$DTM(c):Cookies was already denied)|(^$TST(AllowCookies=(?*)))$SET(AllowCookies=0)$LOG(R$DTM(c):Cookies denied)) #This should never match#


# Do not add sites here, use "User added URLs" section
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Ср, Ноя 08 2006 15:10 Цитировать |  |  | 

chAlx писал(а):
Ну мы-то знаем толк в извращениях ;)
Вот одно: работает туго, зато можно вообще вызовы не менять:

Вот уж что верно, то верно... Конечно до единных фильтров (от LexxIcon кажется) еще далеко, но... :))

А пользовательские URL'ы проверять? Каждую строчку на $SET(AllowCookies=1) заканчивать?

Кроме того AllowCookies=0 тоже надо в начало. Если уж были запрещены, то и нечего повторно проверять...

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

Коротче если уж это и оставлять, хоть и выглядит жутко, то примерно так:
Код:

# Debug logging:
$LOG(R$DTM(c):Checking cookies..) #This should never match#

# Russian Edition system URLs:

$TST(AllowCookies=1)$LOG(R$DTM(c):Cookies already allowed)
$TST(AllowCookies=0)$LOG(R$DTM(c):Cookies was already denied)
$LST(CookieList-RE)$SET(AllowCookies=1)$LOG(R$DTM(c):Cookies allowed)
$SET(AllowCookies=1) #This should never match#

# User added URLs (add sites here):





# Russian Edition system tail:
$SET(AllowCookies=0)$LOG(R$DTM(c):Cookies denied)


# Do not add sites here, use "User added URLs" section


Ну и в фильтрах (во всяком случае тех - новых) соответственно:
($URL(http(s|)://$LST(CookieList))|$SET(5=1)) заменить на $URL(http(s|)://$LST(CookieList))
А в CookieList-RE - $TST((\5)=1)) заменить на $TST(AllowCookies=0)

Правда и тут при совпадении пользовательского URL'а соответствующей надписи в логе не будет...

Хотя даже так куча лишних проверок... Пока отдельный фильтр мне нравится больше...
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb

СообщениеДобавлено: Ср, Ноя 08 2006 17:25 Цитировать |  |  | 

Unknown Mystic:

Нечего придираться -- это же концепт! ;)

Все эти "тоже в начало" хороши только для положительных проверок, если блоклист должен "вернуть" отрицательный результат -- придётся прогнать его до конца. Но это и не важно: главное, что основной блоклист не перепроверяется. Этот-то кусок ты и выкинул ;)

А установка перед юзерским списком единички -- это неплохо придумано. Только надо, наверно, туда $LOCK() втыкать, чтобы не глючили параллельные фильтры. Так можно и вообще в самом блокфайле CookieList-RE всё сделать.
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Ср, Ноя 08 2006 19:24 Цитировать |  |  | 

chAlx ,
А зачем отрицательный результат, если все равно глобальную переменную проверять?
В твоем случае каждый раз шла перепроверка пользовательских URL'ов, а то что предложил я полностью исключает перепроверку.

А вот насчет параллельных фильтров... В пределах одного соединения такое разве бывает? Что-то сомнительно. Так что помоему $LOCK() не нужен.

И все же отдельный фильтр красивше - нет лишних проверок по блок-листу, пусть даже и таких простых...
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb

СообщениеДобавлено: Ср, Ноя 08 2006 21:06 Цитировать |  |  | 

Unknown Mystic:

Цитата:
то что предложил я полностью исключает перепроверку

И включает переделку всех имеющихся фильтров, проверяющих этот блоклист, т.е. несовместимость. Если кто-то понаделал своих фильтров -- они просто перестанут нормально работать с таким блоклистом.

Я не спорю, что отдельный фильтр лучше, но за ним придётся следить, чтобы не пропал и не отключился -- большое дело :)
К началу Профиль Сообщение
Unknown Mystic
Platinum Member
Platinum Member


Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.

СообщениеДобавлено: Чт, Ноя 09 2006 10:51 Цитировать |  |  | 

chAlx ,
Это бесспорно, но если продолжать использовать блок-лист так же как и раньше, выигрыш на мой взгляд не велик... CookieList-RE это всего 5 строк или около того. Ну плюс то, что это отдельный блок лист накладывается, но все равно не особо много пользы. А вот отдельный фильтр кроме еще большего исключения проверок, еще и не мало упростит сами фильтры, использующие этот блок-лист. Более того, тут действительно если пользователь разбирается в проксе - он перепишет фильтр, если же нет, то и не очем беспокоиться - старые (отдельно скаченые) фильтры будут работать как и раньше. В случае же сблок листом, всем пользователям придется вручную править CookieList (разумеется если он ими дополнялся)...

Не более, чем за Skip starting text [SSL] ...
К началу Профиль Сообщение ICQ
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Чт, Янв 11 2007 20:22 Цитировать |  |  | 

А зачем делать блок-лист ради нескольких строчек текста, не лучше ли их в сам фильтр вписать? Тогда по прошествии некоторого времени не придется вспоминать, какой лист к каком фильтру относится, да и каталог будет посвободнее.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb

СообщениеДобавлено: Чт, Май 07 2009 21:14 Цитировать |  |  | 

Подправил текст блоклиста в первом посте, чтобы плагины более не проверялись (т.е. скрипт сможет с ними взаимодействовать). А то на многих сайтах работают кривые проверки, из-за которых не запускается внедрённый Flash-контент.
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3