
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 Id
jedes 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 vonUnterstrichefind
Mit dieser Funktion können Sie die untergeordneten Knoten auswählen document.body
und 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 mitjQueryfilter
Funktion 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.