La blog ala la la

And the life goes on..

[mod] NoAds Advanced 1.3.2

, , , ,

Расширение было опубликовано Gemorroj'ем в официальном каталоге расширений Оперы. Все дальнейшие вопросы в комментариях и багрепортах по этой ссылке. Эта запись останется только в исторических целях и для персональных модов.

Extension (Opera 11.10+ only):
noads-advanced-1.3.2b.oex

Added support of URL filter API and corresponding subscriptions, export settings as files and Opera MagicFunction/MagicVariable blocker support. Sure-kill until they actually fix something instead of display:none to block ads by selectors. coffee

Добавлены экспорт настроек в виде файлов, Оперовская MagicFunction/MagicVariable для блокировки заданных функций/переменных и ​​поддержка URL filter API: максимум, что можно выжать из Оперы пока не придумают аналога или не вернут старое поведение CSS атрибута display:none. coffee

FAQ / ЧаВо: https://github.com/Dither/noads-advanced/wiki/
Project repository / Репозиторий проекта: https://github.com/Dither/noads-advanced

wizard Magical formulae example:
Пример магических заклинаний:
##var GTracking
##var NO_msnads
##function poker_pp
##function print_download_ads
##function trackEvent 
##function trackPageView
##function trackPageViewCustom
##function wmx_counter
##function wmx_track
##function wtslog
Extensions->Manage extensions->...->Preferences:On "Site preferences" menu item:
PS: Выкладывать в официальный каталог расширений, опять же, не собираюсь, т.к. это подразумевает поддержку расширения. I won't upload this to official extensions catalog as it assumes the extension support.
PPS: Codename «Merlin», lol.

My favorite skins AutoPatchWork 1.9.5

Comments

BakLAN Sunday, April 24, 2011 8:31:39 PM

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


Печально. Хотя мотивация ясна и понятна. Получается, что будущее NoAds туманно.doh

И, к стати, почему-то старый файл 00000000 не подхватывается. Так и должно быть?

DitherDitherSky Sunday, April 24, 2011 8:57:45 PM

confused Не уверен, что должен подхватываться. Имена переменных хранилища я не менял, разве что добавлены новые, но Опера управляет им по своим правилам так что предсказать как она себя поведёт - нереально.

idea Для текстовых настроек Ctrl+A, Ctrl+C -> Ctrl+V и Save тут более подходящий метод.

Кстати, до кучи инфа: большой urlfilter.ini = большие тормоза при веб-сёрфинге, так что лучше не увлекаться добавлением таких подписок (если оно работает right).

Rodny Sunday, April 24, 2011 9:41:44 PM

Dither
Результат подписок urlfilter.ini должен быть виден в стандартном блокированном содержимом? Как проверить, работает оно или нет?

DitherDitherSky Sunday, April 24, 2011 9:50:56 PM

По идее да, т.е. все такие подписки должны дампиться в локальный urlfilter.ini и восприниматься Оперой как результат работы стандартного контент-блокера.

Т.е. проверить можно временно переименовав старый urlfilter.ini при отключённой опере, затем добавить что-то родным контент-блокером для его пересоздания, загрузить подписку расширением и посмотреть один из сайтов из той подписки: должно писать, что веб-адрес заблокирован.

Rodny Sunday, April 24, 2011 10:41:26 PM

Да, адреса у меня блокирует, но понять, по какой именно маске, не представляется возможным sad В штатном блокере это ни в какой момент не отображается, что через GUI, что в urlfilter.ini

DitherDitherSky Monday, April 25, 2011 11:37:53 AM

Originally posted by http://www.opera.com/docs/apis/extensions/urlfilter/:

The URL Filter API for Opera extensions defines a DOM interface that allows extensions to add temporary rules to Opera's native content blocker. Rules added through this API are associated with an extension and apply as long as an extension is enabled. Once an extension is disabled or the browser is shut down, the temporary rules are discarded.

