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

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


Зарегистрирован: 31.08.2010
Сообщения: 6
Откуда: Украина, Луганск

СообщениеДобавлено: Вт, Авг 31 2010 21:42 Цитировать |  |  | 

1 пример:
Код:
<div id="xxx" class="xxx" style="xxx">content</div>


1 пример я убиваю след. фильтром:
Код:
<div id="$LST(kill-by-id)"*>$INEST(<div*>,</div>)</div>


2 пример:
Код:
<div class="xxx" id="xxx" style="xxx">content</div>


2 пример 1 фильтр не убивает, пробовал разные модификации фильтра ниче не получается, может кто что подскажет

$LST(kill-by-id) - список ID
К началу Профиль Сообщение ICQ
Alex Qwerty
Gold Member
Gold Member


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

СообщениеДобавлено: Ср, Сен 01 2010 08:10 Цитировать |  |  | 

Код:
<div[^>]++id=
К началу Профиль Сообщение
prosecutor
Newbee
Newbee


Зарегистрирован: 31.08.2010
Сообщения: 6
Откуда: Украина, Луганск

СообщениеДобавлено: Ср, Сен 01 2010 10:47 Цитировать |  |  | 

Alex Qwerty писал(а):
Код:
<div[^>]++id=

Сделал такой фильтр
Код:

<div[^>]++id="$LST(kill-by-id)"*>$INEST(<div*>,</div>)</div>


Пока работает нгормально, спасибо за помощь
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


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

СообщениеДобавлено: Ср, Сен 01 2010 10:58 Цитировать |  |  | 

Вах, кто-то использует $INEST()!

Продолжу вариант Alex Qwerty:

<div[^>]++ id=$AV($LST(kill-by-id)) [^>]+>

Ну или тот же NEST:

$NEST(<div\s,*id=$AV($LST(kill-by-id))*,>)
К началу Профиль Сообщение
prosecutor
Newbee
Newbee


Зарегистрирован: 31.08.2010
Сообщения: 6
Откуда: Украина, Луганск

СообщениеДобавлено: Ср, Сен 01 2010 11:20 Цитировать |  |  | 

chAlx писал(а):
Вах, кто-то использует $INEST()!

Продолжу вариант Alex Qwerty:

<div[^>]++ id=$AV($LST(kill-by-id)) [^>]+>

Ну или тот же NEST:

$NEST(<div\s,*id=$AV($LST(kill-by-id))*,>)


Да, но эти фильтры ищут только начало тега, а мне надо убить весь болк с содержимым поэтому я и использовал $INEST()
К началу Профиль Сообщение ICQ
prosecutor
Newbee
Newbee


Зарегистрирован: 31.08.2010
Сообщения: 6
Откуда: Украина, Луганск

СообщениеДобавлено: Ср, Сен 01 2010 11:22 Цитировать |  |  | 

chAlx писал(а):
Вах, кто-то использует $INEST()!

Продолжу вариант Alex Qwerty:

<div[^>]++ id=$AV($LST(kill-by-id)) [^>]+>

Ну или тот же NEST:

$NEST(<div\s,*id=$AV($LST(kill-by-id))*,>)


У меня получилься вот такой фильтр
Код:
<div[^>]++ id=$AV($LST(kill-by-id)) [^>]+>*</div>


Буду тестировать на разных сайтах смотреть что режет а что нет
К началу Профиль Сообщение ICQ
prosecutor
Newbee
Newbee


Зарегистрирован: 31.08.2010
Сообщения: 6
Откуда: Украина, Луганск

СообщениеДобавлено: Ср, Сен 01 2010 11:40 Цитировать |  |  | 

Этот фильтр пока работает стабильнее всех остальных

Код:
<div[^>]++id="$LST(kill-by-id)"*>$INEST(<div*>,</div>)</div>
К началу Профиль Сообщение ICQ
chAlx
Moderator
Moderator


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

СообщениеДобавлено: Ср, Сен 01 2010 12:16 Цитировать |  |  | 

prosecutor писал(а):
эти фильтры ищут только начало тега, а мне надо убить весь болк с содержимым поэтому я и использовал $INEST()

Да, это код для корректной обработки только открывающего тега. А дальше всё так же: лучше $INEST() сложно что-то придумать.

Цитата:
Этот фильтр пока работает стабильнее всех остальных


Ну, вот типичный ;) код для проверки:
Код:
<div name="forward>>>"
    id=BAD_ID_FROM_BLOCKLIST
    style= 'border:100px solid red'>
Click here>>>LINK
</div>
К началу Профиль Сообщение
prosecutor
Newbee
Newbee


