2015-12-23 13:23:09 +01:00
|
|
|
# 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
|
2015-12-31 18:05:18 +01:00
|
|
|
iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQVQI12NgQAcAABIAAe+JVKQAAAAA
|
|
|
|
SUVORK5CYII=
|
2015-12-23 13:23:09 +01:00
|
|
|
|
|
|
|
|
2015-12-31 18:05:18 +01:00
|
|
|
32x32-transparent.png image/png;base64
|
|
|
|
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+3BAQEAAACCIP+vbkhAAQAA
|
|
|
|
AO8GECAAAZf3V9cAAAAASUVORK5CYII=
|
2015-12-23 13:23:09 +01:00
|
|
|
|
|
|
|
|
|
|
|
noopcss text/css
|
|
|
|
|
|
|
|
|
|
|
|
noopjs application/javascript
|
|
|
|
(function() {
|
|
|
|
;
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
|
|
noopframe text/html
|
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head><title></title></head>
|
|
|
|
<body></body>
|
|
|
|
</html>
|
|
|
|
|
|
|
|
|
|
|
|
hd-main.js application/javascript
|
|
|
|
var L = (function(){
|
|
|
|
var l = {};
|
|
|
|
var noopfn = function() {
|
|
|
|
;
|
|
|
|
};
|
2015-12-31 18:05:18 +01:00
|
|
|
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"
|
|
|
|
];
|
2015-12-23 13:23:09 +01:00
|
|
|
for (var i = 0; i < props.length; i++) {
|
|
|
|
l[props[i]] = noopfn;
|
|
|
|
}
|
|
|
|
return l;
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
2015-12-24 00:47:43 +01:00
|
|
|
# fuckadblock defuser
|
2015-12-23 13:23:09 +01:00
|
|
|
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(); }
|
2015-12-24 00:47:43 +01:00
|
|
|
return this;
|
2015-12-23 13:23:09 +01:00
|
|
|
};
|
|
|
|
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;
|
|
|
|
})();
|
|
|
|
|
2015-12-27 07:16:40 +01:00
|
|
|
www.google-analytics.com/analytics.js application/javascript
|
|
|
|
(function() {
|
2015-12-27 07:49:18 +01:00
|
|
|
// https://developers.google.com/analytics/devguides/collection/analyticsjs/
|
|
|
|
var ga = function() {
|
|
|
|
var len = arguments.length;
|
|
|
|
if ( len === 0 ) {
|
2015-12-27 07:16:40 +01:00
|
|
|
return;
|
|
|
|
}
|
2015-12-27 07:49:18 +01:00
|
|
|
var f = arguments[len-1];
|
|
|
|
if ( typeof f === 'object' && typeof f.hitCallback === 'function' ) {
|
2015-12-27 07:16:40 +01:00
|
|
|
f.hitCallback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
window.ga = ga;
|
|
|
|
})();
|
|
|
|
|
2015-12-23 13:23:09 +01:00
|
|
|
|
|
|
|
# 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() {
|
2015-12-24 15:07:26 +01:00
|
|
|
// https://developers.google.com/doubleclick-gpt/reference
|
2015-12-23 13:23:09 +01:00
|
|
|
var noopfn = function() {
|
|
|
|
;
|
2016-01-01 01:05:03 +01:00
|
|
|
};
|
2016-01-01 01:18:59 +01:00
|
|
|
var noopthisfn = function() {
|
|
|
|
return this;
|
|
|
|
};
|
2015-12-23 13:23:09 +01:00
|
|
|
//
|
2015-12-24 15:07:26 +01:00
|
|
|
var slot = {
|
2016-01-01 01:18:59 +01:00
|
|
|
addService: noopthisfn,
|
2015-12-24 15:07:26 +01:00
|
|
|
setCategoryExclusion: noopfn,
|
2016-01-01 01:18:59 +01:00
|
|
|
setTargeting: noopthisfn
|
2015-12-24 15:07:26 +01:00
|
|
|
};
|
|
|
|
var slotfn = function() {
|
|
|
|
return slot;
|
|
|
|
};
|
|
|
|
//
|
2016-01-01 01:02:34 +01:00
|
|
|
var pas = {
|
2015-12-24 15:07:26 +01:00
|
|
|
addEventListener: noopfn,
|
|
|
|
clear: noopfn,
|
2016-01-01 16:30:36 +01:00
|
|
|
definePassback: noopthisfn,
|
|
|
|
display: noopfn,
|
2015-12-24 15:07:26 +01:00
|
|
|
enableSyncRendering: noopfn,
|
|
|
|
refresh: noopfn,
|
|
|
|
set: noopfn,
|
2016-01-01 01:02:34 +01:00
|
|
|
setCategoryExclusion: noopfn,
|
2016-01-01 16:30:36 +01:00
|
|
|
setTargeting: noopthisfn
|
2016-01-01 01:02:34 +01:00
|
|
|
};
|
|
|
|
//
|
|
|
|
var smb = {
|
2016-01-01 01:18:59 +01:00
|
|
|
addSize: noopthisfn,
|
2016-01-01 01:02:34 +01:00
|
|
|
build: noopfn
|
2015-12-24 15:07:26 +01:00
|
|
|
};
|
|
|
|
//
|
2015-12-23 13:23:09 +01:00
|
|
|
var gpt = window.googletag || {};
|
|
|
|
gpt._vars_ = gpt._vars_ || {};
|
|
|
|
gpt.cmd = gpt.cmd || [];
|
2015-12-24 15:07:26 +01:00
|
|
|
gpt.display = noopfn;
|
|
|
|
gpt.defineSlot = slotfn;
|
|
|
|
gpt.defineOutOfPageSlot = slotfn;
|
|
|
|
gpt.enableServices = noopfn;
|
2015-12-23 13:23:09 +01:00
|
|
|
gpt.getVersion = gpt.getVersion || noopfn;
|
2015-12-24 15:07:26 +01:00
|
|
|
gpt.pubads = function() {
|
2016-01-01 01:02:34 +01:00
|
|
|
return pas;
|
|
|
|
};
|
|
|
|
gpt.sizeMapping = function() {
|
|
|
|
return smb;
|
2015-12-24 15:07:26 +01:00
|
|
|
};
|
2015-12-23 13:23:09 +01:00
|
|
|
//
|
|
|
|
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() {
|
2015-12-23 17:02:36 +01:00
|
|
|
var descriptor = {
|
|
|
|
set: function() {
|
|
|
|
;
|
|
|
|
},
|
|
|
|
get: function() {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
};
|
2015-12-23 13:23:09 +01:00
|
|
|
try {
|
2015-12-23 17:02:36 +01:00
|
|
|
Object.defineProperty(window, '__durl', descriptor);
|
|
|
|
Object.defineProperty(window, '__lsurl', descriptor);
|
|
|
|
Object.defineProperty(window, '__lturl', descriptor);
|
2015-12-23 13:23:09 +01:00
|
|
|
} catch (ex) {
|
|
|
|
}
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
|
|
# Addefend defuser
|
|
|
|
uabinject-defuser.js application/javascript
|
|
|
|
(function() {
|
|
|
|
window.uabpdl = window.uabInject = window.uabDetect = true;
|
|
|
|
})();
|
2015-12-23 20:15:53 +01:00
|
|
|
|
|
|
|
|
|
|
|
# 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);
|
|
|
|
}
|
|
|
|
})();
|
2015-12-31 18:05:18 +01:00
|
|
|
|
|
|
|
|
|
|
|
# https://news.ycombinator.com/item?id=10814913
|
|
|
|
forbes-defuser.js application/javascript
|
|
|
|
(function() {
|
2016-01-01 16:44:41 +01:00
|
|
|
if ( !window.location.pathname.startsWith('/forbes/welcome/') ) {
|
|
|
|
return;
|
|
|
|
}
|
2016-01-01 16:30:36 +01:00
|
|
|
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'
|
|
|
|
}
|
|
|
|
});
|
2015-12-31 18:05:18 +01:00
|
|
|
})();
|