startpage.com で広告をブロックするにはどうすればよいですか?

startpage.com で広告をブロックするにはどうすればよいですか?

以下のことを試しましたが、効果はありませんでした。

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>

ソース4.9. 要素の削除

答え2

現在追加中:

startpage.com##.clicktrackedAd_jsuBlock Orgin フィルター リストに追加したらうまくいきました。広告検索結果は表示されなくなりました。

答え3

@DavidPostill の指摘に従って、ページ構造を再度確認しました。Adblock Edge が有効になっていると、テキスト広告が の外側に移動されるようです。Adblock div.spon_linksEdge には、確かに のフィルタリング ルールがありますspon_links。これが Adblock Edge の誤動作なのか、Startpage からの何らかの反撃なのかはわかりません。

カスタム Greasemonkey スクリプトを追加するよりも簡単な解決策があります。Adblock Edge を uBlock に置き換えるだけでも問題は解決します。


さらに調査してみると、uBlockが有効になっているときにAdblock Edgeが完全に無効になっている場合(「すべての場所で無効にする」)にのみ広告が消えることがわかりました。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 要素非表示ヘルパーを使用して親 div を選択し、そのデフォルト ルールを受け入れました。

AdBlock EdgeはABPのフォークなので、そこでのルールはABEでも機能するはずです。しかし、ABEは製造中止開発者によって禁止されているため、ABP に戻るか (許容可能な広告機能をオフにするだけ)、uBlock に切り替える必要があります。

uBlockは技術的な観点からもより良い選択かもしれません。FFではABPよりもメモリ/CPU負荷が軽いはずです。また、今後の電解Firefox のアップデートでは、トップレベルの UI とタブが別々のプロセスに分割され、後者はより厳しく制限された設定で実行されるため、マルウェア作成者による悪用が困難になるはずです (IE と Chrome は何年も前からこれを行っています)。リリース予定は早ければ今年末です。(FF43/12 月 14 日はしばらく前から目標日になっていますが、間に合うかどうかはアルファ/ベータ ビルドのテレメトリがどれだけ優れているか、および未解決のバグの数がどれほど少ないかによって異なります。)

関連情報