Blocage de contenu, extension pour les navigateurs au chrome

La principale tendance du «blocage» de cette année, l'extension décrite ci-dessous, vous permet de ressentir le pouvoir sur le contenu dans le navigateur.


Je me souviens depuis longtemps, dans l'enfance, lorsque je regardais la télévision, pendant les blocs d'annonces, il y avait toujours une pause comme une pause scolaire, aller à la cuisine ou à une latrine, passer à d'autres canaux, une pause fumée s'ajoutait avec l'âge.

Maintenant, je regarde rarement la télévision, je lis les actualités sur Internet, j'utilise des bloqueurs de publicités. Au téléphone quand ils appellent et essaient d'imposer des services financiers ou un assistant de fenêtre, je raccroche. Parfois, à de rares exceptions près, il y a des publicités intéressantes ou amusantes, mais même de telles vidéos après la deuxième visualisation se transforment en publicité régulière.

Il y a quelques années, j'ai remarqué que sur tous les sites d'actualités, on peut dire qu'il ne s'est pas passé une journée sans nouvelles des blogueurs: tels ou tels blogueurs ont un conflit ou des blogueurs à la Douma d'État. Un blogueur est un «nouveau nom» et, comme d'habitude, le «plus, le plus» des blogueurs de tous les autres blogueurs. En même temps, il est rare qu’ils écrivent des critères expliquant pourquoi il est «le plus, le plus» afin que le lecteur puisse regarder des vidéos ou rechercher sur Internet, ce qui est dans le prochain blogueur de «lui-même, lui-même». Les blogueurs introduisent le nouveau mot "zashkvar", les blogueurs ont pris les armes contre cela, les blogueurs font leur propre show.

L'année dernière, les blogueurs de nouvelles sont devenus moins nombreux, le leader est maintenant "B ... va", je ne mentionne pas spécifiquement, il y a un risque de transformer l'article en nouvelles suivantes sur "B ... va", et donc chaque jour il y a de nouvelles nouvelles. Les journalistes sont souvent obligés de suivre le lien avec un jeu de mots dans le titre.

J'écrirais quelques autres exemples, mais je ne le ferai pas, car celui décrit ci-dessus n'est pas une tentative d'être bon moi-même à l'aide de la critique des autres. Avec n'importe quoi, il peut y avoir éclatement ou surdosage. Je suis plus que sûr que tout le monde a ses propres «dirigeants» dans les nouvelles, qu'ils préféreraient ne pas voir, sans eux leur journée serait devenue meilleure.

Les exemples ci-dessus sont essentiellement une sorte de publicité, mais lorsqu'ils sont diffusés sous forme de nouvelles, ils ne relèvent d'aucun bloqueur de publicité. De nombreux navigateurs ont un blocage d'annonces intégré, mais malheureusement, il n'y a aucun moyen de bloquer le contenu par des mots dans le contenu. J'ai essayé de chercher dans les extensions, mais je ne l'ai pas trouvé avec la description nécessaire, les bloqueurs de publicités ont attiré mon attention, ils semblaient pouvoir bloquer en fonction des mots, mais je n'ai pas essayé de parier. J'ai vu récemment plusieurs articles que toutes les extensions ne sont pas sûres, et il est plus intéressant d'écrire le vôtre, simple, uniquement avec la fonction nécessaire de couper le contenu.

Il existe de nombreux articles sur la création d'extensions, mais cet article n'est pas une instruction pour la création.
La première version de l'extension s'est révélée en quelques heures seulement, l'algorithme de découpe est simple et universel. L'inconvénient de l'universalité est que l'algorithme peut ne pas convenir à tous les sites. Mais pour que l'extension fonctionne, j'ai dû écrire beaucoup de code pour afficher les compteurs, le contenu caché de chaque page.

La partie content_script.js est la logique principale pour bloquer le contenu:

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(); } 

L'extrait ci-dessus montre que la méthode «document.evaluate» est utilisée. Lors de la recherche de texte dans les balises, les éléments racine entrent également dans les résultats. Par exemple, le texte de la page entière, le texte du bloc d'actualités, etc. Pour éliminer les éléments inutiles, la deuxième condition sur le nombre d'enfants imbriqués est utilisée. Dans mon cas, le chiffre 9 est apparu. Sur trois sites, le superflu se cache rapidement et simplement, même si parfois sur l'un des sites d'un certain bloc, il y a une photo, mais sans lien vers l'actualité et sans lien avec l'image.

C'était à l'origine un désir de créer également une page de paramètres d'extension, je le ferai peut-être plus tard. En attendant, les réglages de base sont effectués directement dans le code.

Une partie de background.js est les paramètres de blocage de contenu:

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

La première variable «childsLimit» vous permet de définir le niveau global d'imbrication des éléments verrouillés.

La deuxième variable "blockString" contient la condition xpath, lorsque vous ajoutez un nouveau mot, vous devez tout copier avec des crochets et ajouter à la fin avec le mot "ou", puis remplacer le mot de recherche entre guillemets.

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

La troisième variable «urlOptions» vous permet d'affiner les paramètres pour différents sites.
Propriété «url» - contient l'adresse à laquelle le paramètre sera appliqué.
La propriété "unBlock" - la valeur booléenne true permet de ne pas bloquer le contenu du site spécifié dans "l'url"
La propriété «childsLimit» est le niveau d'imbrication de l'élément de contenu bloqué.
La quatrième variable "blockOnlyUrlOpt" vous permet de définir une logique commune. Si la valeur est true, le blocage ne fonctionne que sur les sites répertoriés dans le tableau de variables urlOptions, où la propriété unBlock est false.

Les fichiers d'extension sont disponibles ici.

Pour installer, vous devez:

  • Téléchargez tous les fichiers dans un dossier qui vous convient.
  • Dans le navigateur, accédez aux extensions et activez le mode développeur.
  • Sur le bouton "Télécharger l'extension décompressée ...", spécifiez le dossier à partir du point un.

Développé et testé dans le navigateur Opera, d'autres navigateurs au chrome devraient également fonctionner.

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


All Articles