Похоже всё хуже, чем я ожидал. Надо было внимательнее прочитать описание - правила, как оказалось, временные, т.е. каждое расширение должно загружать всю тучу правил подписки при каждой загрузке с помощью javascript (девелоперы Оперы наверно подумали, что это верх быстродействия) и хранить все правила у себя (надо было называть API не URL Filter API, а Extension URL Filter Appendix).

И получается, что Опера сама блокирует что-то из текущего списка добавленных через API правил, но что - я могу узнать лишь заново перепроверив скриптом все картинки страницы на соответствие фильтрам. А стандартный контент-блокер тут как бы не при чём. bigeyes yes

Я немного хренею с них... irked

Unregistered user Monday, April 25, 2011 1:06:21 PM

Partition writes: Dither, а что говорит по этому поводу Рузанов и компания? Или не надо ни у кого разрешения спрашивать? Можно взять расширение, добавить пару вирусов и назвать его 1.2? А где список изменений?

DitherDitherSky Monday, April 25, 2011 1:23:38 PM

Ничего не говорит. Для начала - расширение Lex1'а распространялось по свободной лицензии Apache License 2.0, т.е. разрешение на изменение по сути опционально если я соблюдаю правила той лицензии. На практике я делал мод исключительно для себя в качестве разминки в JavaScript, за рубежом такой подход называют fair use. Раз я не собираюсь распространять это расширение далее чем разместив в блоге - я могу делать с ним всё что угодно, хоть вирусы пачками добавлять, хоть список изменений не писать. Тут каждый должен сам решать - стоит ему им пользоваться или нет.

Rodny Monday, April 25, 2011 1:27:06 PM

а что говорит по этому поводу Рузанов


Рузанов это видел. К тому же он не планирует больше поддерживать свои оперные разработки.

Rombaromba Monday, April 25, 2011 5:41:30 PM

а блокировку внешних скриптов включить как-то можно?

BakLAN Monday, April 25, 2011 6:44:55 PM

Зачем в меню: "Content block Helper"? . И что такое так называемая "Магия" - где об этом почитать что-ли? А то я до сих пор не вкурил...

Unregistered user Monday, April 25, 2011 7:02:42 PM

DollarFalls writes: Dither, поясни пожалуйста, что делает галка "Импортировать все правила (может быть медленно)" при добавлении подписки?

Rodny Monday, April 25, 2011 7:10:12 PM

Originally posted by romba:

а блокировку внешних скриптов включить как-то можно?


Поставить галку "Включено" на вкладке "Скрипты"

Originally posted by BakLAN:

Зачем в меню: "Content block Helper"?


Вверху страницы показывает все скрипты, которые затем можно зарезать штатным блокером.

DitherDitherSky Monday, April 25, 2011 9:10:38 PM

Originally posted by DollarFalls:

Dither, поясни пожалуйста, что делает галка "Импортировать все правила (может быть медленно)" при добавлении подписки?

Добавляет блокирующие CSS-правила без указанной привязки к домену (раздел фильтров "General element hiding rules") и правила состоящие только из доменов-исключений.

Originally posted by BakLAN:

И что такое так называемая "Магия"

Метод DefineMagicFunction. Вкратце - блокирует отдельные JavaScript функции, генерирующие всякую ерунду вроде рекламы, снега, итп.

PS: Обновил до 1.2.1 - добавлен интерфейс для работы с URL filter подписками.

BakLAN Monday, April 25, 2011 10:47:26 PM

Originally posted by DitherSky:

Метод DefineMagicFunction. Вкратце - блокирует отдельные JavaScript функции, генерирующие всякую ерунду вроде рекламы, снега, итп.


Т. е. не целый скрипт, а лишь его часть. Ясно.

Originally posted by DitherSky:

PS: Обновил до 1.2.1 - добавлен интерфейс для работы с URL filter подписками.


Вот видишь, уже новую версию выпустил... уже на поддержку становится похоже... smile

DitherDitherSky Tuesday, April 26, 2011 5:22:58 AM

Originally posted by BakLAN:

Вот видишь, уже новую версию выпустил... уже на поддержку становится похоже...

