我尝试了以下方法,但没有效果:
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
知道如何解决这个问题吗?
有问题的广告位于 ID 为“spon_links”的 div 中。
<div id="spon_links">
您可以使用油脂猴脚本来删除这些 div。
解决方案 1
已确认在使用 uBlock Origin 广告拦截器时,此功能在 Firefox 中有效。
// ==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 函数一次性删除整个页面。
示例:删除侧边栏广告
这假定有一个元素的 ID 为“ads”。
var adSidebar = document.getElementById('ads'); if (adSidebar) { adSidebar.parentNode.removeChild(adSidebar); }
删除元素
removeChild
也会删除其中的所有内容。例如,如果您删除一个<table>
元素,这也会删除其所有表格单元格(<td>
元素)。
答案2
目前新增:
startpage.com##.clicktrackedAd_js
添加到我的 uBlock Orgin 过滤列表中即可。不再显示任何广告搜索结果。
答案3
div.spon_links
根据@DavidPostill 的通知,我再次查看了页面结构。当启用 Adblock Edge 时,文本广告似乎被移到了 之外,而 Adblock Edge 确实有一个过滤规则spon_links
。我不知道这是 Adblock Edge 的不当行为还是 Startpage 的某种反制措施。
有一个比添加自定义 Greasemonkey 脚本更简单的解决方案——只需将 Adblock Edge 换成 uBlock 也可以解决问题。
进一步调查发现,只有当 Adblock Edge 同时完全禁用(“在所有位置禁用”)时,广告才会在启用 uBlock 的情况下消失。即使我仅为 Startpage 禁用它(“在 startpage.com 上禁用”),该网站也会将广告移出容器spon_links
。我的解释是Startpage 以某种方式设法访问我的附加组件偏好设置,并检查 Adblock 是否已启用。有那么恶心吗?!
使用 David 的 Greasemonkey 和 的方法removeChild
,我找到了以下解决方案,当安装了 Adblock Edge 时,该解决方案仍然有效。似乎必须等到页面加载完毕并尝试避免广告拦截,才能最终找到并删除有问题的元素:
// ==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 Element Hiding Helper 为我选择父 div 并接受其默认规则。
AdBlock Edge 是 ABP 的一个分支,所以我希望那里的规则也能在 ABE 中发挥作用。然而 ABE 已经已停产由其开发人员开发,所以你真的应该回到 ABP(并关闭可接受的广告功能)或切换到 uBlock。
从技术角度来看,uBlock 可能也是更好的选择;它在 FF 中的内存/CPU 负载应该比 ABP 更轻。它还可以与即将推出的电解Firefox 的更新将顶级 UI 和选项卡拆分为单独的进程,并在更严格的限制设置下运行后者,这将使恶意软件作者更难利用它(IE 和 Chrome 多年来一直这样做)。它的预计发布时间可能最早在今年年底。(FF43/12 月 14 日一直是他们的目标日期;他们是否能实现取决于 alpha/beta 版本中的遥测效果如何以及未解决的错误数量有多小。)