Hides avertisement sites r###lts from search r###lts in yandexserch machine
// ==UserScript== // @name YandexAntiAdvertisement // @namespace http://tampermonkey.net/ // @version 3.5 // @description:ru Скрывает из результатов поиска яндекса ссылки на сайты, помеченные как реклама // @description Hides avertisement sites r###lts from search r###lts in yandexserch machine // @author Kloshar // @match https://ya.ru/* // @match https://yandex.ru/* // @match https://yandex.com/* // @icon data:image/gif;base64,R0lGODlhEAAQAO4AANHR0cAxMcLCwccuLr4qKqSkpNbW1spISNBUVLSfoKKhocU+PtmFhrw5OdV7e8gyM87OzsXFxb6+vrkXGLUjJK2trccWFs5PT4lERchFRYpHSLZPT5ZYWJFYWM9bW9JYWchXV81TVMdRUs5VVq8WFsEtLrIcHbkWF7kYGaooKLgnJ7ohIrgpKalAQMw6OspCQs1AQKE2N8k0NMgWFsQ6OtNdXaqfn6KdnaagoLukpK2hoZWUlJKRkaeXl5+dnZmZmdW9vbi4uNDCwtra2srKysGurqioqLOvr8yxsbCwr4+Li8tkZc9jZGxnZ9ZrbM5oaYRhYcxfX89hYnZkY8tiYsx/gNh9faqAgYiFhdeDg89sbKNsbHJtbdR8fJR0dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkKAF8ALAAAAAAQABAAAAeygF+Cg18aHYSIggclKSIZBAeJX1YygkqCCVUDDoQMLolBXy8WDIMDgwaCEl8ICF+nX09MgwCCRRcfglJaXwSEtQkHNYS+E4QGOQ0eiCdfKINDQAsgQhUFCoLGAYNIC1E6RhURBYLbDiOCNE5fAEkFEj84IV2CD1kwS4IAEBACPBwPCM1oMEgAkQhHtpBItIKKIBs9rrQwgYGQghtQYlAIwIKCig1emiDygYXLlGMCdgwKBAA7 // @grant none // ==/UserScript== (function() { 'use strict'; console.log('!!! ', document.readyState); if (document.readyState === 'complete') //проверяем статус загрузки страницы и если она загружена, то сразу выполняем функции { hidePopupWindow(); //удаляет предложение установить яндекс-браузер hideAdvertismentBlocks(); //удаляет рекламные блоки в поиске яндекс hideAdvertismentBlocksInImages(); //удаляет рекламные блоки в яндекс картинках } else //или вешаем обработчики на полную загрузку страницы { window.addEventListener("load", hidePopupWindow, true); //удаляет предложение установить яндекс-браузер window.addEventListener("load", hideAdvertismentBlocks, true); //удаляет рекламные блоки в поиске яндекс window.addEventListener("load", hideAdvertismentBlocksInImages, true); //удаляет рекламные блоки в яндекс картинках } window.addEventListener("scroll", hideAdvertismentBlocksInImages); //прослушиваем прокрутку страницы, так как при первой загрузке страницы рекламные блоки не добавляются function hidePopupWindow() { var element = document.querySelector('body'); //тело страницы for(let d of element.children) //перебор всех узлов тела { //console.log(d.nodeName.toUpperCase() == "DIALOG", d.nodeName, d.className.includes('simple-popup')); if(d.className.includes('simple-popup')) element.removeChild(d); //удаляем узел с диалогом } } function hideAdvertismentBlocksInImages() { //console.log('В блоке hideAdvertismentBlocksInImages'); var ad_blocks = document.querySelectorAll('div[aria-label="Рекламный баннер"]'); //выбираем все рекламные блоки по атрибуту //console.log(ad_blocks); //по мере прокрутки страницы количество рекламных блоков будет расти if(ad_blocks.length > 0) //если блоки найдены { //console.log(ad_blocks.length); for(let i = 0; i < ad_blocks.length; i++) //обрабатываем все рекламные блоки на странице { var par = ad_blocks[i].parentNode; //console.log(par); //par.style.display = 'none'; //скрываем целиком родительский блок (не работает для div class="AdvMastHead") ad_blocks[i].style.display = 'none'; //скрываем только сам рекламный блок } } } //end function hideAdvertismentBlocksInImages() function hideAdvertismentBlocks() { //console.log('Event fired'); try //блок поиска проплаченных ссылок { //console.log("В блоке try"); const li_elements = document.querySelector('ul#search-r###lt').querySelectorAll('li'); //выбираем все списки с id=search-r###lt, потом из них ищем все элементы списка в найденом списке console.log("Lenght of li_elements is:", li_elements.length); //получили 19 элементов списка //надо обаботать все элементы списка for(let i = 0; i < li_elements.length; i++) { const li_elem = li_elements[i]; //первый элемент списка console.log(i + " " + li_elem); //порядковый номер и название элемента let firstDiv = li_elem.querySelector('div'); //получаем вложенный элемент (единственный) console.log("firstDiv: ", firstDiv); //сам элемент //проверка на существование блока и наличия у него вложенного элемента if(firstDiv != null && firstDiv.childNodes.length > 1) { console.log("Lenght of firstDiv.childNodes is: ", firstDiv.childNodes.length); //количество потомков let nextDiv = firstDiv.querySelector('div.Organic-Subtitle'); console.log('nextDiv=', nextDiv); if(nextDiv) //проверка на null { console.log('ok'); var spans = nextDiv.querySelectorAll('div, span'); //находит все div и span //надо обработать все на значения for(let k = 0; k < spans.length; k++) { console.log(spans.length + spans[k].textContent); //содержимое спана или div if(spans[k].textContent == "Реклaма" || spans[k].textContent == "Pеклама" || spans[k].textContent == "Peкламa" || spans[k].textContent == "Реклама") //варианты написания разными символами { console.log("Элемент скрыт: " + spans[k].textContent); //console.log(typeof(spans[k].textContent)); //console.log(spans[k].textContent == "Реклaма"); li_elem.style.backgroundColor = "gray"; //li_elem.style.visibility = 'hidden'; //скрывает, но оставляет пустое место li_elem.style.display = 'none'; //скрывает со смещением видимых элементов вверх } else { console.log("Элемент не скрыт: " + spans[k].textContent); } } } } } } //end try //блок поиска проплаченных ссылок catch(ex) { //console.log(ex) } } //end function hideAdvertismentBlocks() })();