Блокировщик рекламы вк

Заблокировать рекламу в вк

安装此脚本?
作者推荐脚本

您可能也喜欢VK By RAM

安装此脚本
// ==UserScript==
// @name         Блокировщик рекламы вк
// @namespace    none
// @version      3.1
// @description  Заблокировать рекламу в вк
// @author       Dinaco Studio
// @match        https://*.vk.com/*
// @include      https://*.vk.com/*
// @include      https://*.vkvideo.ru/*
// @include      https://vkvideo.ru/*
// @icon         https://www.google.com/s2/favicons?domain=vk.com
// @grant        GM_webRequest
// @webRequest   [{"selector":"*://stats.vk-portal.net/web-stats/*","action":"cancel"},{"selector":"*://vk.com/al_audio.php?act=ad_event","action":"cancel"},{"selector":"*://vk.com/ads_rotate.php?act=al_update_ad","action":"cancel"},{"selector":"*://ad.mail.ru/*","action":"cancel"},{"selector":"*://trk.mail.ru/i/*","action":"cancel"},{"selector":"*://top-fwz1.mail.ru/js/code.js","action":"cancel"},{"selector":"*://ad.mail.ru/static/admanhtml/rbadman-html5.min.js","action":"cancel"},{"selector":"*://www.tns-counter.ru/*","action":"cancel"},{"selector":"*://r3.mail.ru/k?*","action":"cancel"},{"selector":"*://vk.com/js/lib/px.js","action":"cancel"}]
// @license GNU GPLv3
// ==/UserScript==
const universal_ads = `.right_list:has([onclick*="return showApp"]),.CatalogSection:has(.audio_promo),[class^="ads_ad_"],[class^="ads"],.ads_ads_news_wrap,._ads_promoted_post_data_w,div#left_ads,div[data-ad-view],div[data-ad],div[ads_left],.post[data-ad],.post[data-ad-view],div[id^="postadsite_"],div#ads_left,[data-ad-view],div#games_catalog_header_content,#ads_left,.audio_subscribe_promo__content,#apps_ads_wrap,#ads_special_promo_wrap,#apps_ads_wrap,._ads_promoted_post_data_w,.ads_ads_news_wrap,div#left_ads,.ads_ads_box,.ads_ads_news_wrap,div[id^="vk_ads_"]`;

try{
    Object.defineProperty(unsafeWindow, 'MotionKit', {
                value: {},
                writable: false,      // Запрещает перезапись значения
                configurable: false   // Запрещает изменение дескрипторов свойства
});
}catch{
      Object.seal(unsafeWindow.MotionKit)
      Object.assign({}, unsafeWindow.MotionKit)
      unsafeWindow.MotionKit = {}
}
unsafeWindow.MotionKit = {}

function hookFunction(originalFunction, beforeHook, stopCondition) {
  return function(...args) {
    if (typeof beforeHook === 'function') {
      beforeHook(...args);
    }
    // Если условие остановки выполнено, прекращаем выполнение оригинальной функции
    if (typeof stopCondition === 'function' && stopCondition(...args)) {
        console.log("JOPA")
      return; // Можно вернуть значение по умолчанию или бросить ошибку
    }
    // Иначе вызываем оригинальную функцию
    return originalFunction(...args);
  };
}
function waitFor(conditionFn, { interval = 100 } = {}) {
  return new Promise((resolve, reject) => {
    const startTime = Date.now();

    (function checkCondition() {
      if (conditionFn()) {
        resolve();
      } else {
        setTimeout(checkCondition, interval);
      }
    })();
  });
}
window.onload = function() {
    waitFor(() => typeof unsafeWindow?.stManager?.add !== 'undefined').then(e=>{
        unsafeWindow.stManager.add = hookFunction(unsafeWindow.stManager.add,null,function(...args){
            return Array.isArray(args?.at(0)) && args?.at(0)?.find(e=>e.match(/ads_light\.js/))
        })
    })
    waitFor(() => typeof unsafeWindow?.vk !== 'undefined').then(e=>{
        set();
    })
    waitFor(() => typeof unsafeWindow?.browser !== 'undefined').then(e=>{
        unsafeWindow.browser.ios = true;
    })

    setInterval(block,100)
}

function set(){
    if (typeof unsafeWindow?.vk?.pe == 'undefined') return
    //unsafeWindow.vk.pe.tgb_adblock_protection = true;
    unsafeWindow.vk.audioAdsConfig = null;
    unsafeWindow.browser.ios = true;
    unsafeWindow.ap.ads._adEvents = [];
    unsafeWindow.ap.ads._isPlaying = false;
    unsafeWindow.noAdsAtAll = true
    unsafeWindow.PageBottomBanners.initUnauthBanner = function () { }
    unsafeWindow.Unauthorized2 = undefined
    unsafeWindow.noAds = true
    unsafeWindow.cur.no_left_ads = true;
    unsafeWindow.cur.isGamesInRightBlock = false;
    unsafeWindow.no_ads = true;
    unsafeWindow.isNoAdsForce = true;
    unsafeWindow.hide_ad = true
    unsafeWindow.vk__adsLight.yaDirectAdActive = false;
    unsafeWindow.ya_direct = false
}
function block(){
    set();
    localStorage.setItem("ads.events", null);
    if (typeof unsafeWindow?.vk !== 'undefined'){
        localStorage.setItem("ads.events_@id:"+unsafeWindow.vk.id,null)
    }
    let ad_blocks = document.querySelectorAll(universal_ads);
    for (let ad of ad_blocks){
        ad.outerHTML= '';
    }
    const videoplayer_ads_actions = document.querySelector('div.videoplayer_ads_actions')
    if (videoplayer_ads_actions)
        videoplayer_ads_actions.style.display = 'none'
    let el = document.querySelector("div.rb-adman-cta-block-wrapper") || document.querySelector("div.rb-adman-cta-btn") || document.querySelector("div.shadow-root-container")?.shadowRoot.querySelector("div.rb-adman-cta-block-wrapper")
    document.querySelector('div.rb-adman-ad-actions')?.remove()
    document.querySelector('div.videoplayer_ads_media_el')?.remove()
    document.querySelector('div.videoplayer_ads')?.remove()
    el?.remove()
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址