Поддержка и развитие не синонимы. Пока мне эта тема интересна, я попытаюсь сделать расширение максимально удобным, но это не значит, что удобным для всех. Так же это не значит, что я обязуюсь отвечать на вопросы типа "почему расширение/сайт/что-то-ещё не работает", "как включить блокер скриптов", "как это настроить для..." итп.

BakLAN Tuesday, April 26, 2011 3:23:24 PM

Originally posted by DitherSky:

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


Та оно не может быть удобным для всех в принципе. Например, хотя бы по той причине, что нужно шарить синтаксис (хотя-бы немного) CSS. А это многих может отпугнуть. Хотя в моём случае этого не случилось, хоть я его и не шарю smile

Originally posted by DitherSky:

Так же это не значит, что я обязуюсь отвечать на вопросы типа "почему расширение/сайт/что-то-ещё не работает", "как включить блокер скриптов", "как это настроить для..." итп.


Так LEX тоже вроде не обязовался. Разве создание плагинов и их обновление - не добрая воля их авторов?

DitherDitherSky Tuesday, April 26, 2011 3:41:13 PM

Даже добрая воля, проявленная определённым образом, подразумевает некоторую ответственность.

PS: Обновление до 1.2.1b - ранее я немного перестарался с проверками, так что URL filter не работал. URL filter has been mostly fixed in version 1.2.1b.

DitherDitherSky Thursday, April 28, 2011 2:51:57 PM

Originally posted by Анонімний:

распаковал .оех достал .js закинул в папку скриптов...

Невозможно: URL filter API доступен только расширениям, к тому же у них другая система обмена сообщениями.

PS: Переношу глобальные настройки в свойства расширения вместо кнопки и провожу рефакторинг. Правда ещё довольно нестабильно работает, хотя и пошустрее. rolleyes Посайтовые настройки планируются по кнопке, примерно как ниже, а глобальные - отдельно в конфигурации расширения из менеджера.
http://files.myopera.com/DitherSky/blog/shotsite.PNG -

ПавелGemorroj Thursday, April 28, 2011 4:51:46 PM

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

Rombaromba Thursday, April 28, 2011 6:51:04 PM

народ уже ваши модификации переводит и выкладывает smile https://addons.opera.com/addons/extensions/details/noads-multilingual-german/1.0.91/?display=en

crash1 Thursday, April 28, 2011 6:59:25 PM

Dither
добрый день. Возник вопрос по методам "избавления от рекламы": есть ли возможность не скрывать элементы на странице, а, скажем, грузить html в некий буфер (до передачи браузеру/парсеру) "анализировать" на рекламу, удалять ее из html и передавать браузеру/парсеру средствами API расширений опера?
это позволило не расходовать трафик на загрузку всей рекламы + ускорить процесс и обработки страниц расширением... ибо сейчас при долгой работе браузера расширение не всегда скрывает то, что скрывало сразу после старта браузера...

DitherDitherSky Thursday, April 28, 2011 7:57:01 PM

@Romba: Свободный софт на то и свободный. smile Там главное чтобы они сами дальше разбирались. coffee

@crash1: Поставьте фильтрующий прокси вроде Proxomitron или Privoxy, они решают именно эту задачу. Если бы что-то подобное можно было сделать через API это бы уже давно сделали. dragonfly

crash1 Friday, April 29, 2011 5:36:26 AM

@Dither: фильтрующий прокси хорош, так же как и admuncher... а хотелось бы все это делать средствами браузера.
PS спасибо за разъяснение, может opera расширит функционал API расширений, будем ждать )

BakLAN Friday, April 29, 2011 3:16:51 PM

Originally posted by DitherSky:


Правда, что теперь более не нужно выставлять в opera:config квоту для webstorage чтобы плаг работал?

DitherDitherSky Wednesday, May 4, 2011 9:07:33 PM

Да - выставлять квоту для хранилища UserJS больше не нужно (а той что по умолчанию для Widget Preferences вполне достаточно). Хранить настройки расширения в хранилище UserJS, когда собственное вполне нормально работает, было бы как-то странно.

