Я попробовал следующее, но это не дало никакого эффекта:
startpage.com##[style*="background-color:#F5F9FF;"]
Есть идеи, как решить эту проблему?
Чтобы воспроизвести: Перейти кhttps://startpage.com/do/search- например, найдите adblock
. Вы увидите противные светло-голубые поля вверху и внизу страницы с надписью «Реклама, связанная с adblock»:
Это касается Iceweasel (Firefox 38.2.1) и Adblock Edge 2.1.9.1.
Если это невозможно, какие безопасные/уважающие конфиденциальность и свободные от рекламы сайты вы порекомендуете в качестве альтернативы IxQuick и Startpage?
решение1
Есть идеи, как решить эту проблему?
Рассматриваемые объявления находятся в div с идентификатором «spon_links».
<div id="spon_links">
Вы можете использоватьГрязная обезьянаскрипт для удаления этих div-ов.
Решение 1
Подтверждено, что это работает в Firefox при использовании блокировщика рекламы uBlock Origin.
// ==UserScript==
// @name startpage.com remove ads
// @namespace startpage.com
// @description Removes ads from startpage.com before they are displayed.
// @include https://startpage.com/*
// @include https://*.startpage.com/*
// @run-at document-start
// @version 2015-09-29
// @grant GM_addStyle
// ==/UserScript==
GM_addStyle("div#spon_links { display: none !important}");
Решение 2
Не испытано.
Замените 'ads'
на 'spon_links'
в примере скрипта ниже.
4.9 Удаление элемента
С помощью Greasemonkey можно удалять целые фрагменты страницы одним махом с помощью функции removeChild.
Пример: удаление боковой панели с рекламой
Это предполагает, что существует элемент с идентификатором «ads».
var adSidebar = document.getElementById('ads'); if (adSidebar) { adSidebar.parentNode.removeChild(adSidebar); }
Удаление элемента с помощью
removeChild
также удалит все содержимое внутри него. Например, если вы удалите<table>
элемент, это также удалит все его ячейки таблицы (<td>
элементы).
Источник4.9 Удаление элемента
решение2
В настоящее время добавляются:
startpage.com##.clicktrackedAd_js
в мой список фильтров uBlock Orgin сделал свою работу. Результаты поиска рекламы больше не показывались.
решение3
После уведомления @DavidPostill я снова посмотрел на структуру страницы. Похоже, что текстовые объявления перемещаются за пределы div.spon_links
при включении Adblock Edge, который действительно имеет правило фильтрации для spon_links
. Является ли это неправильным поведением Adblock Edge или каким-то ответным действием со стороны Startpage, я не знаю.
Есть более простое решение, чем добавление пользовательского скрипта Greasemonkey — простая замена Adblock Edge на uBlock также решила проблему.
При дальнейшем исследовании реклама исчезает только при включенном uBlock, когда Adblock Edge полностью отключен в то же время («Отключить везде»). Даже если я отключаю его только для Startpage («Отключить на startpage.com»), сайт перемещает рекламу за пределы контейнера spon_links
. Мое объяснение таково:Startpage каким-то образом получает доступ к моим настройкам дополнений и проверяет, включен ли AdBlock. Неужели это так отвратительно?!
Используя подход Дэвида из Greasemonkey и removeChild
, я придумал следующее решение, которое все еще работает, когда установлен Adblock Edge. Похоже, нужно дождаться загрузки страницы и поиграться с обходом ad-block, пока вы, наконец, не сможете найти и удалить нарушающие элементы:
// ==UserScript==
// @name startpage/ixquick remove ads
// @namespace startpage.com
// @description Removes ads from startpage/ixquick before they are displayed.
// @include https://startpage.com/*
// @include https://*.startpage.com/*
// @include https://ixquick.com/*
// @include https://*.ixquick.com/*
// @run-at document-end
// @grant none
// @version 2015-09-29
// ==/UserScript==
var fun = function() {
var results = document.getElementById('bottom-result-container');
if (results) {
var ols = results.getElementsByTagName('ol');
for (i = 0; i < ols.length; i++) {
var ol = ols[i];
var ps = ol.getElementsByTagName('p');
for (j = 0; j < ps.length; j++) {
var p = ps[j];
if (p.className == 'head2') {
var spans = p.getElementsByTagName('span');
for (k = 0; k < spans.length; k++) {
if (spans[k].innerHTML.contains("Ads related to")) {
ol.innerHTML = '';
}
}
}
}
}
}
};
setTimeout(fun, 1);
(Извините, мой JavaScript немного сыроват, возможно, проще использовать jQuery.)
решение4
В AdblockPro мне удалось заблокировать div, добавив следующее правило:
startpage.com###sponsored_csa1
Я использовал помощник по скрытию элементов ABP, чтобы выбрать родительский div, и принял его правило по умолчанию.
AdBlock Edge — это ответвление ABP, поэтому я бы ожидал, что правило там будет работать и в ABE. Однако ABE былпрекращеноего разработчиком, поэтому вам действительно следует либо вернуться к ABP (и просто отключить функцию приемлемой рекламы), либо перейти на uBlock.
uBlock может быть лучшим выбором и с технической точки зрения; предполагается, что он будет иметь меньшую загрузку памяти/процессора в FF, чем ABP. Он также полностью работает с предстоящимэлектролизОбновление для Firefox, которое разделяет пользовательский интерфейс верхнего уровня и вкладки на отдельные процессы и запускает последние с более жесткими ограниченными настройками, что должно затруднить его использование авторами вредоносного ПО (IE и Chrome делают это уже много лет). Его eta-дата потенциально уже конец года. (FF43/14 декабря была их целевой датой некоторое время; если они это сделают, это будет зависеть от того, насколько хорошо будет выглядеть телеметрия в альфа/бета-сборках и насколько малым будет количество открытых ошибок.)