Убиваем рекламу на bash.org.ru, или, Greasemonkey в действии
Убираем тупую рекламу с bash.org.ru при помощи GreaseMonkey
Многие (если не все) знакомы с ресурсом bash.org.ru. И, хотя юмор там в последнее время очень тупой, старые шутки почитать временами можно. Помимо тупого юмора лично меня на bash.org.ru больше всего раздражает не менее тупая реклама
И если со всякими iframe и иже с ним AdBlock может бороться, то со вставками вида
Дэвид Блэйн раскукожил Firefox! Теперь в нём Яндекс!
он уже не справляется (так как они вставляются в вывод на сервере). Достал меня Дэвид Блейн. И Яндекс меня достал. И еще много что меня достало. Наверное, надо отдохнуть. Но речь не об этом. В общем, если меня что-то раздражает, я от этого избавляюсь (если читать, то с комфортом). Задачка как раз для Greasemonkey.
Ранее я уже приводил пример пользовательского скрипта для извлечения ASIN с amazon.com. Здесь используется нечто похожее.
Идея состоит в том, что для нормальных цитат после <hr class="iq"> сразу идет <script type="text/javascript" language="JavaScript"> и только потом <div class="q">, а в случае с рекламой <script> отсутствует; всё показано на рисунке:

Переходим к коду.
// @name Bash.org.ru Ads Remover
// @namespace http://sjinks.org.ua/
// @include http://bash.org.ru/*
// @exclude http://bash.org.ru/abysstop
// @exclude http://bash.org.ru/abyssbest
// ==/UserScript==
var x = document.evaluate(
'//div[@id="quotes"]/hr[@class="iq"]/following-sibling::*[position()=1][@class="q"]',
document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
for (var i=0; i<x.snapshotLength; ++i) {
var a = x.snapshotItem(i);
while (1) {
var b = a.nextSibling;
a = a.parentNode.removeChild(a);
if (b.tagName && 'div' == b.tagName.toLowerCase()) {
a = b;
}
else {
break;
}
}
}
x = document.evaluate('//iframe', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (i=0; i<x.snapshotLength; ++i) {
a = x.snapshotItem(i);
a.parentNode.removeChild(a);
}
Устанавливаем, активируем и не смотрим на рекламу. Всё-таки XPath — это вещь!
Вложения:
- bashorgru (image/png)
Июл
2008
Комментарии к статье «Убиваем рекламу на bash.org.ru, или, Greasemonkey в действии» (5) »
Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.
Оставить комментарий к записи «Убиваем рекламу на bash.org.ru, или, Greasemonkey в действии»
गते गते पारगते पारसंगते बोधि स्वाहा
Меня зовут Владимир, я программист-фрилансер, специализирующийся на Web-программировании и програмировании под Linux.
По совместительству занимаюсь администрированием LAMP/LNMP-серверов и техническим переводом.


То же самое для tak-to.ru:
// @name tak-to.ru Ads Remover
// @namespace http://sjinks.org.ua/
// @include http://tak-to.ru/*
// ==/UserScript==
var x = document.evaluate(
'(//div[@id="middle"]//table//td[position()=3])|(//div[@id="middle"]//div[not(@id)])',
document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
for (var i=0; i<x.snapshotLength; ++i) {
var a = x.snapshotItem(i);
a.parentNode.removeChild(a);
}
Читать со страницы – прошлый век уже
Слава богу, пока не догадались рекламу в rss пихать. И вообще, freebsd.rusnet.org.ru/bash педалит %)
з.ы. задолбался угадывать капчу
Здравствуйте.
Помогите пожалуйста разобраться. У меня установлен GreaseMonkey, юзаю я FF? но со скриптами разобраться не могу.
Мне нужен скрипт для обновления страницы на который кликнуть и страница обновляется (а лучше просто повторно заходит, чтоб не тянуть с инета картинки и все прочее, у меня траф платный).
Я сам не знаю яву, но нарыл в инете такую строчечку, шапку написал сам:
// @name refresh
// @namespace www
// @include http://www.heroeswm.ru/forum.php
// ==/UserScript==
<a href="#">обновить</a>
И это не работает, ссылка не появляется.
пробовал другие ява скрипты (типа часы, что-то еще) тоже с инета, и они тоже не работали, хотя при вставлянии их в html страницу все работало. Скачат заточеный скрипт под GM, называется google extrim, так он работает, значит ошибка все таки в моем скрипте.
посоветуйте что-то пожалуйста.
Саша,
Здесь несколько проблем:
a.href = '#';
document.getElementsByTagName('body')[0].appendChild(a);
<a href="#">обновить</a>не обновит страницу. Переходы по якорю не обновляют страницу.<span onclick="location.reload();">Обновить</span>. Будут ли загружаться картинки или нет, зависит от сервера (отдаёт ли он заголовки, разрешающие кэширование) и браузера (настроек кэша). Так что затея с таким скриптом — увы, пустая трата времени.Ни чего не понял, но за направление в нужную сторону спасибо, и за время спасибо. Думаю разберусь, главное идти в правильную сторону.