Flash-блокера по умолчанию не будет, слишком неудобно его теперь реализовывать без блокирующих свойств display:none. Будет перечисление тегов object, embed и param[name=movie/flashvars] в Помощнике блокировки, чтобы можно было вырезать такие объекты с помощью URL-filter в индивидуальном порядке.

PS: Всё вроде доделал, провожу базовое тестирование. Из нововведений - всё вышеназванное, показывает всё что будет удаляться при клике на одном элементе без шифта, игнорирование атрибута onclick и дефолтного поведения ссылок при блокировке, отключение кнопки в тулбаре (хз зачем, но довольно легко было сделать), другие стили элементов управления, "Помощник" показывает так же все CSS атрибуты url()-типа и расширение отключается на некоторых сайтах-бенчмарках (на acid3 100/100 при рабочем расширении).

DitherDitherSky Friday, May 6, 2011 3:31:24 PM

And here we go. NoAds Advanced 1.3.0: changed interface, separated site and global preferences (which is now called by default widget preferences menu element), highlighting of matching elements on click without Shift key, changes in selector generation algorithm, changes in Content blocker helper (more invisible objects: flash objects, CSS's URLs), changes in subscriptions merging, toolbar button can now be removed, functions are automatically disabled on a few benchmark sites such as acid3.

Unregistered user Friday, May 6, 2011 5:28:47 PM

zxcz writes: 1.3.0 мм а где меню настройки? и кнопку с тулбар неубрать...

DitherDitherSky Friday, May 6, 2011 5:31:59 PM

Все глобальные опции и подписки теперь в свойствах расширения (Расширения -> Управление расширениями -> ... -> Настройки). Переключение отображения кнопки срабатывает после перезапуска Оперы.

Ivan GrigorievPlaybobrik Friday, May 6, 2011 7:19:09 PM

Возможно так только у меня, но в окне настроек сайта еще ни на одном не было хотя б одного заблокированного скрипта. Если раньше приходилось часто добавлять в белый лист некоторые скрипты, то сейчас даже метрика гугла и яндекса по умолчанию не блокировались. Теперь еще один сомнительный пункт: блокирую например через "общее правило" и в результате добавляется в блок элемент css и вместе с ним появляется заблокированный урл в пользовательских урлах. Разве это не взаимозаменяющие действия? Или же опять я немного не понимаю принципов работы? sad

Unregistered user Friday, May 6, 2011 7:29:59 PM

zxcz writes: упс "Persistent Storage" был откл... все супер!

DitherDitherSky Friday, May 6, 2011 7:30:41 PM

@Ivan Grigoriev: Блокировка скриптов отключена по умолчанию. На счёт пользовательских URL-filter правил - они добавляются синхронно с CSS если у элемента есть очевидный URL иначе теряется (для меня) удобство блокировки star. По сути такое поведение призвано "хоть как" заменить display:none, т.к. раньше для блокировки закачки можно было обойтись лишь CSS-правилом.

@BakLAN: С кнопками всё как раньше, я просто изменил описание чтобы было очевиднее действие пунктов (хелп, правда, на эту тему не поправил whistle):
Shift+Alt+A - general
Shift+Alt+B - accurate

Общие настройки без понятия как сделать, чтобы вызывались по хоткею.

BakLAN Friday, May 6, 2011 7:39:50 PM

Originally posted by DitherSky:

@BakLAN: С кнопками всё как раньше, я просто изменил описание чтобы было очевиднее действие пунктов (хелп, правда, на эту тему не поправил ):
Shift+Alt+A - general
Shift+Alt+B - accurate


Хм... я что-то не совсем правильно понимаю... Раньше для "А" была блокировка Эдса, т.е. баннера, а для "В" - элемента, т. е., таблицы, в которой Эдс находится.
Теперь мне казалось, что General создаёт правило для любого сайта, т. е. чтобы потом не повторять правило для каждого сайта, на котором встречается какой-то эдс, а accurate - сугубо для конкретного текущего по аналогии со встроенным блокировщиком Оперы, который пишет в urlfilter.
Но теперь я совершенно запутался... Ничё не понимаю... scared

Ivan GrigorievPlaybobrik Friday, May 6, 2011 7:49:37 PM

Точно, не заметил кнопочки со скриптами сразу doh Слегка конфузит меня отображение "отключено" на самой кнопке, я то думал надо ее нажать штобы оно было отключено bigsmile По поводу синтаксиса отдельно в каждом окне, можно немного расписать его? Например значения всех этих служебных символов @@, ##, ||, ^, * и т.п. было бы вообще классно, если б была минилегенда по синтаксису где-нибудь. Или если уж я такой кран, то тыкните носом где она lol

DitherDitherSky Friday, May 6, 2011 7:54:23 PM

Объёмный хелп бы тут не помешал изначально. bigsmile На счёт правил для CSS - описание есть тут: http://adblockplus.org/ru/filters (синтаксис поддерживается только частично). Перед URL-фильтрами ## оставлен для совместимости, там банальная копипаста из [exclude] urlfilter.ini с ## перед каждым элементом. Для белого списка скриптов @@|| - указание ссылки текстом, @@== - указание ссылки в виде RegExp с автозаменой точек на их литералы.

Правила создаются, как в оригинале, посайтово. Если нужно чтобы работало для других доменов нужно убрать домен перед значком ## в выбранном правиле. Как и раньше block ads, пункт general rule просто генерирует правило с менее чётким указанием CSS-селектора, чем accurate rule, который ранее назывался block element.

Kamikaze5 Friday, May 6, 2011 7:57:24 PM

Dither, большое спасибо за проделанную работу!
Скажи, возможно ли сделать так, чтобы после использования функции "Site Prefences", фокус не перемещался на начало страницы, а возвращался на тоже место, где и была вызвана вышеприведенная функция? Или это особенности работы расширений? Ибо, при использовании JS+кнопка_на_панели именно так и происходит.

DitherDitherSky Friday, May 6, 2011 8:01:29 PM

Это особенность работы данного расширения. Мне было влом придумывать как переместить начало подокна настроек в текущую позицию наверняка. zzz

Если хотите убрать такое поведение, нужно закомментировать ( // перед началом) строки window.scrollTo(0, 0); в noads-options.js.

Ivan GrigorievPlaybobrik Friday, May 6, 2011 8:05:59 PM

Ну может и не настолько объемный.. с блокированием скриптов я вроде немного разобрался, всегда можно посмотреть пример из того, што там было изначально в белом списке и самому по аналогии сделать. А вот с блокированием урлов не совсем.. Но возможно сейчас сам дойду smile Кстати уж коль скоро глобальные css видны в окне настройки сайта, нельзя ли куда нибудь и белый лист скриптов туда же прикрутить, а то при добавлении в него и редактировании постоянно приходится держать открытым и глобальные настройки и настройки сайта. Хотя возможно это уже мои тараканы bug, а простым юзерам проще как есть.

DitherDitherSky Friday, May 6, 2011 8:15:02 PM

Видны не глобальные CSS, а их часть, которая применяется для данного сайта и исключения. Чтобы сделать там конкретику, нужно дополнительную процедуру проверки (т.к. Опера сама неплохо выбирает селекторы, для текущего домена добавляются так же все CSS-правила без указания домена перед ##). А на счёт прикрутить, это будет чересчур объёмно, мне кажется даже окно с выборкой из общих CSS-правил - лишнее.

Ivan GrigorievPlaybobrik Friday, May 6, 2011 8:22:20 PM

Ну если идти по пути упрощения, то да, конечно, и это окно там лишнее smile В самом деле для этого и разделялись глобальные и посайтовые настройки. Просто я привык к старому дизайну и один-два раза покручу скрипты и забуду вообще о ручных настройках) Спасибо за труд над этим расширением up

Unregistered user Saturday, May 7, 2011 4:59:01 AM

Анонимно writes: Из адресов подписок Fanboy http://www.fanboy.co.nz.nyud.net/adblock/opera/urlfilter.ini можно абсолютно безболезненно убрать часть nyud.net. И почему подписка FanBoy (annoyances) идет в списке с рядом с Easylist, а не другими подписками Fanboy?

Unregistered user Saturday, May 7, 2011 5:16:56 AM

Joks writes: Hi, sometimes when i wont block a banner, when i click on banner then the new tab with page are opened ;/ and after i close this new page i have a pop-up from NoAds to block this banner. can you do some like this, then we wont block the banner the new page will not open?

crash1 Saturday, May 7, 2011 7:18:03 AM

Есть вопрос: почему иногда расширение не "включается"? Т.е. установил, скачал подписки, добавил собственных правил, загружаем станицу - все работает (реклама блочится); открыл пару вкладок, обновил ранее отфильтрованную страницу - реклама не заблочилась, а интерфейс расширения стал серым и некликабельным... обновил эту же страницу еще несколько раз - блокировщик включился - реклама скрыта.
почему так происходит и как побороть?

Ivan GrigorievPlaybobrik Saturday, May 7, 2011 9:36:17 AM

Originally posted by crash1:

Есть вопрос: почему иногда расширение не "включается?"


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

DitherDitherSky Saturday, May 7, 2011 10:07:25 AM

FanBoy (annoyances) идёт с первой частью списка, т.к. из этой подписки берутся CSS-селекторы, а из подписок ниже берутся маски для URL-фильтра.

@Joks: I'll try to fix the code a bit to block more click variations. If it still doesn't ignore them during blocking then I don't really know what else I can do. Also it generally can't ignore clicks inside iframes/objects. Solution for the last one is unknown to me.

@Ivan Grigoriev: Кстати да, у оригинала ещё были заявленные баги с Оперой. Если честно, я не настолько знаю JS, чтобы разобраться в случае если код может вызвать такое поведение без ошибок. Вообще было бы интересно понять откуда это идёт, хотя если это JS-движок Оперы тут будет нереально что-то исправить.

@crash1: upd: Ошибок в логе, по которым можно понять, что происходит - нет. Возможно и правда какая-то специфика или баги JS-движка Оперы влияют.

Unregistered user Saturday, May 7, 2011 12:24:52 PM

Анонимно writes: можно ли добавить к кнопкам "объединить правила с существующими" и "добавить общие правила и исключения" в настройках в разделе подписки какие нить простенькие иконки что ли... или что нибудь, чтобы было понятно в каком состоянии этих кнопок функция включена, а в каком отключена

DitherDitherSky Saturday, May 7, 2011 12:29:18 PM

Можно сделать цветовую кодировку как у "Включено/Отключено" или менять текст как у них.

Unregistered user Saturday, May 7, 2011 12:54:06 PM

Анонимно writes: В принципе там хватит даже просто "цветовой кодировки", главное чтоб логика работы кнопки была понятна

DitherDitherSky Saturday, May 7, 2011 1:12:18 PM

Не знаю, не знаю. Мне, скажем, вполне понятна текущая логика "серый текст = отключено/неактивно".

Ivan GrigorievPlaybobrik Friday, May 27, 2011 4:16:38 PM

Originally posted by Snap:

и кстати в последней версии 1.3.1 перестало работать блокирование скриптов


Его на включить на соответствующей вкладке в настройках расширения, я тоже с этим сталкивался) Не совсем понимаю, почему по умолчанию скрипты не блокируются confused

У меня 2 вопроса:
1) Что за кнопка на вкладке скриптов "показать/убрать кнопку быстрого доступа"? Здесь опять таки не помешала бы цветовая индикация как на всех других кнопках rolleyes Она у меня не делает вообще ничего.
2) Как работает экспорт настроек в виде файла? У меня при нажатии на кнопку "экспорт" открывается вкладка с адресом типа "data:text/plain;charset=UTF-8;base64,(рандомный набор символов)", содержащая всё то же, что и в соответствующем поле в настройках расширения. Не совсем понял данный функционал. Скопировать то я могу и из этого поля не открывая отдельной вкладки) Если подразумевалось сразу сохранение в файл, то у меня почему-то не работает sad

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies