Автор |
Сообщение |
Ciber SLasH
Member

Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер
|
Не могу понять как этот фильтр доработать так, что бы он не блокировал скрипты у которых в тэге SCRIPT присутствует атрибут id с определённым значением.
Т.е. я хочу, чтобы мои скрипты, которые присутствуют на страничке, которая расположена на бесплатном хостинге (а у них там вставляется реклама в каждую страницу), не резались, а скрипты без определённого id, на той же странице — резались.
|
|
|
К началу |
Профиль Сообщение |
 |
unreal666
Silver Member

Зарегистрирован: 21.10.2005
Сообщения: 149
Откуда: Владивосток
|
Содержимое самого фильтра напиши для начала.
|
|
|
К началу |
Профиль Сообщение |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
Содержимое-то его общеизвестно.. Только мне не очень-то нравится идея переделывать фильтр, чтобы он перестал вырезать некоторые баннеры. Лучше вставляй на своей странице скрипт через <script src='..'>, а URL этого скрипта запиши Проксу в Bypass.
|
|
|
К началу |
Профиль Сообщение |
 |
unreal666
Silver Member

Зарегистрирован: 21.10.2005
Сообщения: 149
Откуда: Владивосток
|
Ciber SLasH
Можно соответствие заключить в скобки и добавить &(^*$NEST(<script\s,*id=$AV(значение)*,>))
|
|
|
К началу |
Профиль Сообщение |
 |
Ciber SLasH
Member

Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер
|
2 unreal666:
Вот содержимое фильтра, но что-то твоя подсказка не сработала...
Код: |
[Patterns]
Name = "Kill JavaScript Banners {^sites} [ALX]"
Active = TRUE
URL = "(^forum.ixbt.com/)&(^(www.|)3dnews.ru/)&(^([^/]++.|)timezero.ru/)"
Bounds = "<script($INEST(<script,</script)</script>( <noscript>|)|*)"
Limit = 2048
Match = "*(://$AV($LST(AdList)*)|"
"(\=?\=?\=?\=?|ad(click|cycle)|.submit\(*focus\(|super_flashFileURL"
"|banner_height|<iframe|'ht'\+|.referrer|</script*</script))\1"
"&[^>]+>((*</script>)\0( <noscript>|)|\0)"
Replace = "<script title="JS_Banner_blocked" language="ShonenScript">\0"
|
|
|
|
К началу |
Профиль Сообщение |
 |
unreal666
Silver Member

Зарегистрирован: 21.10.2005
Сообщения: 149
Откуда: Владивосток
|
Ciber SLasH
А это что такое?
Цитата: |
|.referrer.substr(0,0)+"http://proxomitron.ru/board/viewtopic.php?t=513"| |
И покажи код, на котором должно сработать. У меня в тестовом окне все сработало.
|
|
|
К началу |
Профиль Сообщение |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
unreal666:
А этого там нет :) Это Прокс нашёл в тексте .referrer и заменил от греха подальше. Кстати, новый вариант Fix Nosey JavaScripts [ALX] так не хулиганит.
|
|
|
К началу |
Профиль Сообщение |
 |
unreal666
Silver Member

Зарегистрирован: 21.10.2005
Сообщения: 149
Откуда: Владивосток
|
chAlx
Ага. это сработал фильтр Hide Browser's Referrer from JS.
|
|
|
К началу |
Профиль Сообщение |
 |
unreal666
Silver Member

Зарегистрирован: 21.10.2005
Сообщения: 149
Откуда: Владивосток
|
Ciber SLasH
Возможно у тебя раньше другой фильтр сработал. Посмотри в режиме отладки.
|
|
|
К началу |
Профиль Сообщение |
 |
Ciber SLasH
Member