Зарегистрирован: 31.08.2010
Сообщения: 6
Откуда: Украина, Луганск

СообщениеДобавлено: Ср, Сен 01 2010 12:30 Цитировать |  |  | 

chAlx писал(а):
prosecutor писал(а):
эти фильтры ищут только начало тега, а мне надо убить весь болк с содержимым поэтому я и использовал $INEST()

Да, это код для корректной обработки только открывающего тега. А дальше всё так же: лучше $INEST() сложно что-то придумать.

Цитата:
Этот фильтр пока работает стабильнее всех остальных


Ну, вот типичный ;) код для проверки:
Код:
<div name="forward>>>"
    id=BAD_ID_FROM_BLOCKLIST
    style= 'border:100px solid red'>
Click here>>>LINK
</div>


Получается след. фильтр из всех что я перепробовал
Код:
$NEST(<div\s,*id=$AV($LST(kill-by-id))*,>)$INEST(<div*>,</div>)</div>
К началу Профиль Сообщение ICQ
SergS
Member
Member


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

СообщениеДобавлено: Чт, Фев 03 2011 11:44 Цитировать |  |  | 

как раз парюсь с этим ) пробую разобраться в проксомитроне
поправте если что, позязя


просматривает класс и id. в одном из двух точно будет нужное слово )
Код:
Name = "Kill DIV(id or class)"
Active = TRUE
Bounds = "$NEST(<DIV(\s*|)>,</DIV>)"
Limit = 2048
Match = "*(id|class)=$AV($LST(DIV_Off-RE))*"
Replace = "<font size=3 color=red> Block DIV tag in \1 </font>"


пример из DIV_Off-RE.lst
Код:
MarketGid*
*informer*
*footer*
*counter*
toget*
ad*|*ad
*reklama*
*bann*

на сайтах, обычно по названиям не отличаются. (*counter* - наверное лучше убрать, хотя.)

до этого пробовал так:
Код:
Name = "Kill DIV(id or class)"
Active = TRUE
Limit = 1024
Match = "$NEST(<DIV*(id|class)=$AV($LST(DIV_Off-RE))\2>,</DIV>)"
Replace = "<font size=-5 color=red> Block DIV tag in \2 </font>"

но чёт мне не понравилось )) резал всё под корень

зы: подскажите, как вывести в Replace имя класса или id? а то ч уж по всякому, был бы рад даже фильтру(\1) но оно пустое почему-то.[/code]

наткнулся на форуме
proxomitron.ru/board/viewtopic.php?p=8859&sid=b1387022839d417c27a16573313df722#8859
Код:
[Patterns]
Name = "Bad div killer 2008-12-10"
Active = TRUE
URL = "(^$LST(noBadTags))"
Bounds = "$NEST(<div,</div>)"
Limit = 10240
Match = "($LST(BadDivs))\2*"
Replace = "<!-- Bad div killed (\2)-->"

я пробовал
Код:
"$NEST(<div,</div>)"
и
<div,</div>)

часто лишняя > или div выскакивают.
К началу Профиль Сообщение
Alex Qwerty
Gold Member
Gold Member


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

СообщениеДобавлено: Чт, Фев 03 2011 21:56 Цитировать |  |  | 

SergS писал(а):
Код:
ad*|*ad

Много зарежешь, тут глянь подходящие слова: http://www.allwords.com/

Цитата:
зы: подскажите, как вывести в Replace имя класса или id? а то ч уж по всякому, был бы рад даже фильтру(\1) но оно пустое почему-то.

Ага, нигде не присваиваешь ведь. Посмотри в помощи Tips and Tricks - Capturing specific tag attribute values.

У меня Опера, я такое режу нынче через UserCSS.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


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

СообщениеДобавлено: Чт, Фев 03 2011 22:50 Цитировать |  |  | 

SergS писал(а):


пример из DIV_Off-RE.lst
Код:
MarketGid*
*informer*
*footer*
[..]

Звёзды в конце записей блоклиста не нужны: совпадение слева направо проверяется, а в конце $AV() звезда и так есть.
А "футер" я бы даже не пытался использовать: это типичный элемент вёрстки.

Кстати, -RE в названиях традиционно означает происхождение из сборки Russian Edition ;)

Цитата:
подскажите, как вывести в Replace имя класса или id?

Дык, как везде: сохраняй в Match нужное значение в \1 и используй его в Replace. Типа такого: ($AV())\1
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Фев 04 2011 08:24 Цитировать |  |  | 

Alex Qwerty писал(а):

Ага, нигде не присваиваешь ведь.

