web-dev-qa-db-ja.com

ランダム化されたHTMLID属性を持つ広告をブロックする方法は?

広告ブロッカーとしてuBlockOriginを使用しています。要素のHTMLidおよびclass属性を識別できるピッカーツールを使用してカスタムフィルターを簡単に追加できます。

ページが読み込まれるたびに広告セクションに対してランダムなidを生成するWebサイトがいくつかあります。そのような広告をブロックする効果的な方法は何ですか?特定のidでブロックすることはできなくなりました。

これがそのようなページの例です。ランダムなidに注意してください。

http://www.thelocal.fr/20170219/france-denounces-cyberattacks-blamed-on-moscow

enter image description here

明確にするために、現時点では、この特定のWebサイトのこれらの広告は明確にラベル付けされて強調表示されているため、あまり気になりません。そのため、ページをスキミングするときにスキップしやすくなります。しかし、過去には、このサイトはそれらにラベルを付けておらず、「スポンサー付き」の記事を通常の記事と区別することは困難でした。これが私がそれらをブロックしようとする動機となったものです。将来またやりたいと思ったら、その方法を知りたいです。

4
Szabolcs

まず、CSSがすべてです。一意のIDがないため、不要な要素のみに一致するクエリを作成する必要があります。を使用して、ブラウザの開発者ツールでそれらをテストできます

document.querySelectorAll("...")

これらの要素には、インラインスタイルなど、それらを一意に識別する他の属性がある場合があります。属性セレクターを使用してそれらを一致させることができます。

div[style="background: ..."]

この場合のように、これらの要素がDOMツリーの固定点に表示されることがあります。正しく理解するのが難しい場合もありますが、その前には常に別の(すでにブロックされている)広告があるため、ここでは非常に簡単です。

div.ad_container + div[id*=-widget]

多分それは最後の要素です:

div:last-child

CSSセレクターの詳細については、 Mozilla Developer Network を参照してください。

ただし、正しく実行された場合、スクリプトなしでは何もできません。 DOMツリーのランダムな場所にランダムな名前(<uaUZGI>など)のタグを作成し、それを何らかの方法で画面上の目的の場所に表示するスクリプトをすでに見ました。

3
Daniel B