// ==UserScript== // @name Enhanced Corrupt Dailymotion Ads // @namespace https://pastebin.com/tiAedV19 // @version 2.0 // @description Corrupts ads on Dailymotion by blocking playback // @match https://www.dailymotion.com/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/509767/Enhanced%20Corrupt%20Dailymotion%20Ads.user.js // @updateURL https://update.greasyfork.icu/scripts/509767/Enhanced%20Corrupt%20Dailymotion%20Ads.meta.js // ==/UserScript== (function() { 'use strict'; const adSources = [ 'ad', 'advertisement', 'doubleclick', 'adserver', 'ads', 'tracking', 'spotxchange', 'krxd.net', 'brighttag', 'vdopia', 'dailymotion.com/ads', 'googleads', 'adtech', 'serving-sys', 'adsrvr', 'adroll', 'adnxs', 'adform', 'rubiconproject', 'appnexus', 'zencoder', 'floodlight', 'criteo', 'indexexchange', 'openx', 'smaato', 'yieldmo', 'adcolony', 'moatads', 'brightroll', 'liveintent', 'taboola', 'outbrain', 'revcontent', 'adsbygoogle', 'sovrn', 'sonobi', 'mopub', 'audiencenetwork', 'flashtalking', 'triplelift', 'fetchback', 'adbeast', 'adpushup', 'improvely', 'videonow', 'extreme-reach', 'adview', 'adserverpub', 'adsnative', 'yieldbot', 'moat', 'improvedigital', 'cysend', 'media.net', 'adswizz', 'spotx', 'gumgum', 'kontera', 'nativeads', 'adf.ly', 'shorte.st', 'adfender', 'fanboost', 'nativo', 'adlib', 'mediacom', 'admatic', 'videoplaza', 'mocean', 'adconion', 'justpremium', 'openadstream', 'admeld', 'smaato', 'adswapper', 'mediaalpha', 'brainly', 'adblade', 'tapad', 'adparlor', 'adknowledge', 'tremorvideo', 'radiumone', 'uzymedia', 'adgear', 'cpxinteractive', 'whiteshark', 'adcontrol', 'adspring', 'maxymiser', 'booster', 'customaudience', 'geniuslink', 'intango', 'igum', 'leadbolt', 'adaction', 'buysellads', 'clicksor', 'zebraads', 'advertise.com', 'ezanga', 'videojug', 'avocarrot', 'fyber', 'yandex', 'adlibitum', 'popads', 'popunder', 'atdmt', 'adpolicy', 'acxiom', 'mopub', 'criteo', 'dynamicyield', 'adpiler', 'arbitraryads', 'adtrader', 'adhero', 'digitalenvoy', 'cocoon', 'adshuffler', 'backflip', 'advangelists', 'interclick', 'adman', 'adscape', 'adattic', 'adsidian', 'adperium', 'retargeting', 'bidswitch', 'adteca', 'whaleads', 'buyat', 'adshuffle', 'inmobi', 'interscroller', 'proxio', 'adcloud', 'adserving', 'adunity', 'pof.com', 'roboads', 'in-ads', 'hypeaudience', 'yahooads', 'vungle', 'chartboost', 'unityads', 'applovin', 'adnetwork', 'innoads', 'adpure', 'adsoft', 'redefiningads', 'mmedia', 'weborama', 'newads', 'adspring', 'deputyads', 'dcollab', 'dsp', 'quantcast', 'adfuse', 'epom', 'adext', 'rsi', 'thetradedesk', 'buzzcity', 'criteo', 'districtm', 'plista', 'veeboo', 'adopt', 'admitad', 'kargo', 'squeezy', 'clearcode', 'adupay', 'spinme', 'yuga', 'inetwork', 'adwallet', 'myads', 'adfunnel', 'unitedads', 'adwarrior', 'metaad', 'intelligentads', 'mediacore', 'driftrock', '360ads', 'adclick', 'splashad', 'adbrokers', 'reachlocal', 'adiq', 'adzero', 'adspresso', 'netseer', 'btrll', 'conviva', 'bitrate', 'adtraction', 'adstring', 'adviewmedia', 'interceptd', 'avora', 'mindspark', 'aolads', 'adnow', 'adverty', 'adcloudmedia', 'adoption', 'inspireads', 'broadstreetads', 'exponential', 'crossmedia', 'triplelift', 'lotame', 'nexage', 'clickable', 'dove', 'inviqa', 'adspark', 'addefend', 'fastclick', 'adnet', 'adexchanger', 'metricads', 'simpleads', 'upliftads', 'advolcano', 'spotx', 'twitch', 'preroll', ]; const isAdSource = (src) => { return adSources.some(ad => src.includes(ad)); }; const corruptAds = () => { const originalPlay = HTMLMediaElement.prototype.play; HTMLMediaElement.prototype.play = function() { if (isAdSource(this.src)) { return Promise.reject(new Error('Ad playback failed due to connection issues.')); } return originalPlay.call(this); }; }; const suppressConsoleWarnings = () => { const originalError = console.error; console.error = function(...args) { if (args[0] && typeof args[0] === 'string' && args[0].includes('Reading cookie in cross-site context')) { return; } originalError.apply(console, args); }; }; window.addEventListener('load', () => { suppressConsoleWarnings(); corruptAds(); const observer = new MutationObserver(() => { corruptAds(); }); observer.observe(document.body, { childList: true, subtree: true }); }); })();