присваиваю)) в реплейсе видно, что он был. (c)"как раз парюсь с этим"
было так
Код:
$AV($LST(DIV_Off-RE))
но на страницу Replace выводил токо стороку "Block DIV ". бывало срабатывало, что у 1 из 5 на странице отображалось, а у остальных пусто

Цитата:

У меня Опера, я такое режу нынче через UserCSS.

тоже поклонник оперы, CSS пользуюсь(и для отдельных сайтов свои есть)). С полгода назад перешёл Opera_AC(т.к. надоело после каждого обновления парится с настройками) opera-ac.net Раньше я ее обходил, т.к. кривая была, но сейчас, мощная сборка.
хоца, чтоб не зависимо от браузеров, сайты отображались в привычном виде) без рекламы. А то зайдешь на некотрые другим браузером и пугаешься Mad "куда я попал?"Very Happy В PM вижу выход. А, наверное, 90% вырезок в CSS это DIV. Ну, или его достаточно, чтоб вырезать всё)) почти
chAlx писал(а):

Звёзды в конце записей блоклиста не нужны

спс. по блок листам догадался, а тут чёт не сообразил
chAlx писал(а):

Кстати, -RE в названиях традиционно означает происхождение из сборки Russian Edition ;)

я знаю) в данном случае, для меня, это означает место расположение файла
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Фев 04 2011 08:33 Цитировать |  |  | 

Alex Qwerty ,
кстати, в Опере вырезаный элемент не подгружался(давно тестил, ща не знаю как работает), а в Фоксе(ADBlock) загружал элемент, но отключал его видимость.
т.е. на трафик влияет(и не только) по-разному. еще один +Proxomitron-у Very Happy
К началу Профиль Сообщение
chAlx
Moderator
Moderator


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

СообщениеДобавлено: Пт, Фев 04 2011 11:02 Цитировать |  |  | 

SergS:
Цитата:
присваиваю)) в реплейсе видно, что он был.

Надо не чтобы было видно, что было раньше, а чтобы просто было :) Поставь ()\1 в нужном месте, т.е. скобками вокруг $AV() (очевидно, скобок получится несколько -- это не страшно: не регэкспы чай).

Цитата:
в Фоксе(ADBlock) загружал элемент, но отключал его видимость.

Не знаю, как он отключает. Если display:none, то из такого элемента подгружаться (начиная с некоторых давних версий) ничего не должно.
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Фев 04 2011 13:49 Цитировать |  |  | 

а как влияет "число байтов"? где бы прочитать или подскажите?
меняю на 256 - работает, ставлю 16000 - нет
я так думал, это отводится на количество текста, чем больше-тем лучше, а нет, как-то по-другому работает (



chAlx , значение переменных именно в хтмле не отображается, а в тесте есть. хотя, мб это где ложные срабатывания...нинаю
К началу Профиль Сообщение
chAlx
Moderator
Moderator


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

СообщениеДобавлено: Пт, Фев 04 2011 14:04 Цитировать |  |  | 

Лимит -- размер блока исходного текста, проверяемого фильтром за раз. Если при больших значениях не работает -- значит, фильтр неправильный (много звёздочек: захватывает несколько искомых фрагментов как один).
Почитать известно где: тут или тут.
Цитата:
значение переменных именно в хтмле не отображается

Дык покажи фильтр, где не работает переменная -- поправим. (Только не тот же самый, где переменной в Match вообще нет.)
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Фев 04 2011 14:42 Цитировать |  |  | 

chAlx , спс, почитаю. но, имхо, от размера баннера зависит похоже. А может, другие фильтры подсерают ... нуно бы поднять выше правило


убрал строчку лимита и всё заработало Razz правда, он сам создал строчку, но работает там где отказывалось

Код:
Name = "Kill DIV(id or class)"
Active = TRUE
Bounds = "$NEST(<DIV*>,</DIV>)"
Limit = 4096
Match = "*((id|class)=$AV($LST(DIV_Off-RE)))\1*"
Replace = "<font size=-5 color=red>Block DIV \1</font>"
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Фев 04 2011 14:48 Цитировать |  |  | 

можно и так:
Код:
Bounds = "$NEST(<DIV*>,</DIV>|<td*>,</td>|<table*>,</table>)"

и тп

можно добавить и
Код:
(id|class|name)
некотрые таблицы можно срезать
К началу Профиль Сообщение
SergS
Member
Member


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

СообщениеДобавлено: Пт, Фев 04 2011 15:53 Цитировать |  |  | 

как бы это дело научить привязываться к сайтам? Mr. Green
...

а проще сделать два листа.
1 общий
2 с url
Razz
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




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


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