Verwenden von Chrome zum Erstellen von AdBlock/UBlock-Regeln

Verwenden von Chrome zum Erstellen von AdBlock/UBlock-Regeln

Bildbeschreibung hier eingeben

Ich möchte lernen, wie ich mit den Chrome-Entwicklertools meine eigenen benutzerdefinierten Adblocking-Regeln gemäß der Ublock/Adblock-Syntax erstelle. Doch bevor ich das tue, muss ich erst einmal herausfinden, wie die Entwicklertools von Chrome funktionieren.

Beachten Sie bitte das Bild. Ich möchte dieses gesamte Div-Element blockieren. Leider hat dieses Div-Element eine ID. Diese ID ist ein zufälliger Salat aus Zahlen und Buchstaben, der sich bei jedem Neuladen der Seite ändert.

Wie kann ich herausfinden, wie die „ID“ tatsächlich heißt, damit ich eine Sperrregel nur für diese bestimmte ID mit diesem bestimmten Namen erstellen kann?

Bonuspunkte, wenn Sie mir zeigen können, wie man die Regel erstellt :P

Antwort1

Wenn dies Idjedes Mal zufällig generiert wird, müssen Sie eine andere Eigenschaft finden, die für dieses DOM-Element eindeutig ist, um daran anzuhängen. Texteigenschaften sind nicht so toll, weil Sie hoffen, dass kein anderer Knoten den Text verwendet, nach dem Sie filtern, und dass es keine Übersetzung basierend auf dem Gebietsschema gibt.

Trotzdem habe ich es in diesem Beispiel verwendet, weil ich nicht sicher bin, ob es auf der von Ihnen verwendeten AllMusic-Site etwas Besseres gibt.

Verwenden vonUnterstrichefindMit dieser Funktion können Sie die untergeordneten Knoten auswählen document.bodyund den ersten Knoten zurückgeben, der „Werbeblock“ im Text enthält.

var blockElem = _.find(document.body.childNodes, function (elem) { 
    return elem.innerText && elem.innerText.toLowerCase().indexOf("ad block") != -1 }
);

Sie haben jetzt das DOM-Element, das Sie bearbeiten (entfernen, ausblenden usw.) können.

Eine Alternative mitjQueryfilterFunktion ist:

var blockElem = $("body div").filter(function() {
    return $(this).text().toLowerCase().indexOf("ad block") != -1;
}).first();

PS.Ich habe das Gefühl, dass dies eher eine Frage vom Typ StackOverflow ist.

Antwort2

Ein Adblock Plus-Versteckfilter besteht aus zwei Teilen:<domain>##<selector>

  • Der Domänenteil ist lediglich eine durch Kommas getrennte Liste von Domänen, auf denen die Elemente ausgeblendet werden sollen.

  • Der Selektorteil definiert, welche Elemente ausgeblendet werden sollen und folgt demCSS-Selektor-Standard. Anstatt also zu lernen, wie man Filter schreibt, würde ich vorschlagen, CSS-Selektoren zu lernen, da es viele hilfreiche Ressourcen zum Schreiben dieser gibt.

In diesem Fall kann es beispielsweise hilfreich sein zu wissen, dass Sie ein Element basierend auf seiner Position im Dokument auswählen können. Beispielsweise body > :nth-child(1)wird das erste Element im Textkörper ausgewählt. Bei spezifischeren Selektoren müssen Sie prüfen, welche seiner Eigenschaften konstant bleiben und welche sich ändern.

verwandte Informationen