# 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; })(); # 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 = Fab; // window.fuckAdBlock = 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 www.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, _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; })(); www.google-analytics.com/analytics.js application/javascript (function() { // https://developers.google.com/analytics/devguides/collection/analyticsjs/ var ga = function() { var len = arguments.length; if ( len === 0 ) { return; } var f = arguments[len-1]; if ( typeof f === 'object' && typeof f.hitCallback === 'function' ) { f.hitCallback(); } }; window.ga = ga; })(); # 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() { // https://developers.google.com/doubleclick-gpt/reference var noopfn = function() { ; }; var noopthisfn = function() { return this; }; // var slot = { addService: noopthisfn, clearTargeting: noopfn, defineSizeMapping: noopthisfn, setCategoryExclusion: noopfn, setTargeting: noopthisfn }; var slotfn = function() { return slot; }; // var pas = { addEventListener: noopfn, clear: noopfn, collapseEmptyDivs: noopfn, definePassback: noopthisfn, disableInitialLoad: noopfn, display: noopfn, enableSingleRequest: noopfn, enableSyncRendering: noopfn, getSlots: function() { return []; }, refresh: noopfn, set: noopfn, setCategoryExclusion: noopfn, setTargeting: noopthisfn }; // var smb = { addSize: noopthisfn, build: noopfn }; // var gpt = window.googletag || {}; gpt._vars_ = gpt._vars_ || {}; gpt.display = noopfn; gpt.defineSlot = slotfn; gpt.defineOutOfPageSlot = slotfn; gpt.enableServices = noopfn; gpt.getVersion = gpt.getVersion || noopfn; gpt.pubads = function() { return pas; }; gpt.sizeMapping = function() { return smb; }; // if ( Array.isArray(gpt.cmd) ) { gpt.cmd.forEach(function(a) { if ( typeof a === 'function' ) { a(); } }); } gpt.cmd = { push: function(a) { if ( typeof a === 'function' ) { a(); } } }; // window.googletag = gpt; })(); # 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 using whatever # script is normally blocked on the site. yavli-defuser.js application/javascript (function() { var descriptor = { set: function() { ; }, get: function() { return ''; } }; try { Object.defineProperty(window, '__durl', descriptor); Object.defineProperty(window, '__lsurl', descriptor); Object.defineProperty(window, '__lturl', descriptor); } catch (ex) { } })(); # 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.startsWith('/forbes/welcome/') ) { return; } if ( typeof window.fbs_settings === 'object' ) { window.fbs_settings.classes = 'W10='; window.fbs_settings.mobile = 'true'; return; } Object.defineProperty(window, 'fbs_settings', { value: { classes: 'W10=', data: { title: '' }, mobile: 'true' } }); })();