Зарегистрирован: 07.11.2005
Сообщения: 70
Откуда: Россия::Питер
|
2 unreal666:
Спасибо, всё заработало.
|
|
|
К началу |
Профиль Сообщение |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
Новый вариант фильтра, радикально упрощённый:
Код: |
Name = "Kill JavaScript Banners {^sites} [ALX]"
Active = TRUE
URL = "(^( forum.ixbt.com/ | (www.|)3dnews.ru/ | ([^/]++.|)timezero.ru/ ))"
Bounds = "$NEST(<script,</script>)( $NEST(<noscript>,</noscript>)|)"
Limit = 2048
Match = "$NEST(<script,>)"
"\0"
"("
"://$LST(AdList)|"
"adclick|"
"adcycle|"
".submit\(*focus\(|"
"super_flashFileURL|"
"banner_height|"
"<iframe|"
"'ht'\+|"
""<sc" \+ "ript|"
"<script*<script"
")\1"
"\9"
Replace = "<script title=JS_Banner_blocked language=ShonenScript>"
"busted= [$ESC(\1)]"
"\0\1\9" |
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
А чем .js проверять, если их названия не являются "нехорошими"?
Кроме того длинные (>2048) скрипты не будут обрабатываться...
Собственно для этого вся "заумь" и была... Ну кроме непонятных $INEST() и \=?\=?\=?\=? которые я уже давно выкинул.
Больше ничего сказать не могу - дома прокса так и не стоит...
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
Unknown Mystic писал(а): |
А чем .js проверять, если их названия не являются "нехорошими"? |
Ну, этого тут никгода не было. Этот фильтр отключает рекламные скрипты, а что там понапихано в .js -- май его знает. Может, там только 10% рекламного скрипта, а остальне нужно.
По той же причине нет смысла (пока) обрабатывать более объёмные скрипты: если размер большой, значит, там может быть ещё что-то кроме рекламы. Ну а если будут прецеденты -- поправим.
А для больших скриптов, в т.ч. для .js есть Fix Nosey JavaScripts [ALX].
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
Цитата: |
Ну, этого тут никгода не было. Этот фильтр отключает рекламные скрипты, а что там понапихано в .js -- май его знает. Может, там только 10% рекламного скрипта, а остальне нужно. |
Хммм... Это я с Fix Nosey JavaScripts [ALX] перепутал... А вот длинные скрипты он обрабатывал.
Я у себя добавлял еще adjs:
ad(click|cycle|js)
А они по AdList'у часом не блочатся? Кстати у меня то здоровое выражение из AdKeys-RE давно в AdList перекочевало (вернее скопировано).
А "<sc" \+ "ript| действительно надо? Например на fenzin.org
document.write('<scr' + 'ipt ...
Не будем же мы все возможности перебирать? :) Хотя тут он блочится по AdList'у.
Цитата: |
"<script*<script" |
Только сейчас заметил. Это ж уже третий уровень вложения получается или два скрипта "второго уровня", т.к. самый первый <script поглощается $NEST()'ом. Убери *<script. В оригинале обрабатывались закрывающие теги </script>.
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
С AdList/AdKeys надо разбираться отдельно. Когда они будут в полном порядке -- в таких фильтрах будет достаточно проверить на AdKeys (который и так включает проверку AdList). А общие шаблоны я думаю, наоборот, убрать в AdKeys.
Перебрать все варианты деления "<script" -- дело нехитрое; думаю, именно так и будет. Просто вставил то, что попалось (в 2-х местах).
adjs надо найти, откуда взялся, тогда и добавлять. Потому что словечко не слишком говорящее за себя, даже Гугл его находит.
Вложенные скрипты -- это вопрос открытый. Сейчас в моде всякий AJAX и прочий DHTML, поэтому скрипт в скрипте может быть не так уж зловреден. А вот третий уровень -- это точно издевательство :)
Так что я уберу лишний уровень, когда будет время полазать по сайтам и проверить.
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
Ну я бы так не сказал... Особенно учитывая что и на 3 части его разбить можно и на побольше. Это отдельный блок-лист делать придется :))
Этак дело просто фильтром убирающим эти сложения кончится... :)
Было у меня несколко предположений откуда adjs, но не нашел... Может уже убрали.
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
Меня тут опять про RBC спрашивают.. Короче, вот обновление: увеличен буфер и добавлена пара ключевых слов (похоже, пора их в блоклист).
Код: |
Name = "Kill JavaScript Banners {^sites} [ALX]"
Active = TRUE
URL = "(^( forum.ixbt.com/ | (www.|)3dnews.ru/ | ([^/]++.|)timezero.ru/ ))"
Bounds = "$NEST(<script,</script>)( $NEST(<noscript>,</noscript>)|)"
Limit = 4096
Match = "$NEST(<script,>)"
"\0"
"("
"://$LST(AdList)|"
"adclick|"
"adcycle|"
".submit\(*focus\(|"
"super_flashFileURL|"
"banner_height|"
"<iframe|"
"'ht'\+|"
"aa4_show|"
""<sc" \+ "ript|"
""<scr" \+ "ipt|"
"<script*<script"
")\1"
"\9"
Replace = "<script title=JS_Banner_blocked language=ShonenScript>"
"busted= [$ESC(\1)]"
"\0\1\9" |
Отлично работает в сочетании со строкой count.rbc.ru/banner.gif в Adlist-RE.
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
Ты *<script так и не убрал :)
А вообще с \w[^a-z0-9]banner[^a-z0-9] чего либо полезное встречается? А то может у меня чего-то полезное режется, а я и не знаю :)
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
chAlx
Moderator

Зарегистрирован: 30.06.2004
Сообщения: 2635
Откуда: SPb
|
*<script я так и не уберу, пока это не мультифильтр. Пусть режет третий уровень вложенности, если найдёт.
Баннер даже без границ вряд ли полезен, но проблема в том, что иногда под ним встречается совсем не то, что подразумевается (как и с adv.). Так что я предпочитаю такие сайты персонально в AdList вносить.
|
|
|
К началу |
Профиль Сообщение |
 |
Unknown Mystic
Platinum Member

Зарегистрирован: 26.09.2005
Сообщения: 471
Откуда: г. Мытищи, Московская обл.
|
Значит вырезаем второй уровень "спрятаных" скриптов (типа <sc" \+ "ript) или 3-й обычных?
Тогда я вообще не понимаю, зачем он в фильтре? Ты где-нибудь видел этот третий уровень? Хотя два второго уровня могут и попастся...
С adv знаю такую подставу :)
Может их проще в исключения вносить?
русское порно групповуха
|
|
|
К началу |
Профиль Сообщение ICQ |
 |
|