Автор |
Сообщение |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb
|
Переделал фильтр 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

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
Ну теперь точно надо добавить ;) :
Код: |
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

Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb
|
Unknown Mystic:
А вот и нет ;) Моя пара не завязана друг на друга и на другие фильтры: хочешь -- выключай, хочешь -- только один из них оставь, все остальные выключи.
"Смысла делить" было, т.к. фильтры вместе не работают. Ну разве что первый залезет в JS, который сам вставляет скрипт в HTML, и вычистит его вместо второго -- ну так и правильнее будет. А делалось это как раз ради JS: на них предыдущая версия плохо работала (если вообще).
Хотя принципиальных причин не вставить $TYPE(htm) вроде как нету -- может, и будет как-нибудь..
К глобальной переменной я в целом отношусь положительно: нормальная такая оптимизация тупой проверки. Но отдельным фильтром ой как не хочется.. Попробую на досуге засунуть это дело в блоклист, чтобы нельзя было отключить. У нас как раз есть CookieList, из которого вызывается CookieList-RE: отличное место для выставления глобальной переменной.
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

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

Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb
|
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

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
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

Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb
|
Unknown Mystic:
Нечего придираться -- это же концепт! ;)
Все эти "тоже в начало" хороши только для положительных проверок, если блоклист должен "вернуть" отрицательный результат -- придётся прогнать его до конца. Но это и не важно: главное, что основной блоклист не перепроверяется. Этот-то кусок ты и выкинул ;)
А установка перед юзерским списком единички -- это неплохо придумано. Только надо, наверно, туда $LOCK() втыкать, чтобы не глючили параллельные фильтры. Так можно и вообще в самом блокфайле CookieList-RE всё сделать.
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
chAlx ,
А зачем отрицательный результат, если все равно глобальную переменную проверять?
В твоем случае каждый раз шла перепроверка пользовательских URL'ов, а то что предложил я полностью исключает перепроверку.
А вот насчет параллельных фильтров... В пределах одного соединения такое разве бывает? Что-то сомнительно. Так что помоему $LOCK() не нужен.
И все же отдельный фильтр красивше - нет лишних проверок по блок-листу, пусть даже и таких простых...
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2629
Откуда: SPb
|
Unknown Mystic:
Цитата: |
то что предложил я полностью исключает перепроверку |
И включает переделку всех имеющихся фильтров, проверяющих этот блоклист, т.е. несовместимость. Если кто-то понаделал своих фильтров -- они просто перестанут нормально работать с таким блоклистом.
Я не спорю, что отдельный фильтр лучше, но за ним придётся следить, чтобы не пропал и не отключился -- большое дело :)
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
chAlx ,
Это бесспорно, но если продолжать использовать блок-лист так же как и раньше, выигрыш на мой взгляд не велик... CookieList-RE это всего 5 строк или около того. Ну плюс то, что это отдельный блок лист накладывается, но все равно не особо много пользы. А вот отдельный фильтр кроме еще большего исключения проверок, еще и не мало упростит сами фильтры, использующие этот блок-лист. Более того, тут действительно если пользователь разбирается в проксе - он перепишет фильтр, если же нет, то и не очем беспокоиться - старые (отдельно скаченые) фильтры будут работать как и раньше. В случае же сблок листом, всем пользователям придется вручную править CookieList (разумеется если он ими дополнялся)...
Не более, чем за Skip starting text [SSL] ...
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
Partyzan
Platinum Member

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

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