Permalink
Switch branches/tags
Nothing to show
Find file Copy path
2421 lines (2212 sloc) 67.7 KB
# 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=
3x2-transparent.png image/png;base64
iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETuUAAAAA
SUVORK5CYII=
32x32-transparent.png image/png;base64
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+3BAQEAAACCIP+vbkhAAQAA
AO8GECAAAZf3V9cAAAAASUVORK5CYII=
nooptext text/plain
noopcss text/css
noopjs application/javascript
(function() {
;
})();
noopframe text/html
<!DOCTYPE html>
<html>
<head><title></title></head>
<body></body>
</html>
# From:
# https://ubuntuforums.org/showthread.php?t=1911430&p=11624471#post11624471
# ffmpeg -ar 48000 -t 0.1 -f s16le -acodec pcm_s16le -ac 2 -i /dev/zero -acodec libmp3lame -aq 4 output.mp3
# But with 0.1 (second) instead of 60.
noopmp3-0.1s audio/mp3;base64
SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjQwLjEwMQAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBgYGBgYGBgYGBgYGBggICAgICA
gICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg
4P////////////////////8AAAAATGF2YzU2LjYwAAAAAAAAAAAAAAAAJAAAAAAAAAAAAwDNZKlY//sU
ZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAA
ACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgA
AA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sU
ZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
# From:
# https://github.com/kud/blank-video
noopmp4-1s video/mp4;base64
AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4
AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2Yzhk
OCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3
LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTow
OjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBt
aXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAg
ZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxv
b2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNl
ZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAg
a2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29r
YWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02
OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxf
aHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJyc
nJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4
GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEA
SZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa
4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOA
IQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAG
QZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkA
I4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAA
AAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZAC
GQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOA
AAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJ
kAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkA
I4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkh
AEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAA
AAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAA
AAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABA
AAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBt
ZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABW
aWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAA
AAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAA
AAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRr
aEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEA
AAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsA
AAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoA
AAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28A
AAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAA
AASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4A
AAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEB
AAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxl
bHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBV
xAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQ
c21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABn
c3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAA
A4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIA
AAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEA
AAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIA
AAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEA
AAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIA
AAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEA
AAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oA
AAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkA
AAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkA
AAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkA
AAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UA
AANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUA
AATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1
ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAl
qXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw
hd-main.js application/javascript
(function(){
var l = {};
var noopfn = function() {
;
};
var props = [
"$j","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Nj","Oc","Pc","Pe",
"Qc","Qe","Rc","Re","Ri","Sc","Tc","Uc","Vc","Wc","Wg","Xc","Xg","Yc","Yd",
"ad","ae","bd","bf","cd","dd","ed","ef","ek","fd","fg","fh","fk","gd","hd",
"ig","ij","jd","kd","ke","ld","md","mi","nd","od","oh","pd","pf","qd","rd",
"sd","td","ud","vd","wd","wg","xd","xh","yd","zd",
"$d","$e","$k","Ae","Af","Aj","Be","Ce","De","Ee","Ek","Eo","Ep","Fe","Fo",
"Ge","Gh","Hk","Ie","Ip","Je","Ke","Kk","Kq","Le","Lh","Lk","Me","Mm","Ne",
"Oe","Pe","Qe","Re","Rp","Se","Te","Ue","Ve","Vp","We","Xd","Xe","Yd","Ye",
"Zd","Ze","Zf","Zk","ae","af","al","be","bf","bg","ce","cp","df","di","ee",
"ef","fe","ff","gf","gm","he","hf","ie","je","jf","ke","kf","kl","le","lf",
"lk","mf","mg","mn","nf","oe","of","pe","pf","pg","qe","qf","re","rf","se",
"sf","te","tf","ti","ue","uf","ve","vf","we","wf","wg","wi","xe","ye","yf",
"yk","yl","ze","zf","zk"
];
for (var i = 0; i < props.length; i++) {
l[props[i]] = noopfn;
}
window.L = window.J = l;
})();
uAssets-17 application/javascript
(function() {
var sto = window.setTimeout;
var mysto = function(a, b) {
if ( b === 15000 && a.toString().indexOf('a()') !== -1 ) {
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;
var fab = new Fab(),
getSetFab = {
get: function() { return Fab; },
set: function() {}
},
getsetfab = {
get: function() { return fab; },
set: function() {}
};
if ( window.hasOwnProperty('FuckAdBlock') ) { window.FuckAdBlock = Fab; }
else { Object.defineProperty(window, 'FuckAdBlock', getSetFab); }
if ( window.hasOwnProperty('BlockAdBlock') ) { window.BlockAdBlock = Fab; }
else { Object.defineProperty(window, 'BlockAdBlock', getSetFab); }
if ( window.hasOwnProperty('SniffAdBlock') ) { window.SniffAdBlock = Fab; }
else { Object.defineProperty(window, 'SniffAdBlock', getSetFab); }
if ( window.hasOwnProperty('fuckAdBlock') ) { window.fuckAdBlock = fab; }
else { Object.defineProperty(window, 'fuckAdBlock', getsetfab); }
if ( window.hasOwnProperty('blockAdBlock') ) { window.blockAdBlock = fab; }
else { Object.defineProperty(window, 'blockAdBlock', getsetfab); }
if ( window.hasOwnProperty('sniffAdBlock') ) { window.sniffAdBlock = fab; }
else { Object.defineProperty(window, 'sniffAdBlock', getsetfab); }
})();
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
# Reference API:
# - https://developers.google.com/analytics/devguides/collection/gajs/
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(); return;
}
if ( Array.isArray(a) === false ) {
return;
}
// https://twitter.com/catovitch/status/776442930345218048
// https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link
if ( a[0] === '_link' && typeof a[1] === 'string' ) {
window.location.assign(a[1]);
}
// https://github.com/gorhill/uBlock/issues/2162
if ( a[0] === '_set' && a[1] === 'hitCallback' && typeof a[2] === 'function' ) {
a[2]();
}
};
//
var tracker = (function() {
var out = {};
var api = [
'_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic',
'_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic',
'_cookiePathCopy _deleteCustomVar _getName _setAccount',
'_getAccount _getClientInfo _getDetectFlash _getDetectTitle',
'_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion',
'_getVisitorCustomVar _initData _link _linkByPost',
'_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey',
'_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey',
'_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo',
'_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar',
'_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath',
'_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode',
'_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout',
'_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime',
'_trackPageview _trackSocial _trackTiming _trackTrans',
'_visitCode'
].join(' ').split(/\s+/);
var i = api.length;
while ( i-- ) {
out[api[i]] = noopfn;
}
out._getLinkerUrl = function(a) {
return a;
};
return out;
})();
//
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 w = window,
gaName = w.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;
// https://github.com/uBlockOrigin/uAssets/issues/2107
ga.loaded = true;
w[gaName] = ga;
// https://github.com/gorhill/uBlock/issues/3075
var dl = w.dataLayer;
if ( dl instanceof Object && dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
dl.hide.end();
}
})();
google-analytics.com/inpage_linkid.js application/javascript
(function() {
window._gaq = window._gaq || {
push: function() {
;
}
};
})();
# https://github.com/gorhill/uBlock/issues/2480
# https://developers.google.com/analytics/devguides/collection/gajs/experiments#cxjs
google-analytics.com/cx/api.js application/javascript
(function() {
var noopfn = function() {
};
window.cxApi = {
chooseVariation: function() {
return 0;
},
getChosenVariation: noopfn,
setAllowHash: noopfn,
setChosenVariation: noopfn,
setCookiePath: noopfn,
setDomainName: noopfn
};
})();
# 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() {
;
}.bind();
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,
getTargeting: noopfn,
getTargetingKeys: nooparrayfn,
getSlots: nooparrayfn,
refresh: noopfn,
set: noopthisfn,
setCategoryExclusion: noopthisfn,
setCentering: noopfn,
setCookieOptions: noopthisfn,
setForceSafeFrame: noopthisfn,
setLocation: noopthisfn,
setPublisherProvidedId: noopthisfn,
setRequestNonPersonalizedAds: noopthisfn,
setSafeFrameConfig: 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.destroySlots = noopfn;
gpt.disablePublisherConsole = noopfn;
gpt.display = noopfn;
gpt.enableServices = noopfn;
gpt.getVersion = noopstrfn;
gpt.pubads = function() { return pubAdsService; };
gpt.pubadsReady = true;
gpt.setAdIframeTitle = noopfn;
gpt.sizeMapping = function() { return new SizeMappingBuilder(); };
window.googletag = gpt;
while ( cmd.length !== 0 ) {
gpt.cmd.push(cmd.shift());
}
})();
# Obviously more work needs to be done, but at least for now it takes care of:
# See related filter in assets/ublock/privacy.txt
# Also:
# - https://github.com/gorhill/uBlock/issues/2569
# - https://github.com/uBlockOrigin/uAssets/issues/420
googletagmanager.com/gtm.js application/javascript
(function() {
var noopfn = function() {
};
var w = window;
w.ga = w.ga || noopfn;
var dl = w.dataLayer;
if ( dl instanceof Object === false ) { return; }
if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) {
dl.hide.end();
}
if ( typeof dl.push === 'function' ) {
dl.push = function(o) {
if (
o instanceof Object &&
typeof o.eventCallback === 'function'
) {
setTimeout(o.eventCallback, 1);
}
};
}
})();
# https://github.com/uBlockOrigin/uAssets/issues/282
# https://github.com/uBlockOrigin/uAssets/issues/418
googlesyndication.com/adsbygoogle.js application/javascript
(function() {
window.adsbygoogle = window.adsbygoogle || {
length: 0,
loaded: true,
push: function Si(a) {
/*
client = client || google_ad_client || google_ad_client;
slotname = slotname || google_ad_slot;
tag_origin = tag_origin || google_tag_origin
*/
this.length += 1;
}
};
var phs = document.querySelectorAll('.adsbygoogle');
var css = 'height:1px!important;max-height:1px!important;max-width:1px!important;width:1px!important;';
for ( var i = 0; i < phs.length; i++ ) {
var fr = document.createElement('iframe');
fr.id = 'aswift_' + (i+1);
fr.style = css;
var cfr = document.createElement('iframe');
cfr.id = 'google_ads_frame' + i;
fr.appendChild(cfr);
document.body.appendChild(fr);
}
})();
# https://forums.lanik.us/viewtopic.php?f=91&t=27188
# https://forums.lanik.us/viewtopic.php?f=91&t=29609
ligatus.com/*/angular-tag.js application/javascript
(function() {
self.adProtect = true;
Object.defineProperties(window, {
uabpdl: { value: true },
uabDetect: { value: true }
});
})();
# Addefend defuser
uabinject-defuser.js application/javascript
(function() {
window.trckd = 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() + 86400000);
document.cookie = 'FastPopSessionRequestNumber=' + count + '; expires=' + tomorrow.toUTCString();
var db;
if ( (db = w.localStorage) ) {
db.setItem('InfNumFastPops', count);
db.setItem('InfNumFastPopsExpire', tomorrow.toISOString());
}
if ( (db = w.sessionStorage) ) {
db.setItem('InfNumFastPops', count);
db.setItem('InfNumFastPopsExpire', tomorrow.toISOString());
}
})();
# https://archive.rebeccablacktech.com/g/thread/S54040346#p54046766
pornhub-sanitizer.js application/javascript
(function() {
var removeAdFrames = function(aa) {
var el;
for ( var i = 0; i < aa.length; i++ ) {
el = document.getElementById(aa[i]);
if ( el !== null ) {
el.parentNode.removeChild(el);
}
}
};
Object.defineProperty(window, 'block_logic', {
get: function() { return removeAdFrames; },
set: function() {}
});
})();
goyavelab-defuser.js application/javascript
(function() {
var noopfn = function() {
;
};
Object.defineProperty(window, '_$14', {
get: function() { return noopfn; },
set: noopfn
});
})();
# https://news.ycombinator.com/item?id=10814913
forbes-defuser.js application/javascript
(function() {
if ( window.location.pathname.lastIndexOf('/forbes/welcome/', 0) !== 0 ) {
return;
}
document.cookie = 'welcomeAd=true';
window.addEventListener('load', function() {
// https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#Example_2_Get_a_sample_cookie_named_test2
var toURL = document.cookie.replace(/(?:(?:^|.*;\s*)toURL\s*\=\s*([^;]*).*$)|^.*$/, "$1");
if ( toURL.lastIndexOf('http', 0) === 0 ) {
window.location.replace(toURL);
}
});
})();
# 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
# https://github.com/uBlockOrigin/uAssets/issues/106
openload.co.js application/javascript
(function() {
Object.defineProperties(window, {
adblock2: { value: false },
OlPopup: { value: null },
preserve: {
get: function() { return true; },
set: function() {}
},
turnoff: { value: true }
});
})();
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) ) {
return sto.apply(this, arguments);
}
}.bind(window);
var signatures = [
['blockadblock'],
['babasbm'],
[/getItem\('babn'\)/],
['getElementById','String.fromCharCode','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789','charAt','DOMContentLoaded','AdBlock','addEventListener','doScroll','fromCharCode','<<2|r>>4','sessionStorage','clientWidth','localStorage','Math','random']
];
var check = function(s) {
var tokens, match, j, token, pos;
for ( var i = 0; i < signatures.length; i++ ) {
tokens = signatures[i];
match = 0;
for ( j = 0, pos = 0; j < tokens.length; j++ ) {
token = tokens[j];
pos = token instanceof RegExp ? s.search(token) : s.indexOf(token);
if ( pos !== -1 ) { match += 1; }
}
if ( (match / tokens.length) >= 0.8 ) { return true; }
}
return false;
};
var realEval = window.eval;
window.eval = function(a) {
if ( !check(a) ) {
return realEval(a);
}
var el = document.body;
if ( el ) {
el.style.removeProperty('visibility');
}
el = document.getElementById('babasbmsgx');
if ( el ) {
el.parentNode.removeChild(el);
}
}.bind(window);
})();
kissanime-defuser.js application/javascript
(function() {
Object.defineProperties(window, {
DoDetect1: { value: function() {} },
DoDetect2: { value: function() {} },
isBlockAds2: { value: false }
});
window.onerror = function(msg, src, line, col, error) {
if ( /DoDetect\d?|isBlockAds\d/.test(msg) ) { return true; }
};
})();
phenv-defuser.js application/javascript
(function() {
var phenv = window.PHENV;
var noopfn = function() {
;
};
var trapOnDetection = function() {
if ( phenv.onDetection === undefined ) {
Object.defineProperty(phenv, 'onDetection', {
get: function() {
return noopfn;
},
set: noopfn
});
return;
}
phenv.onDetection = noopfn;
};
if ( phenv === undefined ) {
Object.defineProperty(window, 'PHENV', {
get: function() {
return phenv;
},
set: function(a) {
phenv = a;
trapOnDetection();
}
});
return;
}
trapOnDetection();
})();
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 = {};
var methods = [
'callClick', 'callLoadMore', 'callRecs', 'callUserZapping',
'callWhatIs', 'cancelRecommendation', 'cancelRecs', 'closeCard',
'closeModal', 'closeTbx', 'errorInjectionHandler', 'getCountOfRecs',
'getStat', 'imageError', 'manualVideoClicked', 'onOdbReturn',
'onVideoClick', 'pagerLoad', 'recClicked', 'refreshSpecificWidget',
'refreshWidget', 'reloadWidget', 'researchWidget', 'returnedError',
'returnedHtmlData', 'returnedIrdData', 'returnedJsonData', 'scrollLoad',
'showDescription', 'showRecInIframe', 'userZappingMessage', 'zappingFormAction'
];
obr.extern = {
video: {
getVideoRecs: noopfn,
videoClicked: noopfn
}
};
methods.forEach(function(a) {
obr.extern[a] = noopfn;
});
window.OBR = window.OBR || obr;
})();
# https://github.com/gorhill/uBlock/issues/1228
window.name-defuser application/javascript
if ( window === window.top ) {
window.name = '';
}
# https://github.com/gorhill/uBlock/issues/897#issuecomment-180871042
doubleclick.net/instream/ad_status.js application/javascript
window.google_ad_status = 1;
# https://github.com/gorhill/uBlock/issues/1384
addthis.com/addthis_widget.js application/javascript
(function() {
var noopfn = function() {
;
};
window.addthis = {
addEventListener: noopfn,
button: noopfn,
init: noopfn,
layers: noopfn,
ready: noopfn,
sharecounters: {
getShareCounts: noopfn
},
toolbox: noopfn,
update: noopfn
};
})();
# https://github.com/gorhill/uBlock/issues/1059#issuecomment-185434177
# Works for stern.de, will see if reusable.
bcplayer-defuser.js application/javascript
(function() {
var bcPlayer;
Object.defineProperty(window, 'bcPlayer', {
get: function() {
return bcPlayer;
},
set: function(a) {
bcPlayer = a;
a.ads = function(a) {
;
};
}
});
})();
# Completely experimental: load Disqus on demand only. Purpose is to avoid
# connecting to Disqus' servers, unless the user explicitly asks for the
# comments to be loaded.
# Works with following filters:
# ||disqus.com/forums/*/embed.js$script,redirect=disqus.com/forums/*/embed.js
# ||disqus.com/embed.js$script,redirect=disqus.com/embed.js
# ||disqus.com/count.js$script
# @@||disqus.com/embed.js?_=1457540*$script
# If you want a site you regularly visit to always have the comment loaded,
# just use an exception static filter. Example for wired.com:
# @@||wired.disqus.com/embed.js
# Sometimes a site will use this one script:
disqus.com/forums/*/embed.js application/javascript
(function() {
var ee = document.getElementsByTagName('script');
var i = ee.length, src;
while ( i-- ) {
src = ee[i].src || '';
if ( src === '' ) {
continue;
}
if ( src.lastIndexOf('disqus.com/embed.js') === (src.length - 19) ) {
return;
}
}
var e = document.createElement('script');
e.async = true;
e.src = '//' + window.disqus_shortname + '.disqus.com/embed.js';
document.body.appendChild(e);
})();
# Most use this one though:
disqus.com/embed.js application/javascript
(function() {
var p = document.getElementById(window.disqus_container_id || 'disqus_thread');
if ( p === null ) {
return;
}
var b = document.createElement('button');
b.textContent = 'Disqus blocked by uBlock Origin: click to unblock';
b.type = 'button';
p.appendChild(b);
var loadDisqus = function(ev) {
b.removeEventListener('click', loadDisqus);
p.removeChild(b);
var script = document.createElement('script');
script.async = true;
var t = Date.now().toString();
script.src = '//' + window.disqus_shortname + '.disqus.com/embed.js?_=1457540' + t.slice(-6);
document.body.appendChild(script);
ev.preventDefault();
ev.stopPropagation();
};
b.addEventListener('click', loadDisqus);
})();
# https://github.com/gorhill/uBlock/issues/1461
ytad-defuser.js application/javascript
(function() {
var bind = Function.prototype.bind;
Function.prototype.bind = function() {
'native code';
var bound = bind.apply(this, arguments);
bound.xpizqvtnrfkcjixkmdnu = this.toString();
return bound;
};
var sto = window.setTimeout;
window.setTimeout = function(a, b) {
if ( b === 15000 && b < 20000 && 'xpizqvtnrfkcjixkmdnu' in a ) {
console.log('uBO>', a.xpizqvtnrfkcjixkmdnu);
}
return sto(a, b);
};
})();
amazon-adsystem.com/aax2/amzn_ads.js application/javascript
(function() {
if ( amznads ) {
return;
}
var w = window;
var noopfn = function() {
;
}.bind();
var amznads = {
appendScriptTag: noopfn,
appendTargetingToAdServerUrl: noopfn,
appendTargetingToQueryString: noopfn,
clearTargetingFromGPTAsync: noopfn,
doAllTasks: noopfn,
doGetAdsAsync: noopfn,
doTask: noopfn,
detectIframeAndGetURL: noopfn,
getAds: noopfn,
getAdsAsync: noopfn,
getAdForSlot: noopfn,
getAdsCallback: noopfn,
getDisplayAds: noopfn,
getDisplayAdsAsync: noopfn,
getDisplayAdsCallback: noopfn,
getKeys: noopfn,
getReferrerURL: noopfn,
getScriptSource: noopfn,
getTargeting: noopfn,
getTokens: noopfn,
getValidMilliseconds: noopfn,
getVideoAds: noopfn,
getVideoAdsAsync: noopfn,
getVideoAdsCallback: noopfn,
handleCallBack: noopfn,
hasAds: noopfn,
renderAd: noopfn,
saveAds: noopfn,
setTargeting: noopfn,
setTargetingForGPTAsync: noopfn,
setTargetingForGPTSync: noopfn,
tryGetAdsAsync: noopfn,
updateAds: noopfn
};
w.amznads = amznads;
w.amzn_ads = w.amzn_ads || noopfn;
w.aax_write = w.aax_write || noopfn;
w.aax_render_ad = w.aax_render_ad || noopfn;
})();
# https://adblockplus.org/forum/viewtopic.php?f=2&t=25216#p149739
sas-defuser.js application/javascript
(function() {
var noopfn = function() {
;
};
var ads = {
display: noopfn,
refresh: noopfn
};
Object.defineProperty(window, 'Ads', {
get: function() {
return ads;
},
set: noopfn
});
})();
# https://adblockplus.org/forum/viewtopic.php?f=2&t=25216#p149739
figaro-defuser.js application/javascript
(function() {
Object.defineProperty(window, 'adisplaynormal', {
get: function() {
return true;
},
set: function() {}
});
})();
# https://adblockplus.org/forum/viewtopic.php?f=2&t=25216#p149739
lemonde-defuser.js application/javascript
(function() {
localStorage.setItem('lmd_me_displayed',JSON.stringify({data:true,timeout:Date.now()+31536000000}));
})();
# Good case for https://github.com/gorhill/uBlock/issues/781
rtlfr-defuser.js application/javascript
(function() {
window.addEventListener('load', function() {
document.body.style.setProperty('overflow', 'auto');
});
})();
# Experimental: Generic nuisance overlay buster.
# if this works well and proves to be useful, this may end up as a stock tool
# in uBO's popup panel.
overlay-buster.js application/javascript
(function() {
if ( window !== window.top ) {
return;
}
var tstart;
var ttl = 30000;
var delay = 0;
var delayStep = 50;
var buster = function(mutations) {
var docEl = document.documentElement,
bodyEl = document.body,
vw = Math.min(docEl.clientWidth, window.innerWidth),
vh = Math.min(docEl.clientHeight, window.innerHeight),
tol = Math.min(vw, vh) * 0.05,
el = document.elementFromPoint(vw/2, vh/2),
style, rect;
for (;;) {
if ( el === null || el.parentNode === null || el === bodyEl ) {
break;
}
style = window.getComputedStyle(el);
if ( parseInt(style.zIndex, 10) >= 1000 || style.position === 'fixed' ) {
rect = el.getBoundingClientRect();
if ( rect.left <= tol && rect.top <= tol && (vw - rect.right) <= tol && (vh - rect.bottom) < tol ) {
el.parentNode.removeChild(el);
tstart = Date.now();
el = document.elementFromPoint(vw/2, vh/2);
bodyEl.style.setProperty('overflow', 'auto', 'important');
docEl.style.setProperty('overflow', 'auto', 'important');
continue;
}
}
el = el.parentNode;
}
if ( (Date.now() - tstart) < ttl ) {
delay = Math.min(delay + delayStep, 1000);
setTimeout(buster, delay);
}
};
var domReady = function(ev) {
if ( ev ) {
document.removeEventListener(ev.type, domReady);
}
tstart = Date.now();
setTimeout(buster, delay);
};
if ( document.readyState === 'loading' ) {
document.addEventListener('DOMContentLoaded', domReady);
} else {
domReady();
}
})();
# http://www.wilderssecurity.com/threads/ublock-a-lean-and-fast-blocker.365273/page-77
imore-sanitizer.js application/javascript
(function() {
if ( window.mbn_zones ) {
delete window.mbn_zones;
return;
}
Object.defineProperty(window, 'mbn_zones', {
value: undefined
});
})();
# https://forums.lanik.us/viewtopic.php?f=62&t=25212
# https://github.com/uBlockOrigin/uAssets/issues/3
impspcabe-defuser.js application/javascript
(function(){
window._impspcabe = false;
window._impspcabe_alpha = false;
window._impspcabe_beta = false;
window._impspcabe_path = 'about:blank';
})();
# https://github.com/uBlockOrigin/uAssets/issues/8
alert-buster.js application/javascript
(function() {
window.alert = function(a) {
console.info(a);
};
})();
# https://github.com/uBlockOrigin/uAssets/issues/36
nr-unwrapper.js application/javascript
(function(){
var wrapped = ' \
EventTarget.prototype.addEventListener \
EventTarget.prototype.removeEventListener \
XMLHttpRequest.prototype.open \
XMLHttpRequest.prototype.send \
addEventListener \
clearTimeout \
removeEventListener \
requestAnimationFrame \
setInterval \
setTimeout \
'.split(/\s+/);
var path, o, p, fn;
for ( var i = 0; i < wrapped.length; i++ ) {
path = wrapped[i].split('.');
p = '';
for ( var j = 0; j < path.length; j++ ) {
if ( path[j] === '' ) {
continue;
}
o = p !== '' ? o = o[p] : window;
p = path[j];
}
if ( p === '' ) {
continue;
}
fn = o[p];
if (
typeof fn === 'function' &&
fn.toString().indexOf('nrWrapper') !== -1 &&
typeof fn['nr@original'] === 'function'
) {
o[p] = fn['nr@original'];
}
}
})();
# https://github.com/uBlockOrigin/uAssets/issues/58
gpt-defuser.js application/javascript
(function() {
var noopfn = function() {
;
};
var props = '_resetGPT resetGPT resetAndLoadGPTRecovery _resetAndLoadGPTRecovery setupGPT setupGPTuo';
props = props.split(/\s+/);
while ( props.length ) {
var prop = props.pop();
if ( typeof window[prop] === 'function' ) {
window[prop] = noopfn;
} else {
Object.defineProperty(window, prop, {
get: function() { return noopfn; },
set: noopfn
});
}
}
})();
# https://github.com/uBlockOrigin/uAssets/issues/66
folha-de-sp.js application/javascript
(function() {
if ( window.folha_ads !== undefined ) {
window.folha_ads = true;
return
}
Object.defineProperty(window, 'folha_ads', {
get: function() {
return true;
},
set: function() {
;
}
});
})();
# Prevent web pages from using eval(), and report attempts in console.
noeval.js application/javascript
(function() {
window.eval = function(s) {
console.log('Document tried to eval... \n' + s);
}.bind(window);
})();
silent-noeval.js application/javascript
(function() {
window.eval = function(s) {
;
}.bind(window);
})();
noeval-if.js application/javascript
(function() {
var needle = '{{1}}';
if ( needle === '' || needle === '{{1}}' ) {
needle = '.?';
} else if ( needle.slice(0,1) === '/' && needle.slice(-1) === '/' ) {
needle = needle.slice(1,-1);
} else {
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle = new RegExp(needle);
realNoEval = window.eval;
window.eval = function(a) {
if ( !needle.test(a.toString()) ) {
realNoEval.call(window, a);
}
}.bind(window);
})();
# Prevent web pages from using RTCPeerConnection(), and report attempts in console.
nowebrtc.js application/javascript
(function() {
var rtcName = window.RTCPeerConnection ? 'RTCPeerConnection' : (
window.webkitRTCPeerConnection ? 'webkitRTCPeerConnection' : ''
);
if ( rtcName === '' ) { return; }
var log = console.log.bind(console);
var pc = function(cfg) {
log('Document tried to create an RTCPeerConnection: %o', cfg);
};
var noop = function() {
;
};
pc.prototype = {
close: noop,
createDataChannel: noop,
createOffer: noop,
setRemoteDescription: noop
};
var z = window[rtcName];
window[rtcName] = pc.bind(window);
if ( z.prototype ) {
z.prototype.createDataChannel = function(a, b) {
return {
close: function() {},
send: function() {}
};
}.bind(null);
}
})();
# https://adblockplus.org/forum/viewtopic.php?f=10&t=46010
indiatoday.intoday.in.js application/javascript
(function() {
Object.defineProperties(window, {
adBlock: { value: false },
checkAds: { value: function() {} }
});
})();
# Prevent web pages from using eval(), and report attempts in console.
videowood.tv.js application/javascript
(function() {
var realEval = window.eval;
window.eval = function(s) {
var r = realEval(s);
if ( window.config && window.config.adb_remind ) {
window.config.adb_remind = false;
}
return r;
}.bind(window);
})();
# https://github.com/gorhill/uBlock/issues/1340#issuecomment-230495317
__$dc-defuser.js application/javascript
(function() {
if ( Math.mt_random === undefined ) {
Object.defineProperty(Math, 'mt_random', {
value: function() { throw new TypeError(); }.bind()
});
} else {
Math.mt_random = function() { throw new TypeError(); }.bind();
}
})();
# https://forums.lanik.us/viewtopic.php?f=62&t=31285
indiatimes.com.js application/javascript
(function() {
var dael = document.addEventListener.bind(document),
evts = ['error', 'mousemove', 'scroll'];
document.addEventListener = function(a, b, c) {
if ( evts.indexOf(a) !== -1 ) {
var s = b.toString();
if ( /^\s*function\s+(\(?_0x[0-9a-z]+\)?|detected)(?:.|\n)*?\1/.test(s) ) {
return;
}
}
return dael(a, b, c);
}.bind();
})();
# https://forums.lanik.us/viewtopic.php?f=23&t=31545
adf.ly.js application/javascript
(function() {
var realEval = window.eval;
var noopfn = function(){
;
}.bind();
window.eval = function(s) {
var r = realEval(s);
if ( typeof window.abgo === 'function' ) {
window.abgo = noopfn;
}
return r;
}.bind(window);
})();
# https://m.reddit.com/r/firefox/comments/4ucrvy/can_ublock_origin_disable_javascript_for_a/
hindustantimes.com.js application/javascript
window.canRun = true;
# https://m.reddit.com/r/firefox/comments/4ucrvy/can_ublock_origin_disable_javascript_for_a/
bhaskar.com.js application/javascript
window.canABP = true;
# https://adblockplus.org/forum/viewtopic.php?f=1&t=47754
thesimsresource.com.js application/javascript
Object.defineProperties(window, {
gadsize: { value: 1 },
iHaveLoadedAds: { value: true },
OX: { value: true }
});
# https://github.com/uBlockOrigin/uAssets/issues/88
golem.de.js application/javascript
(function() {
var rael = window.addEventListener;
window.addEventListener = function(a, b, c) {
rael(a, b, c);
if ( /^\s*function\s*\(\)\s*{\s*window\.clearTimeout\(r\)\s*\}\s*$/.test(b.toString()) ) {
b();
}
}.bind(window);
})();
# https://www.reddit.com/r/firefox/comments/4wpd23/popads_just_announced_that_they_have_a_new_method/
popads.net.js application/javascript
(function() {
var magic = String.fromCharCode(Date.now() % 26 + 97) +
Math.floor(Math.random() * 982451653 + 982451653).toString(36),
oe = window.onerror;
window.onerror = function(msg, src, line, col, error) {
if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) { return true; }
if ( oe instanceof Function ) {
return oe(msg, src, line, col, error);
}
}.bind();
var throwMagic = function() { throw magic; };
delete window.PopAds;
delete window.popns;
Object.defineProperties(window, {
PopAds: { set: throwMagic },
popns: { set: throwMagic }
});
})();
# https://github.com/uBlockOrigin/uAssets/issues/503
popads-dummy.js application/javascript
(function() {
delete window.PopAds;
delete window.popns;
Object.defineProperties(window, {
PopAds: { value: {} },
popns: { value: {} }
});
})();
# https://forums.lanik.us/viewtopic.php?f=62&t=32070
xvideos.com.js application/javascript
(function() {
var z = function(ads) {
var banners = ads && ads.banners;
if ( !banners ) { return; }
var banner, div;
while ( banners.length !== 0 ) {
banner = banners[0];
if ( !banner ) { continue; }
while ( (div = document.getElementById(banner.div_id)) !== null ) {
div.parentNode.removeChild(div);
}
banners.shift();
}
};
window.addEventListener('DOMContentLoaded', function() {
var xv = window.xv;
z(xv && xv.conf && xv.conf.ads);
});
var dfn,
dfntrap = function(a, b, c) {
if ( a !== 'config/ads' ) { dfn(a, b, c); return; }
var ads = b;
while ( typeof ads === 'function' ) { ads = ads(); }
z(ads);
b = function() { return function() { return JSON.parse(JSON.stringify(ads)); }; };
dfn(a, ads, c);
};
Object.defineProperty(window, 'define', {
get: function() { return dfn ? dfntrap : undefined; },
set: function(a) { dfn = a; }
});
})();
# https://forums.lanik.us/viewtopic.php?f=62&t=31322&start=30
ndtv.com.js application/javascript
Object.defineProperty(window, '___p_p', { value: 1 });
# https://forums.lanik.us/viewtopic.php?f=64&t=32278
# https://www.reddit.com/r/chrome/comments/58eix6/ublock_origin_not_working_on_certain_sites/
upmanager-defuser.js application/javascript
(function() {
var onerror = window.onerror;
window.onerror = function(msg, source, lineno, colno, error) {
if ( typeof msg === 'string' && msg.indexOf('upManager') !== -1 ) {
return true;
}
if ( onerror instanceof Function ) {
onerror.call(window, msg, source, lineno, colno, error);
}
};
Object.defineProperty(window, 'upManager', { value: function() {} });
})();
# https://github.com/uBlockOrigin/uAssets/issues/108
wetteronline.de.js application/javascript
(function() {
var nopefn = function() { throw new TypeError('Nope'); };
Object.defineProperty(window, 'xq5UgyIZx', {
get: nopefn,
set: nopefn
});
window.WO = {};
Object.defineProperty(window.WO, 'doAbCheck', {
value: function() {}
});
})();
# https://github.com/uBlockOrigin/uAssets/issues/108
trafictube.ro.js application/javascript
(function() {
var z = window.setInterval.bind(window),
re = /\(new\s+\w\)\.start\(\)/;
window.setInterval = function(a, b) {
if ( re.test(a.toString()) ) {
return 0;
}
return z(a, b);
}.bind(window);
})();
# https://github.com/uBlockOrigin/uAssets/issues/110
smartadserver.com.js application/javascript
Object.defineProperties(window, {
SmartAdObject: { value: function(){} },
SmartAdServerAjax: { value: function(){} },
smartAd: { value: { LoadAds: function() {}, Register: function() {} } }
});
# http://www.linuxtricks.fr/news/10-logiciels-libres/169-contourner-les-anti-bloqueurs-de-pub-la-revanche/
lesechos.fr.js application/javascript
Object.defineProperty(window, 'checkAdBlock', {
value: function(){}
});
# https://github.com/uBlockOrigin/uAssets/issues/141
criteo.net.js application/javascript
(function() {
var noopfn = function() {};
var criteo = {
DisplayAd: noopfn
};
if ( window.hasOwnProperty('Criteo') ) {
window.Criteo = criteo;
} else {
Object.defineProperty(window, 'Criteo', { value: criteo });
}
})();
# https://github.com/uBlockOrigin/uAssets/issues/38
# https://github.com/uBlockOrigin/uAssets/issues/150
r3z-defuser.js application/javascript
window._r3z = {};
Object.defineProperties(window._r3z, {
jq: { value: undefined },
pub: { value: {} }
});
# https://forums.lanik.us/viewtopic.php?f=103&t=31558
ideal.es.js application/javascript
Object.defineProperty(window, 'is_block_adb_enabled', { value: false });
# https://github.com/uBlockOrigin/uAssets/issues/125
d3pkae9owd2lcf.cloudfront.net/mb105.js application/javascript
(function() {
var noopfn = function(){};
window.pbjs = { libLoaded: true };
var mb = window.MonkeyBroker || {
addAttribute: noopfn,
addSlot: function(a) {
this.slots[a.slot] = {};
},
defineSlot: noopfn,
fillSlot: noopfn,
go: noopfn,
inventoryConditionalPlacement: noopfn,
registerSizeCallback: noopfn,
registerSlotCallback: noopfn,
slots: {},
version: ''
};
mb.regSlotsMap = mb.slots;
window.MonkeyBroker = mb;
})();
# https://www.reddit.com/r/uBlockOrigin/comments/55pu1e/lastfm_super_aggressive_adblock_warning_message/
last.fm.js application/javascript
(function() {
var st = window.setTimeout;
var z = function(a, b) {
if ( b === 2000 && a.name.indexOf('bound') !== -1 ) {
return;
}
return st(a, b);
}.bind(window);
Object.defineProperty(window, 'setTimeout', { value: z });
})();
# https://news.ycombinator.com/item?id=12677179
livescience.com.js application/javascript
Object.defineProperty(window, 'tmnramp', { value: {} });
# https://twitter.com/Scarbir/status/785551814460571648
static.chartbeat.com/chartbeat.js application/javascript
(function() {
var noopfn = function(){};
window.pSUPERFLY = {
activity: noopfn,
virtualPage: noopfn
};
})();
# https://discourse.mozilla-community.org/t/support-ublock-origin/6746/214
lachainemeteo.com.js application/javascript
Object.defineProperty(window, 'pliga', { value: { push: function(){} } });
# https://github.com/gorhill/uBlock/issues/2132
abort-on-property-write.js application/javascript
(function() {
var magic = String.fromCharCode(Date.now() % 26 + 97) +
Math.floor(Math.random() * 982451653 + 982451653).toString(36);
var prop = '{{1}}',
owner = window,
pos;
for (;;) {
pos = prop.indexOf('.');
if ( pos === -1 ) { break; }
owner = owner[prop.slice(0, pos)];
if ( owner instanceof Object === false ) { return; }
prop = prop.slice(pos + 1);
}
delete owner[prop];
Object.defineProperty(owner, prop, {
set: function() {
throw new ReferenceError(magic);
}
});
var oe = window.onerror;
window.onerror = function(msg, src, line, col, error) {
if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) {
return true;
}
if ( oe instanceof Function ) {
return oe(msg, src, line, col, error);
}
}.bind();
})();
abort-on-property-read.js application/javascript
(function() {
var magic = String.fromCharCode(Date.now() % 26 + 97) +
Math.floor(Math.random() * 982451653 + 982451653).toString(36);
var abort = function() {
throw new ReferenceError(magic);
};
var chain = '{{1}}', owner = window, pos, desc;
var makeProxy = function(owner, chain) {
pos = chain.indexOf('.');
if ( pos === -1 ) {
desc = Object.getOwnPropertyDescriptor(owner, chain);
if ( !desc || desc.get !== abort ) {
Object.defineProperty(owner, chain, { get: abort, set: function(){} });
}
return;
}
var prop = chain.slice(0, pos),
v = owner[prop];
chain = chain.slice(pos + 1);
if ( v !== undefined ) {
makeProxy(v, chain);
return;
}
desc = Object.getOwnPropertyDescriptor(owner, prop);
if ( desc && desc.set && desc.set.hasOwnProperty(magic) ) {
return;
}
var setter = function(a) {
v = a;
if ( a instanceof Object ) {
makeProxy(a, chain);
}
};
setter[magic] = undefined;
Object.defineProperty(owner, prop, {
get: function() { return v; },
set: setter
});
};
makeProxy(owner, chain);
var oe = window.onerror;
window.onerror = function(msg, src, line, col, error) {
if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) {
return true;
}
if ( oe instanceof Function ) {
return oe(msg, src, line, col, error);
}
}.bind();
})();
setTimeout-defuser.js application/javascript
(function() {
var z = window.setTimeout,
needle = '{{1}}',
delay = parseInt('{{2}}', 10);
if ( needle === '' || needle === '{{1}}' ) {
needle = '.?';
} else if ( needle.slice(0,1) === '/' && needle.slice(-1) === '/' ) {
needle = needle.slice(1,-1);
} else {
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle = new RegExp(needle);
window.setTimeout = function(a, b) {
if ( (isNaN(delay) || b == delay) && needle.test(a.toString()) ) {
return z(function(){}, b);
}
return z.apply(this, arguments);
}.bind(window);
})();
setTimeout-logger.js application/javascript
(function() {
var z = window.setTimeout,
log = console.log.bind(console);
window.setTimeout = function(a, b) {
log('uBO: setTimeout("%s", %s)', a.toString(), b);
return z.apply(this, arguments);
}.bind(window);
})();
setInterval-defuser.js application/javascript
(function() {
var w = window,
z = w.setInterval,
needle = '{{1}}',
delay = parseInt('{{2}}', 10);
if ( needle === '' || needle === '{{1}}' ) {
needle = '.?';
} else if ( needle.slice(0,1) === '/' && needle.slice(-1) === '/' ) {
needle = needle.slice(1,-1);
} else {
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle = new RegExp(needle);
w.setInterval = function(a, b) {
if ( (isNaN(delay) || b == delay) && needle.test(a.toString()) ) {
return z(function(){}, b);
}
return z.apply(this, arguments);
}.bind(w);
w.setInterval.toString = function() { return z.toString(); };
})();
setInterval-logger.js application/javascript
(function() {
var z = window.setInterval,
log = console.log.bind(console);
window.setInterval = function(a, b) {
log('uBO: setInterval("%s", %s)', a.toString(), b);
return z.apply(this, arguments);
}.bind(window);
})();
sharedWorker-defuser.js application/javascript
(function() {
if ( window.SharedWorker instanceof Function === false ) { return; }
var needle = '{{1}}';
if ( needle === '' || needle === '{{1}}' ) { needle = '.?'; }
else if ( /^\/.+\/$/.test(needle) ) { needle = needle.slice(1,-1); }
else { needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }
needle = new RegExp(needle);
var RealSharedWorker = window.SharedWorker;
var WrappedSharedWorker = function(a, b) {
if ( this instanceof WrappedSharedWorker === false ) { return RealSharedWorker(); }
if ( needle.test(a) ) {
return new RealSharedWorker(window.URL.createObjectURL(new Blob([';'], {type:'text/javascript'})));
}
return new RealSharedWorker(a, b);
};
WrappedSharedWorker.prototype = RealSharedWorker.prototype;
window.SharedWorker = WrappedSharedWorker.bind(window);
})();
sidereel.com.js application/javascript
(function() {
window.localStorage.setItem('__trex', Date.now() + 86400000);
})();
# Ability to inject CSP in document, to further restrict what web pages can do.
# Reference: https://www.w3.org/TR/CSP3/
csp.js application/javascript
(function() {
var doc = document;
if ( doc.head === null ) { return; }
var meta = doc.createElement('meta');
meta.setAttribute('http-equiv', 'Content-Security-Policy');
meta.setAttribute('content', '{{1}}');
doc.head.appendChild(meta);
})();
# https://github.com/uBlockOrigin/uAssets/issues/513
entrepreneur.com.js application/javascript
window.analyticsEvent = function(){};
# https://github.com/uBlockOrigin/uAssets/issues/521
addEventListener-logger.js application/javascript
(function() {
var c = console, l = c.log;
var z = self.EventTarget.prototype.addEventListener;
self.EventTarget.prototype.addEventListener = function(a, b) {
l.call(c, 'addEventListener("%s", %s)', a, b.toString());
return z.apply(this, arguments);
};
})();
# https://github.com/uBlockOrigin/uAssets/issues/521
addEventListener-defuser.js application/javascript
(function() {
var needle1 = '{{1}}',
needle2 = '{{2}}',
z = self.EventTarget.prototype.addEventListener;
if ( needle1 === '' || needle1 === '{{1}}' ) {
needle1 = '.?';
} else if ( /^\/.+\/$/.test(needle1) ) {
needle1 = needle1.slice(1,-1);
} else {
needle1 = needle1.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle1 = new RegExp(needle1);
if ( needle2 === '' || needle2 === '{{2}}' ) {
needle2 = '.?';
} else if ( /^\/.+\/$/.test(needle2) ) {
needle2 = needle2.slice(1,-1);
} else {
needle2 = needle2.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle2 = new RegExp(needle2);
self.EventTarget.prototype.addEventListener = function(a, b) {
if ( needle1.test(a.toString()) && needle2.test(b.toString()) ) {
return;
}
return z.apply(this, arguments);
};
})();
# https://github.com/uBlockOrigin/uAssets/issues/531
# Scriptlet below borrowed from:
# https://github.com/AdguardTeam/AdguardFilters/blob/master/RussianFilter/sections/antiadblock.txt
palacesquare.rambler.ru-defuser.js application/javascript
(function() {
var w = window,
pr = w.Promise,
tostr = Function.prototype.toString;
w.Promise = function(executor) {
if ( tostr.call(executor).indexOf('getRandomSelector') !== -1 ) {
throw new Error();
} else {
return new pr(executor);
}
}.bind();
Object.getOwnPropertyNames(pr).forEach(function(propName) {
Object.defineProperty(w.Promise, propName, Object.getOwnPropertyDescriptor(pr, propName));
});
pr.prototype.constructor = w.Promise;
})();
# https://www.reddit.com/r/uBlockOrigin/comments/6nrayv/new_to_using_ublock_origin_its_breaking_videos_on/
# https://github.com/gorhill/uBlock/issues/2835
gamespot.com.js application/javascript
(function() {
if ( typeof window.pf_notify === 'function' ) {
window.pf_notify(false);
}
})();
# https://github.com/uBlockOrigin/uAssets/issues/618
abort-current-inline-script.js application/javascript
(function() {
var target = '{{1}}';
if ( target === '' || target === '{{1}}' ) { return; }
var needle = '{{2}}', reText = '.?';
if ( needle !== '' && needle !== '{{2}}' ) {
reText = /^\/.+\/$/.test(needle)
? needle.slice(1,-1)
: needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
var re = new RegExp(reText);
var chain = target.split('.');
var owner = window, prop;
for (;;) {
prop = chain.shift();
if ( chain.length === 0 ) { break; }
owner = owner[prop];
if ( owner instanceof Object === false ) { return; }
}
var desc = Object.getOwnPropertyDescriptor(owner, prop);
if ( desc && desc.get !== undefined ) { return; }
var magic = String.fromCharCode(Date.now() % 26 + 97) +
Math.floor(Math.random() * 982451653 + 982451653).toString(36);
var value = owner[prop];
var validate = function() {
var e = document.currentScript;
if ( e instanceof HTMLScriptElement && e.src === '' && re.test(e.textContent) ) {
throw new ReferenceError(magic);
}
};
Object.defineProperty(owner, prop, {
get: function() {
validate();
return value;
},
set: function(a) {
validate();
value = a;
}
});
var oe = window.onerror;
window.onerror = function(msg) {
if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) {
return true;
}
if ( oe instanceof Function ) {
return oe.apply(this, arguments);
}
}.bind();
})();
# https://github.com/uBlockOrigin/uAssets/commit/a6c77af4afb45800d4fd7c268a2a5eab5a64daf3#commitcomment-24611606
window.open-defuser.js application/javascript
(function() {
var wo = window.open,
target = '{{1}}',
needle = '{{2}}';
if ( target === '' || target === '{{1}}' ) {
target = false;
} else {
target = !(+target);
}
if ( needle === '' || needle === '{{2}}' ) {
needle = '.?';
} else if ( /^\/.+\/$/.test(needle) ) {
needle = needle.slice(1,-1);
} else {
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle = new RegExp(needle);
window.open = (function(a) {
if ( needle.test(a) === target ) {
return wo.apply(window, arguments);
}
}).bind(window);
})();
# https://github.com/reek/anti-adblock-killer/issues/3774#issuecomment-348536138
# https://github.com/uBlockOrigin/uAssets/issues/883
adfly-defuser.js application/javascript
(function() {
// Based on AdsBypasser
// License:
// https://github.com/adsbypasser/adsbypasser/blob/master/LICENSE
var isDigit = /^\d$/;
var handler = function(encodedURL) {
var var1 = "", var2 = "", i;
for (i = 0; i < encodedURL.length; i++) {
if (i % 2 === 0) {
var1 = var1 + encodedURL.charAt(i);
} else {
var2 = encodedURL.charAt(i) + var2;
}
}
var data = (var1 + var2).split("");
for (i = 0; i < data.length; i++) {
if (isDigit.test(data[i])) {
for (var ii = i + 1; ii < data.length; ii++) {
if (isDigit.test(data[ii])) {
var temp = parseInt(data[i],10) ^ parseInt(data[ii],10);
if (temp < 10) {
data[i] = temp.toString();
}
i = ii;
break;
}
}
}
}
data = data.join("");
var decodedURL = window.atob(data).slice(16, -16);
window.stop();
window.onbeforeunload = null;
window.location.href = decodedURL;
};
try {
var val;
var flag = true;
window.Object.defineProperty(window, "ysmm", {
configurable: false,
set: function(value) {
if (flag) {
flag = false;
try {
if (typeof value === "string") {
handler(value);
}
} catch (err) { }
}
val = value;
},
get: function() {
return val;
}
});
} catch (err) {
window.console.error("Failed to set up Adfly bypasser!");
}
})();
# https://github.com/uBlockOrigin/uAssets/issues/913
disable-newtab-links.js application/javascript
(function() {
document.addEventListener('click', function(ev) {
var target = ev.target;
while ( target !== null ) {
if ( target.localName === 'a' && target.hasAttribute('target') ) {
ev.stopPropagation();
ev.preventDefault();
break;
}
target = target.parentNode;
}
});
})();
set-constant.js application/javascript
(function() {
var cValue = '{{2}}';
if ( cValue === 'undefined' ) {
cValue = undefined;
} else if ( cValue === 'false' ) {
cValue = false;
} else if ( cValue === 'true' ) {
cValue = true;
} else if ( cValue === 'noopFunc' ) {
cValue = function(){};
} else if ( cValue === 'trueFunc' ) {
cValue = function(){ return true; };
} else if ( cValue === 'falseFunc' ) {
cValue = function(){ return false; };
} else if ( /^\d+$/.test(cValue) ) {
cValue = parseFloat(cValue);
if ( isNaN(cValue) ) { return; }
if ( Math.abs(cValue) > 0x7FFF ) { return; }
} else {
return;
}
var aborted = false;
var mustAbort = function(v) {
if ( aborted ) { return true; }
aborted = v !== undefined && cValue !== undefined && typeof v !== typeof cValue;
return aborted;
};
var chain = '{{1}}', owner = window;
var makeProxy = function(owner, chain) {
var desc;
var pos = chain.indexOf('.');
if ( pos === -1 ) {
if ( mustAbort(owner[chain]) ) { return; }
desc = Object.getOwnPropertyDescriptor(owner, chain);
if ( desc === undefined || desc.get === undefined ) {
Object.defineProperty(owner, chain, {
get: function() {
return cValue;
},
set: function(a) {
if ( mustAbort(a) ) {
cValue = a;
}
}
});
}
return;
}
var prop = chain.slice(0, pos),
v = owner[prop];
chain = chain.slice(pos + 1);
if ( v !== undefined ) {
makeProxy(v, chain);
return;
}
desc = Object.getOwnPropertyDescriptor(owner, prop);
if ( desc && desc.set ) { return; }
Object.defineProperty(owner, prop, {
get: function() {
return v;
},
set: function(a) {
v = a;
if ( a instanceof Object ) {
makeProxy(a, chain);
}
}
});
};
makeProxy(owner, chain);
})();
# Imported from:
# https://github.com/NanoAdblocker/NanoFilters/blob/1f3be7211bb0809c5106996f52564bf10c4525f7/NanoFiltersSource/NanoResources.txt#L82
#
# Speed up or down setTimeout, 3 optional arguments.
# funcMatcher - The payload matcher, a string literal or a JavaScript RegExp,
# defaults to match all.
# delayMatcher - The delay matcher, an integer, defaults to 1000.
# boostRatio - The delay multiplier when there is a match, 0.5 speeds up by
# 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up 20 times.
# Speed up and down both cap at 50 times.
nano-setTimeout-booster.js application/javascript
(function() {
// Based on uAssets
// License: https://github.com/uBlockOrigin/uAssets/blob/master/LICENSE
var z = window.setTimeout,
needle = '{{1}}',
delay = parseInt('{{2}}', 10),
boost = parseFloat('{{3}}');
if ( needle === '' || needle === '{{1}}' ) {
needle = '.?';
} else if ( needle.charAt(0) === '/' && needle.slice(-1) === '/' ) {
needle = needle.slice(1, -1);
} else {
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle = new RegExp(needle);
if ( isNaN(delay) || !isFinite(delay) ) {
delay = 1000;
}
if ( isNaN(boost) || !isFinite(boost) ) {
boost = 0.05;
}
if ( boost < 0.02 ) {
boost = 0.02;
}
if ( boost > 50 ) {
boost = 50;
}
window.setTimeout = function(a, b) {
if ( b === delay && needle.test(a.toString()) ) {
b *= boost;
}
return z.apply(this, arguments);
}.bind(window);
})();
# Imported from:
# https://github.com/NanoAdblocker/NanoFilters/blob/1f3be7211bb0809c5106996f52564bf10c4525f7/NanoFiltersSource/NanoResources.txt#L126
#
# Same as the last one except it is for setInterval instead of setTimeout.
nano-setInterval-booster.js application/javascript
(function() {
// Based on uAssets
// License: https://github.com/uBlockOrigin/uAssets/blob/master/LICENSE
var z = window.setInterval,
needle = '{{1}}',
delay = parseInt('{{2}}', 10),
boost = parseFloat('{{3}}');
if ( needle === '' || needle === '{{1}}' ) {
needle = '.?';
} else if ( needle.charAt(0) === '/' && needle.slice(-1) === '/' ) {
needle = needle.slice(1, -1);
} else {
needle = needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
needle = new RegExp(needle);
if ( isNaN(delay) || !isFinite(delay) ) {
delay = 1000;
}
if ( isNaN(boost) || !isFinite(boost) ) {
boost = 0.05;
}
if ( boost < 0.02 ) {
boost = 0.02;
}
if ( boost > 50 ) {
boost = 50;
}
window.setInterval = function(a, b) {
if ( b === delay && needle.test(a.toString()) ) {
b *= boost;
}
return z.apply(this, arguments);
}.bind(window);
})();
remove-attr.js application/javascript
(function() {
var attr = '{{1}}';
if ( attr === '' || attr === '{{1}}' ) { return; }
var attrs = attr.split(/\s*\|\s*/);
var selector = '{{2}}';
if ( selector === '' || selector === '{{2}}' ) {
selector = '[' + attrs.join('],[') + ']';
}
var rmattr = function(ev) {
if ( ev ) { window.removeEventListener(ev.type, rmattr, true); }
try {
var nodes = document.querySelectorAll(selector), i = nodes.length;
while ( i-- ) {
var node = nodes[i], j = attrs.length;
while ( j-- ) { node.removeAttribute(attrs[j]); }
}
} catch(ex) {
}
};
if ( document.readyState === 'loading' ) {
window.addEventListener('DOMContentLoaded', rmattr, true);
} else {
rmattr();
}
})();
damoh-defuser.js application/javascript
(function() {
var handled = new WeakSet();
var asyncTimer;
var cleanVideo = function() {
asyncTimer = undefined;
var v = document.querySelector('video');
if ( v === null ) { return; }
if ( handled.has(v) ) { return; }
handled.add(v);
v.pause();
v.controls = true;
var el = v.querySelector('meta[itemprop="contentURL"][content]');
if ( el === null ) { return; }
v.src = el.getAttribute('content');
el = v.querySelector('meta[itemprop="thumbnailUrl"][content]');
if ( el !== null ) { v.poster = el.getAttribute('content'); }
};
var cleanVideoAsync = function() {
if ( asyncTimer !== undefined ) { return; }
asyncTimer = window.requestAnimationFrame(cleanVideo);
};
var observer = new MutationObserver(cleanVideoAsync);
observer.observe(document.documentElement, { childList: true, subtree: true });
})();
twitch-videoad.js application/javascript
(function() {
if ( /(^|\.)twitch\.tv$/.test(document.location.hostname) === false ) { return; }
var ourMediaPlayer;
Object.defineProperty(window, 'MediaPlayer', {
set: function(newMediaPlayer) {
if ( ourMediaPlayer !== undefined ) { return; }
var oldLoad = newMediaPlayer.MediaPlayer.prototype.load;
newMediaPlayer.MediaPlayer.prototype.load = function(e) {
try {
if ( e.startsWith('https://usher.ttvnw.net/api/channel/hls/') ) {
var url = new URL(e);
url.searchParams.delete('baking_bread');
url.searchParams.delete('baking_brownies');
url.searchParams.delete('baking_brownies_timeout');
e = url.href;
}
} catch (err) {
//console.error('Failed to bypass Twitch livestream ad');
}
return oldLoad.call(this, e);
};
ourMediaPlayer = newMediaPlayer;
},
get: function() {
return ourMediaPlayer;
}
});
var realFetch = window.fetch;
window.fetch = function(input, init) {
if ( arguments.length >= 2 && typeof input === 'string' && input.includes('/access_token') ) {
var url = new URL(arguments[0]);
url.searchParams.delete('player_type');
arguments[0] = url.href;
}
return realFetch.apply(this, arguments);
};
})();
# https://github.com/uBlockOrigin/uAssets/issues/2912
fingerprint2.js application/javascript
(function() {
let fp2 = function(){};
fp2.prototype = {
get: function(cb) {
setTimeout(function() { cb('', []); }, 1);
}
};
window.Fingerprint2 = fp2;
})();
# https://github.com/NanoAdblocker/NanoFilters/issues/149
cookie-remover.js application/javascript
(function() {
let needle = '{{1}}',
reName = /./;
if ( /^\/.+\/$/.test(needle) ) {
reName = new RegExp(needle.slice(1,-1));
} else if ( needle !== '' && needle !== '{{1}}' ) {
reName = new RegExp(needle.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
}
let removeCookie = function() {
document.cookie.split(';').forEach(cookieStr => {
let pos = cookieStr.indexOf('=');
if ( pos === -1 ) { return; }
let cookieName = cookieStr.slice(0, pos).trim();
if ( !reName.test(cookieName) ) { return; }
let part1 = cookieName + '=';
let part2a = '; domain=' + document.location.hostname;
let part2b = '; domain=.' + document.location.hostname;
let part3 = '; path=/';
let part4 = '; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT';
document.cookie = part1 + part4;
document.cookie = part1 + part2a + part4;
document.cookie = part1 + part2b + part4;
document.cookie = part1 + part3 + part4;
document.cookie = part1 + part2a + part3 + part4;
document.cookie = part1 + part2b + part3 + part4;
});
};
removeCookie();
window.addEventListener('beforeunload', removeCookie);
})();
# https://www.reddit.com/r/firefox/comments/9dudod/the_mysterious_case_of_missing_urls_and_googles/e5kgkkh
ampproject.org/v0.js application/javascript
(function() {
let head = document.head;
if ( !head ) { return; }
let style = document.createElement('style');
style.textContent = [
'body {',
' animation: none !important;',
' overflow: unset !important;',
'}'
].join('\n');
head.appendChild(style);
})();