# Resources to be used as redirect destinations. # # - Each distinct resource entry is separated by an empty line. # - The first line in a resource entry is: token mime-type[;encoding] # - All following lines are the data. An empty line signals the end of the # data. # # If the encoding is absent, the data will be converted to base64, and the # encoding will be set to `;base64`. # http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever 1x1-transparent.gif image/gif;base64 R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 2x2-transparent.png image/png;base64 iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQVQI12NgQAcAABIAAe+JVKQAAAAA SUVORK5CYII= 32x32-transparent.png image/png;base64 iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+3BAQEAAACCIP+vbkhAAQAA AO8GECAAAZf3V9cAAAAASUVORK5CYII= noopcss text/css noopjs application/javascript (function() { ; })(); noopframe text/html hd-main.js application/javascript var L = (function(){ var l = {}; var noopfn = function() { ; }; var props = [ "pf", "ed", "Qe", "fd", "xh", "Uc", "ef", "zd", "Ad", "Qc", "Ri", "Wc", "Vc", "Xc", "Wg", "rd", "qd", "sd", "Pe", "Id", "Hd", "Jd", "fg", "Fd", "Ed", "Gd", "ek", "Cd", "Bd", "Dd", "Nj", "Sc", "Rc", "Tc", "wg", "xd", "wd", "yd", "fh", "ld", "md", "nd", "Re", "cd", "Pc", "ke", "Yc", "Xg", "jd", "kd", "oh", "ad", "bd", "mi", "gd", "hd", "ae", "dd", "fk", "ij", "ud", "td", "vd", "ig", "od", "pd", "Yd", "$j", "Oc", "bf" ]; for (var i = 0; i < props.length; i++) { l[props[i]] = noopfn; } return l; })(); 1216.js application/javascript (function() { // var sto = window.setTimeout; var mysto = function(a, b) { if ( b === 15000 && a.toString().lastIndexOf('function a()', 0) === 0 ) { return; } return sto(a, b); }; Object.defineProperty(window, 'setTimeout', { get: function() { return mysto; } }); })(); # fuckadblock defuser fuckadblock.js-3.2.0 application/javascript (function() { var noopfn = function() { ; }; // var Fab = function() {}; Fab.prototype.check = noopfn; Fab.prototype.clearEvent = noopfn; Fab.prototype.emitEvent = noopfn; Fab.prototype.on = function(a, b) { if ( !a ) { b(); } return this; }; Fab.prototype.onDetected = function() { return this; }; Fab.prototype.onNotDetected = function(a) { a(); return this; }; Fab.prototype.setOption = noopfn; window.FuckAdBlock = window.BlockAdBlock = Fab; // window.fuckAdBlock = window.blockAdBlock = new Fab(); })(); antiAdBlock.js application/javascript (function() { window.antiAdBlock = { onDetected: function() { ; }, onNotDetected: function(a) { a(); } }; })(); # To neutralize GA scripts. The goal is to provide the minimal API # expected by clients of these scripts so that the end users are able # to wholly block GA while minimizing risks of page breakage. # Test cases (need way more): # - https://github.com/chrisaljoudi/uBlock/issues/119 google-analytics.com/ga.js application/javascript (function() { var noopfn = function() { ; }; // var Gaq = function() { ; }; Gaq.prototype.Na = noopfn; Gaq.prototype.O = noopfn; Gaq.prototype.Sa = noopfn; Gaq.prototype.Ta = noopfn; Gaq.prototype.Va = noopfn; Gaq.prototype._createAsyncTracker = noopfn; Gaq.prototype._getAsyncTracker = noopfn; Gaq.prototype._getPlugin = noopfn; Gaq.prototype.push = function(a) { if ( typeof a === 'function' ) { a(); } }; // var tracker = function() {}; tracker._getLinkerUrl = function(a) { return a; }; // var tracker = { _initData: noopfn, _trackEvent: noopfn, _trackPageview: noopfn }; // var Gat = function() { ; }; Gat.prototype._anonymizeIP = noopfn; Gat.prototype._createTracker = noopfn; Gat.prototype._forceSSL = noopfn; Gat.prototype._getPlugin = noopfn; Gat.prototype._getTracker = function() { return tracker; }; Gat.prototype._getTrackerByName = function() { return tracker; }; Gat.prototype._getTrackers = noopfn; Gat.prototype.aa = noopfn; Gat.prototype.ab = noopfn; Gat.prototype.hb = noopfn; Gat.prototype.la = noopfn; Gat.prototype.oa = noopfn; Gat.prototype.pa = noopfn; Gat.prototype.u = noopfn; var gat = new Gat(); window._gat = gat; // var gaq = new Gaq(); (function() { var aa = window._gaq || []; if ( Array.isArray(aa) ) { while ( aa[0] ) { gaq.push(aa.shift()); } } })(); window._gaq = gaq.qf = gaq; })(); google-analytics.com/analytics.js application/javascript (function() { // https://developers.google.com/analytics/devguides/collection/analyticsjs/ var noopfn = function() { ; }; var noopnullfn = function() { return null; }; // var Tracker = function() { ; }; var p = Tracker.prototype; p.get = noopfn; p.set = noopfn; p.send = noopfn; // var gaName = window.GoogleAnalyticsObject || 'ga'; var ga = function() { var len = arguments.length; if ( len === 0 ) { return; } var f = arguments[len-1]; if ( typeof f !== 'object' || f === null || typeof f.hitCallback !== 'function' ) { return; } try { f.hitCallback(); } catch (ex) { } }; ga.create = function() { return new Tracker(); }; ga.getByName = noopnullfn; ga.getAll = function() { return []; }; ga.remove = noopfn; window[gaName] = ga; })(); google-analytics.com/inpage_linkid.js application/javascript (function() { window._gaq = window._gaq || { push: function() { ; } }; })(); # Ubiquitous googletagservices.com: not blocked by EasyPrivacy. # "Tags are tiny bits of website code that let you measure traffic and # "visitor behavior" googletagservices.com/gpt.js application/javascript (function() { var p; // https://developers.google.com/doubleclick-gpt/reference var noopfn = function() { ; }; var noopthisfn = function() { return this; }; var noopnullfn = function() { return null; }; var nooparrayfn = function() { return []; }; var noopstrfn = function() { return ''; }; // var companionAdsService = { addEventListener: noopthisfn, enableSyncLoading: noopfn, setRefreshUnfilledSlots: noopfn }; var contentService = { addEventListener: noopthisfn, setContent: noopfn }; var PassbackSlot = function() { ; }; p = PassbackSlot.prototype; p.display = noopfn; p.get = noopnullfn; p.set = noopthisfn; p.setClickUrl = noopthisfn; p.setTagForChildDirectedTreatment = noopthisfn; p.setTargeting = noopthisfn; p.updateTargetingFromMap = noopthisfn; var pubAdsService = { addEventListener: noopthisfn, clear: noopfn, clearCategoryExclusions: noopthisfn, clearTagForChildDirectedTreatment: noopthisfn, clearTargeting: noopthisfn, collapseEmptyDivs: noopfn, defineOutOfPagePassback: function() { return new PassbackSlot(); }, definePassback: function() { return new PassbackSlot(); }, disableInitialLoad: noopfn, display: noopfn, enableAsyncRendering: noopfn, enableSingleRequest: noopfn, enableSyncRendering: noopfn, enableVideoAds: noopfn, get: noopnullfn, getAttributeKeys: nooparrayfn, refresh: noopfn, set: noopthisfn, setCategoryExclusion: noopthisfn, setCentering: noopfn, setCookieOptions: noopthisfn, setLocation: noopthisfn, setPublisherProvidedId: noopthisfn, setTagForChildDirectedTreatment: noopthisfn, setTargeting: noopthisfn, setVideoContent: noopthisfn, updateCorrelator: noopfn }; var SizeMappingBuilder = function() { ; }; p = SizeMappingBuilder.prototype; p.addSize = noopthisfn; p.build = noopnullfn; var Slot = function() { ; }; p = Slot.prototype; p.addService = noopthisfn; p.clearCategoryExclusions = noopthisfn; p.clearTargeting = noopthisfn; p.defineSizeMapping = noopthisfn; p.get = noopnullfn; p.getAdUnitPath = nooparrayfn; p.getAttributeKeys = nooparrayfn; p.getCategoryExclusions = nooparrayfn; p.getDomId = noopstrfn; p.getSlotElementId = noopstrfn; p.getSlotId = noopthisfn; p.getTargeting = nooparrayfn; p.getTargetingKeys = nooparrayfn; p.set = noopthisfn; p.setCategoryExclusion = noopthisfn; p.setClickUrl = noopthisfn; p.setCollapseEmptyDiv = noopthisfn; p.setTargeting = noopthisfn; // var gpt = window.googletag || {}; var cmd = gpt.cmd || []; gpt.apiReady = true; gpt.cmd = []; gpt.cmd.push = function(a) { try { a(); } catch (ex) { } return 1; }; gpt.companionAds = function() { return companionAdsService; }; gpt.content = function() { return contentService; }; gpt.defineOutOfPageSlot = function() { return new Slot(); }; gpt.defineSlot = function() { return new Slot(); }; gpt.disablePublisherConsole = noopfn; gpt.display = noopfn; gpt.enableServices = noopfn; gpt.getVersion = noopstrfn; gpt.pubads = function() { return pubAdsService; }; gpt.pubadsReady = true; gpt.sizeMapping = function() { return new SizeMappingBuilder(); }; window.googletag = gpt; while ( cmd.length !== 0 ) { gpt.cmd.push(cmd.shift()); } })(); # https://forums.lanik.us/viewtopic.php?f=91&t=27188 i.ligatus.com/*/angular-tag.js application/javascript (function() { self.adProtect = true; })(); # Yavli ads. These are blocked using an inline script tag filter, but this # works only on Firefox. So we side-load the following script for sites # suffering Yavli's click-bait ads. yavli-defuser.js application/javascript (function() { var noopfn = function() { ; }; var nourl = { set: noopfn, get: function() { return ''; } }; try { Object.defineProperty(window, '__durl', nourl); Object.defineProperty(window, '__lsurl', nourl); Object.defineProperty(window, '__lturl', nourl); } catch (ex) { } var aa = ['_x','_y','_z','zx']; var no = { set: noopfn, get: function() { return { start: noopfn }; } }; while ( aa.length ) { try { Object.defineProperty(window, aa.pop(), no); } catch (e) { } } })(); # Addefend defuser uabinject-defuser.js application/javascript (function() { window.uabpdl = window.uabInject = window.uabDetect = true; })(); # https://github.com/gorhill/uBlock/issues/1094 pornhub-popup-defuser.js application/javascript (function() { var w = window; var count = Math.ceil(8+Math.random()*4); var tomorrow = new Date(Date.now() + 86400); var expire = tomorrow.toString(); document.cookie = 'FastPopSessionRequestNumber=' + count + '; expires=' + expire; var db; if ( (db = w.localStorage) ) { db.setItem('InfNumFastPops', count); db.setItem('InfNumFastPopsExpire', expire); } if ( (db = w.sessionStorage) ) { db.setItem('InfNumFastPops', count); db.setItem('InfNumFastPopsExpire', expire); } })(); # https://news.ycombinator.com/item?id=10814913 forbes-defuser.js application/javascript (function() { if ( window.location.pathname.lastIndexOf('/forbes/welcome/', 0) !== 0 ) { return; } var noopfn = function() { ; }; var odp = Object.defineProperty; var wad, wadm, abc = function() {}; var abcp = abc.prototype; abcp.addCheck = abcp.check = abcp.initialize = abcp.removeCheck = abcp.triggerAdBlockState = noopfn; abcp.getAdBlockState = function() { return false; }; odp(window, 'WelcomeAd', { get: function() { return wad; }, set: function(a) { wad = a; odp(a, 'Modules', { get: function() { return wadm; }, set: function(a) { wadm = a; if ( a.AdBlockChecker ) { a.AdBlockChecker = abc; } else { odp(a, 'AdBlockChecker', { get: function() { return abc; }, set: function() {} }); } } }); } }); })(); # https://forums.lanik.us/viewtopic.php?f=62&t=25212 impspcabe-defuser.js application/javascript (function(){ window._impspcabe = false; })(); # https://github.com/gorhill/uBlock/issues/733 wpredirect-defuser.js application/javascript (function() { var twp = window.TWP = window.TWP || {}; twp.Identity = twp.Identity || {}; twp.Identity.initComplete = true; })(); # https://github.com/gorhill/uBlock/issues/1194 openload-defuser.js application/javascript (function() { Object.defineProperty(window, 'preserve', { get: function() { return true; }, set: function() {} }); })(); # https://github.com/gorhill/uBlock/issues/1136 1136.js application/javascript (function() { var wjdmp; var noopfn = function() { ; }; var wjdmpGet = function() { return wjdmp; }; var wjdmpSet = function(a) { wjdmp = function(r, o) { if ( r.length === 1 && r[0] === 4 ) { for ( var k in o ) { if ( o.hasOwnProperty(k) && typeof o[k] === 'function' ) { o[k] = noopfn; } } } a(r, o); }; }; try { Object.defineProperty(window, 'webpackJsonpdmp', { get: wjdmpGet, set: wjdmpSet }); } catch(ex) { } })(); bab-defuser.js application/javascript (function() { var sto = window.setTimeout, re = /\.bab_elementid.$/; window.setTimeout = function(a, b) { if ( typeof a !== 'string' || !re.test(a) ) { sto(a, b); } }; })(); kissanime-defuser.js application/javascript (function() { Object.defineProperty(window, 'isBlockAds2', { get: function() { return false; }, set: function(a) {} }); })(); scorecardresearch.com/beacon.js application/javascript (function() { window.COMSCORE = { purge: function() { _comscore = []; }, beacon: function() { ; } }; })(); # https://github.com/gorhill/uBlock/issues/1250#issuecomment-173533894 widgets.outbrain.com/outbrain.js application/javascript (function() { var noopfn = function() { ; }; var obr = {}; obr.extern = { callClick: noopfn, callLoadMore: noopfn, callRecs: noopfn, callUserZapping: noopfn, callWhatIs: noopfn, cancelRecommendation: noopfn, cancelRecs: noopfn, closeCard: noopfn, closeModal: noopfn, closeTbx: noopfn, errorInjectionHandler: noopfn, getCountOfRecs: noopfn, getStat: noopfn, imageError: noopfn, manualVideoClicked: noopfn, onOdbReturn: noopfn, onVideoClick: noopfn, pagerLoad: noopfn, recClicked: noopfn, refreshSpecificWidget: noopfn, refreshWidget: noopfn, reloadWidget: noopfn, researchWidget: noopfn, returnedError: noopfn, returnedHtmlData: noopfn, returnedIrdData: noopfn, returnedJsonData: noopfn, scrollLoad: noopfn, showDescription: noopfn, showRecInIframe: noopfn, userZappingMessage: noopfn, video: { getVideoRecs: noopfn, videoClicked: noopfn }, zappingFormAction: noopfn }; window.OBR = window.OBR || obr; })(); # https://github.com/gorhill/uBlock/issues/1228 window.name-defuser application/javascript window.name = null;