Inhaltsblockierung, Erweiterung für Chrom-Browser

Mit dem diesjährigen Haupttrend des "Blockierens", der unten beschriebenen Erweiterung, können Sie die Macht über Inhalte im Browser spüren.


Ich erinnere mich lange, in der Kindheit, als ich fernsah, während Anzeigenblöcken gab es immer eine Pause wie eine Schulpause, in die Küche oder in eine Latrine zu gehen, auf andere Kanäle umzuschalten, eine Rauchpause wurde mit dem Alter hinzugefügt.

Jetzt schaue ich selten fern, lese Nachrichten im Internet und benutze Werbeblocker. Wenn sie am Telefon anrufen und versuchen, Finanzdienstleistungen oder einen Fensterassistenten durchzusetzen, lege ich auf. Mit seltenen Ausnahmen gibt es manchmal interessante oder lustige Werbespots, aber selbst solche Videos werden nach dem zweiten Betrachten zu regelmäßiger Werbung.

Vor ein paar Jahren habe ich festgestellt, dass auf allen Nachrichtenseiten kein Tag ohne Nachrichten über Blogger vergangen ist: Solche und solche Blogger haben einen Konflikt oder Blogger in der Staatsduma. Ein Blogger ist so ein "neuer Name" und wie üblich der "am meisten" Blogger aller anderen Blogger. Gleichzeitig ist es selten, wenn sie Kriterien schreiben, warum er "am meisten, am meisten" ist, damit der Leser Videos ansehen oder im Internet suchen kann, dem nächsten Blogger von "sich selbst". Blogger führen das neue Wort "zashkvar" ein, Blogger haben sich dagegen gewehrt, Blogger machen ihre eigene Show.

Das letzte Jahr über Nachrichtenblogger ist weniger geworden, der Anführer ist jetzt "B ... va", ich erwähne nicht ausdrücklich, es besteht die Gefahr, dass der Artikel in die nächsten Nachrichten über "B ... va" umgewandelt wird, und so gibt es jeden Tag neue Nachrichten. Journalisten sind oft gezwungen, dem Link mit einem Wortspiel in der Überschrift zu folgen.

Ich würde noch ein paar Beispiele schreiben, werde es aber nicht, denn das oben beschriebene ist kein Versuch, selbst mit Hilfe von Kritik an anderen gut zu sein. Bei allen Dingen kann es zu Sprengungen oder Überdosierungen kommen. Ich bin mehr als sicher, dass jeder seine eigenen „Führer“ in den Nachrichten hat, die er lieber nicht sehen würde, ohne sie wäre sein Tag besser geworden.

Die obigen Beispiele sind im Wesentlichen eine Art Werbung, aber wenn sie in Form von Nachrichten verbreitet werden, fallen sie nicht unter Werbeblocker. Viele Browser haben eine integrierte Werbeblockierung, aber leider gibt es keine Möglichkeit, Inhalte durch Wörter im Inhalt zu blockieren. Ich habe versucht, in den Erweiterungen zu suchen, aber ich habe nicht die mit der richtigen Beschreibung gefunden. Werbeblocker sind mir aufgefallen. Sie schienen in der Lage zu sein, nach Worten zu blockieren, aber ich habe nicht versucht zu wetten. Ich habe kürzlich mehrere Artikel gesehen, in denen nicht alle Erweiterungen sicher sind. Es ist interessanter, eigene, einfache Artikel zu schreiben, nur mit der erforderlichen Funktion zum Schneiden von Inhalten.

Es gibt viele Artikel zum Erstellen von Erweiterungen, aber dieser Artikel ist keine Anleitung zum Erstellen.
Die erste Version der Erweiterung stellte sich in nur wenigen Stunden heraus. Der Schnittalgorithmus ist einfach und universell. Der Nachteil der Universalität ist, dass der Algorithmus möglicherweise nicht für alle Standorte geeignet ist. Aber damit die Erweiterung funktioniert, musste ich viel Code schreiben, um die Zähler und den verborgenen Inhalt für jede Seite anzuzeigen.

Der Teil content_script.js ist die Hauptlogik zum Blockieren von Inhalten:

let search = document.evaluate('/html/body//*[contains(., "...") and count(child::node())<childsLimit]', document.body, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); let thisHeading = search.iterateNext(); while (thisHeading) { if (thisHeading.tagName !== 'script' && thisHeading.style.display != 'none') { thisHeading.style.display = 'none'; } thisHeading = search.iterateNext(); } 

Das obige Snippet zeigt, dass die Methode "document.evaluate" verwendet wird. Bei der Suche nach Text in Tags fallen auch die Stammelemente in die Ergebnisse. Zum Beispiel der Text der gesamten Seite, der Text des Nachrichtenblocks usw. Um unnötige Elemente zu eliminieren, wird die zweite Bedingung für die Anzahl der verschachtelten untergeordneten Elemente verwendet. In meinem Fall ist die Nummer 9 aufgetaucht. Auf drei Websites versteckt sich das Überflüssige schnell und einfach, obwohl manchmal auf einer der Websites in einem bestimmten Block ein Foto vorhanden ist, jedoch ohne Link zu den Nachrichten und Links zum Bild.

Ursprünglich war es ein Wunsch, auch eine Seite mit Erweiterungseinstellungen zu erstellen. Vielleicht mache ich das später. In der Zwischenzeit werden die Grundeinstellungen direkt im Code vorgenommen.

Ein Teil von background.js sind Einstellungen zum Blockieren von Inhalten:

 let childsLimit = 9; let blockString = '[contains(., "...") and count(child::node())<childsLimit]'; let blockOnlyUrlOpt = false; let urlOptions = [{url: 'https://exampleSite.com', unBlock: true, childsLimit: 4}]; 

Mit der ersten Variablen "childsLimit" können Sie die Gesamtverschachtelungsebene der gesperrten Elemente festlegen.

Die zweite Variable "blockString" enthält die xpath-Bedingung. Wenn Sie ein neues Wort hinzufügen, müssen Sie alles zusammen mit eckigen Klammern kopieren und am Ende mit dem Wort "oder" hinzufügen und dann das Suchwort in Anführungszeichen setzen.

 let blockString = '[contains(., "1") and count(.//*)<childsLimit] or [contains(., "2") and count(.//*)<childsLimit]'; 

Mit der dritten Variablen "urlOptions" können Sie die Einstellungen für verschiedene Sites optimieren.
Eigenschaft "url" - enthält die Adresse, für die die Einstellung angewendet wird.
Die Eigenschaft "unBlock" - der boolesche Wert true ermöglicht es, Inhalte auf der in der "URL" angegebenen Site nicht zu blockieren.
Die Eigenschaft "childsLimit" ist die Verschachtelungsebene des blockierten Inhaltselements.
Mit der vierten Variablen "blockOnlyUrlOpt" können Sie eine gemeinsame Logik definieren. Wenn der Wert true ist, funktioniert die Blockierung nur auf Sites, die im variablen Array urlOptions aufgeführt sind, wobei die Eigenschaft unBlock false ist.

Erweiterungsdateien finden Sie hier.

Um zu installieren, müssen Sie:

  • Laden Sie alle Dateien in einen für Sie geeigneten Ordner herunter.
  • Gehen Sie im Browser zu Erweiterungen und aktivieren Sie den Entwicklermodus.
  • Geben Sie auf der Schaltfläche "Entpackte Erweiterung herunterladen ..." den Ordner ab Punkt eins an.

Entwickelt und getestet im Opera-Browser, sollten auch andere Chrom-Browser funktionieren.

Source: https://habr.com/ru/post/de425361/


All Articles