This repository has been archived on 2024-10-25. You can view files and clone it, but cannot push or open issues or pull requests.
AAK-Cont/dist/aak-cont-script-ubo.user.js

3506 lines
217 KiB
JavaScript
Raw Normal View History

2017-05-30 17:56:05 +02:00
// ==UserScript==
2017-05-30 17:53:30 +02:00
// @name AAK-Cont Userscript Core
2017-05-30 17:32:00 +02:00
// @description Helps you keep your Ad-Blocker active, when you visit a website and it asks you to disable.
2017-05-30 17:53:30 +02:00
// @author AAK-Cont contributors
// @version 1.006
2017-05-30 17:32:00 +02:00
// @encoding utf-8
2017-05-30 17:53:30 +02:00
// @license GNU GPL v3
2017-05-30 17:32:00 +02:00
// @icon https://gitlab.com/xuhaiyang1234/AAK-Cont/raw/master/images/icon.png
// @homepage https://xuhaiyang1234.gitlab.io/AAK-Cont/
// @supportURL https://gitlab.com/xuhaiyang1234/AAK-Cont/issues
2017-05-30 17:56:05 +02:00
// @updateURL https://gitlab.com/xuhaiyang1234/AAK-Cont/raw/master/dist/aak-cont-script-ubo.user.js
// @downloadURL https://gitlab.com/xuhaiyang1234/AAK-Cont/raw/master/dist/aak-cont-script-ubo.user.js
2017-05-30 17:32:00 +02:00
// @include http://*/*
// @include https://*/*
// @grant unsafeWindow
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant GM_registerMenuCommand
// @grant GM_deleteValue
// @grant GM_listValues
// @grant GM_getResourceText
// @grant GM_getResourceURL
// @grant GM_log
// @grant GM_openInTab
// @grant GM_setClipboard
// @grant GM_info
// @grant GM_getMetadata
// @run-at document-start
// @connect *
// ==/UserScript==
2017-05-30 17:53:30 +02:00
//Paste after Meta
2017-05-30 17:32:00 +02:00
/*jshint evil:true newcap:false*/
/*global unsafeWindow, GM_addStyle, GM_getValue, GM_setValue, GM_xmlhttpRequest, GM_registerMenuCommand, GM_deleteValue, GM_listValues, GM_getResourceText, GM_getResourceURL, GM_log, GM_openInTab, GM_setClipboard, GM_info, GM_getMetadata, $, document, console, location, setInterval, setTimeout, clearInterval*/
/*=====================================================
Thanks
======================================================
Donors: M. Howard, Shunjou, Charmine, Kierek93, G. Barnard, H. Young, Seinhor9, ImGlodar, Ivanosevitch, HomeDipo, R. Martin, DrFiZ, Tippy, B. Rohner, P. Kozica, M. Patel, W4rell, Tscheckoff, AdBlock Polska, AVENIR INTERNET, coolNAO, Ben, J. Park, C. Young, J. Bou, M. Cano, J. Jung, A. Sonino, J. Litten, M. Schrumpf, G. Pepe, A. Trufanov, R. Palmer, J. Rautiainen, S. Blystone, M. Silveira, K. MacArthur, M. Ivanov, A. Schmidt, A. Waage, F. Tismer, S. Ehnert, J. Corpus, J. Dluhos, Maklemenz, Strobelix, Modellpilot.EU, E. Benedetti, V. Venditti, Shakos, A. Eliason, A. Saloranta, S. Geiger, A. Otterloo, M. Coppen, S. Fischer, H. Becker, D. Ackerman, S. Pitsch, K. Pertcheck, S. Abel, K. O'Connor, B. Obrien, S. Vogler, S. Goebl, A. Biar, S. Scott, Bassmobile.org, S. Große, M. Peot, R. Chan Balam, L. Bond-Kennedy, R. Emond, A. Pavlov, W. Tracey, A. Sergey, R. López López, R. Reddy Kasireddy, A. Moujeer, M. Betz, M. Lefèvre, R. McCurdy, LR Geeks, M. Beauregard, CasperTech Ltd, M. Dudas, S. Scharf, S. Prokhorov, K. Papalias, J. Wojnowski, B. Curtis, D. Lawrence, D. He, N. Kelsall, Idogewallet, J. Spaulding, S. Lafon, Mat, H. Roberts, C. Hedlund, J. Hawkins, J. Andersen, M. Bjorksten, B. Wolfe III, T. Yocom, Š. Intas, S. Moenich, J. Chang, C. Munk, A. Naruta, Б. Михаил, J. Benz, F. Sloot, J. Creed, M. Gillam, C. Leicht, A. Gnana, S. Sundaram, A. Koller, M. Kotlar, S. Abel, T. Flanagan, M. Arduini, P. Stackhouse, B. Oliver, M. Johnson, R. Mannert, E. Siordia
Collaborators: InfinityCoding, Couchy, Dindog, Floxflob, U Bless, Watilin, @prdonahue, Hoshie, 3lf3nLi3d, Alexo, Crits, Noname120, Crt32, JixunMoe, Athorcis, Killerbadger, SMed79, Alexander255, Anonsubmitter, RaporLoLpro, Maynak00, Robotex, Vinctux, Blahx, MajkiIT, F4z, Angelsl, Mikhaelk, Marek, Hamsterbacke, Gorhill, Hacker999, xxcriticxx, Skr4tchGr3azyMonkiBallllllZzzz, Giwayume, MrSherlockHolmes, xDarkARG, Noahp78, Mapx-
Users: Thank you to all those who use Anti Adblock Killer, who report problems, who write the review, which add to their favorites, making donations, which support the project and help in its development or promote.
=======================================================
Mirrors
=======================================================
Github: http://tinyurl.com/mcra3dn
Greasyfork: http://tinyurl.com/pbbdnh6
Openuserjs: http://tinyurl.com/nnqje32
MonkeyGuts: http://tinyurl.com/ka5fcqm
Userscripts: http://tinyurl.com/q8xcejl
=======================================================
Documentation
=======================================================
Greasemonkey: http://tinyurl.com/yeefnj5
Scriptish: http://tinyurl.com/cnd9nkd
Tampermonkey: http://tinyurl.com/pdytfde
Violentmonkey: http://tinyurl.com/n34wn6j
NinjaKit: http://tinyurl.com/pkkm9ug
=======================================================
Script
======================================================*/
/*=============
| AAK/uBP API |
==============*/
var a = (function(win) {
"use strict";
var aak = {
/**
* Adds a script in the scope of the unsafeWindow. Useful to get things running on all script managers.
* @method addScript
* @param source {String|Function} The Javascript to inject on the page.
* @param [injectMode] {Number} undefined = autodetect, 1 for force eval, 2 for force drop element
* @param [body]{Boolean} true: Inject into body, false: Inject into head.
*/
addScript(source, injectMode, body) {
var txt = (typeof source === "function") ? this.intoString(source) : source.toString();
var forceEval = (txt) => {
this.win.eval("(" + txt + ")();");
};
var forceDrop = (txt) => {
var script = this.doc.createElement("script");
script.type = "text/javascript";
script.innerHTML = txt;
if (body) {
this.doc.body.appendChild(script);
} else {
this.doc.head.appendChild(script);
}
script.remove();
};
if (!injectMode) {
if (this.win && this.getScriptManager() === "Tampermonkey") {
forceEval(txt);
} else {
forceDrop(txt);
}
} else if (injectMode === 1) {
forceEval(txt);
} else {
forceDrop(txt);
}
},
/**
* Runs a function on DOM & window load.
* @method always
* @param func {Function} The function to run.
* @param capture {Boolean} Dispatches event to the listener (func) before the event target.
*/
always(func, capture) {
func();
this.on("DOMContentLoaded", func, capture);
this.on("load", func, capture);
},
/**
* String content matching across an array of strings. Returns true if any string in the args array is matched.
* @method applyMatch
* @param args {Array} The strings to match against.
* @param method {Number} The method to match with. Defined in the enum (aak.matchMethod).
* @param filter {String|RegExp} The matching criteria.
* @return {Boolen} True if any string match, false otherwise.
*/
applyMatch(args, method, filter) {
switch (method) {
case this.matchMethod.string:
for (let i=0; i<args.length; i++) {
if (String(args[i]).includes(filter)) {
return true;
}
}
break;
case this.matchMethod.stringExact:
for (let i=0; i<args.length; i++) {
if (filter === String(args[i])) {
return true;
}
}
break;
case this.matchMethod.RegExp:
for (let i=0; i<args.length; i++) {
if (filter.test(String(args[i]))) {
return true;
}
}
break;
case this.matchMethod.callback:
return filter(args);
default:
return true;
}
return false;
},
/**
* Adds an HTML element to the page for scripts checking an element's existence.
* @method bait
* @param type {String} The element tag name.
* @param identifier {String} CSS selector for adding an ID or class to the element.
*/
bait(type, identifier) {
let elem = this.$(`<${type}>`);
if (identifier.startsWith("#")) {
elem.attr("id", identifier.substr(1));
} else if (identifier.startsWith(".")) {
elem.addClass(identifier.substr(1));
}
elem.html("<br>").prependTo("html");
},
/**
* Configuration for this script.
* @method config
* @type Object
*/
config() {
this.config.debugMode = GM_getValue("config_debugMode", this.config.debugMode);
this.config.allowExperimental = GM_getValue("config_allowExperimental", this.config.allowExperimental);
this.config.aggressiveAdflySkipper = GM_getValue("config_aggressiveAdflySkiper", this.config.aggressiveAdflySkipper);
},
/**
* Sets or gets a cookie, depending on whether the value is provided or not.
* @method cookie
* @param key {String} The cookie name.
* @param val {String} The cookie value. Leave out to retrieve the current value.
* @param time {Number} Number of milliseconds in which to expire the cookie.
* @param path {String} The cookie path.
* @return {String} The value of the cookie, if "val" parameter is omitted.
*/
cookie(key, val, time, path) {
if (typeof val === "undefined") {
const value = "; " + this.doc.cookie;
let parts = value.split("; " + key + "=");
if (parts.length == 2) {
return parts.pop().split(";").shift();
} else {
return null;
}
} else {
let expire = new this.win.Date();
expire.setTime((new this.win.Date()).getTime() + (time || 31536000000));
this.setProp("document.cookie",
key + "=" + this.win.encodeURIComponent(val) + ";expires=" + expire.toGMTString() + ";path=" + (path || "/")
);
}
},
/**
* Removes an inline script on the page, using the sample string.
* @method crashScript
* @param sample {String} Sample function string.
*/
crashScript(sample) {
this.patchHTML((html) => {
return html.replace(sample, "])} \"'` ])} \n\r \r\n */ ])}");
});
},
/**
* Adds CSS styles to the page.
* @method css
* @param str {String} The CSS string to add.
*/
css(str) {
let temp = str.split(";");
for (let i=0; i<temp.length-1; i++) {
if (!temp[i].endsWith("!important")) {
temp[i] += " !important";
}
}
GM_addStyle(temp.join(";"));
},
/**
* Defines a property on the unsafe window.
* @method defineProperty
* @param name {String} The property name. Can also be a dot separated syntax to traverse into embedded objects from the unsafe window.
* @param definition {Object} The property definition.
*/
defineProperty(name, definition) {
try {
// Code that assumes we can directly set properties on the unsafe window.
let property = this.win;
let parent;
let stack = name.split(".");
let current;
while (current = stack.shift()) {
parent = property;
property = parent[current];
if (!stack.length) {
this.win.Object.defineProperty(parent, current, definition);
}
}
}
catch(err) {
if (typeof exportFunction === "function") {
// If the first solution didn't work, we're probably in greasemonkey. A script tag needs to be injected on the page.
let stack = name.split(".");
let last = stack.pop();
stack.unshift("window");
let path = stack.join(".");
let templateDefinition = [];
if (typeof definition.configurable !== "undefined") {
templateDefinition.push(`configurable: ${definition.configurable}`);
}
if (typeof definition.enumerable !== "undefined") {
templateDefinition.push(`enumerable: ${definition.enumerable}`);
}
if (typeof definition.writable !== "undefined") {
templateDefinition.push(`writable: ${definition.writable}`);
}
if (typeof definition.value !== "undefined") {
var valueType = Object.prototype.toString.call(definition.value);
if (valueType === "[object String]") {
definition.value = '"' + definition.value.replace(/"/g, "\\\""); + '"';
} else if (valueType === "[object Array]" || valueType === "[object Object]") {
definition.value = JSON.stringify(definition.value);
}
templateDefinition.push(`value: ${definition.value}`);
}
if (typeof definition.set !== "undefined") {
let setter = definition.set;
let setterName = this.uid();
exportFunction(setter, this.win, { defineAs: setterName });
templateDefinition.push(`set: function(val) {
window["${setterName}"](val);
}`);
}
if (typeof definition.get !== "undefined") {
let getter = definition.get;
let getterName = this.uid();
exportFunction(getter, this.win, { defineAs: getterName });
templateDefinition.push(`get: function() {
return window["${getterName}"]();
}`);
}
templateDefinition = templateDefinition.join(',');
this.addScript(`
try {
Object.defineProperty(${path},"${last}", {
${templateDefinition}
});
} catch(err) {
console.error("AAK failed to define property ${name}!");
}
`, this.scriptInjectMode.drop);
}
else {
throw (err);
}
}
},
/**
* The document of the unsafe window.
* @property doc
*/
doc: win.document,
/**
* The domain name of the unsafe window.
* @property dom
*/
dom: win.document.domain,
/**
* Compares the current domain to a list of domains, returns true if in that list.
* @method domCmp
* @param domList {Array} The list of domain names to check against.
* @param noErr {Boolean} Don't display errors in debug mode.
* @return {Boolean} true if the current domain is in the domain list.
*/
domCmp(domList, noErr) {
for (let i=0; i<domList.length; i++) {
if (this.dom === domList[i] || this.dom.endsWith("." + domList[i])) {
if (this.config.debugMode && !noErr) {
this.err();
}
return true;
}
}
return false;
},
/**
* Checks if the current domain string is included as a sub domain or partial domain in the list.
* @method domInc
* @param domList {Array} The list of domain names to check against.
* @param noErr {Boolean} Don't display errors in debug mode.
* @return {Boolean} True if the current domain is included in the domain list.
*/
domInc(domList, noErr) {
for (let i=0; i<domList.length; i++) {
if (this.dom.startsWith(domList[i] + ".") || this.dom.includes("." + domList[i] + ".")) {
if (this.config.debugMode && !noErr) {
this.err();
}
return true;
}
}
return false;
},
/**
* Displays a console error.
* @method err
* @param name {String} Descriptive type of error.
*/
err(name) {
if (name) {
name = name + " ";
} else {
name = ""
}
this.out.error(`Uncaught AdBlock Error: ${name}AdBlocker detectors are not allowed on this device! `);
},
/**
* Replaces a global function with a version that can stop or modify its execution based on the arguments passed.
* @method filter
* @param func {String} The name of the function (or dot separate path to the function) to be replaced. Starts at the global context.
* @param method {Number} The method to match function arguments with. Defined in the enum (aak.matchMethod).
* @param filter {String|RegExp} This string or regex criteria that determines a match. If this matches, the original function is not executed.
* @param onMatch {Function} Callback when the "filter" argument matches. The return value of this function is used instead of the original function's return value.
* @param onAfter {Function} Callback that fires every time original function is called. The first argument is whether or not the flter matched. The second argument is the args passed into the original function.
* @return {Boolean} True if errors did not occur.
*/
filter(func, method, filter, onMatch, onAfter) {
let original = this.win;
let parent;
const newFunc = (...args) => {
if (this.config.debugMode) {
this.out.warn(func + " was called with these arguments: ");
for (let i=0; i<args.length; i++) {
this.out.warn(String(args[i]));
}
}
if (!method || this.applyMatch(args, method, filter)) {
this.config.debugMode && this.err();
let ret = undefined;
if (onMatch) {
ret = onMatch(args);
}
onAfter && onAfter(true, args);
return ret;
}
this.config.debugMode && this.out.info("Tests passed.");
onAfter && onAfter(false, args);
return original.apply(parent, args);
};
try {
let stack = func.split(".");
let current;
while (current = stack.shift()) {
parent = original;
original = parent[current];
if (!stack.length) {
if (typeof exportFunction === "function") { // Firefox
exportFunction(newFunc, parent, { defineAs: current });
} else {
parent[current] = newFunc;
}
}
}
if (this.protectFunc.enabled) {
this.protectFunc.pointers.push(newFunc);
this.protectFunc.masks.push(String(original));
}
this.config.debugMode && this.out.warn("Filter activated on " + func);
} catch(err) {
this.config.debugMode && this.out.error("AAK failed to activate fitler on " + func + "!");
return false;
}
return true;
},
/**
* Generic anti-adblocking solutions that run on every page.
* @method generic
*/
generic() {
//@pragma-keepline Based on generic solutions of Anti-Adblock Killer
//@pragma-keepline License: https://github.com/reek/anti-adblock-killer/blob/master/LICENSE
if (this.config.allowGeneric && !this.config.domExcluded) {
const data = {};
this.generic.FuckAdBlock("FuckAdBlock", "fuckAdBlock");
this.generic.FuckAdBlock("BlockAdBlock", "blockAdBlock");
this.readOnly("canRunAds", true);
this.readOnly("canShowAds", true);
this.readOnly("isAdBlockActive", false);
let playwireZeus;
this.defineProperty("Zeus", {
configurable: false,
set: function (val) {
playwireZeus = val;
},
get: function () {
this.config.debugMode && this.err("Playwire");
try {
playwireZeus.AdBlockTester = {
check: function (a) { a(); }
};
} catch (err) { }
return playwireZeus;
}
});
this.ready(() => {
if (this.win.XenForo && typeof this.win.XenForo.rellect === "object") {
this.config.debugMode && this.err("XenForo");
this.setProp("XenForo.rellect", {
AdBlockDetector: {
start: function () { }
}
});
}
if (typeof this.win.closeAdbuddy === "function") {
this.config.debugMode && this.err("Adbuddy");
this.win.closeAdbuddy();
}
if (this.$("div.adb_overlay > div.adb_modal_img").length > 0) {
this.config.debugMode && this.err("AdBlock Alerter");
this.$("div.adb_overlay").remove();
this.css("html,body {height:auto; overflow: auto;}");
}
if (this.$("#blockdiv").html() === "disable ad blocking or use another browser without any adblocker when you visit") {
this.config.debugMode && this.out.err("Uncaught AdBlock Error: Generic block screens are not allowed on this device! ");
this.$("#blockdiv").remove();
}
const styles = document.querySelectorAll("style");
for (let i = 0; i < styles.length; i++) {
const style = styles[i];
const cssRules = style.sheet.cssRules;
for (var j = 0; j < cssRules.length; j++) {
const cssRule = cssRules[j];
const cssText = cssRule.cssText;
const pattern = /^#([a-z0-9]{4,10}) ~ \* \{ display: none; \}/;
if (pattern.test(cssText)) {
const id = pattern.exec(cssText)[1];
if (this.$("script:contains(w.addEventListener('load'," + id + ",false))")) {
this.config.debugMode && this.err("Antiblock.org v2");
data.abo2 = id;
break;
}
}
}
}
for (let prop in this.win) {
try {
if (!prop.startsWith("webkit") && /^[a-z0-9]{4,12}$/i.test(prop) && prop !== "document" && (this.win[prop] instanceof this.win.HTMLDocument) === false && this.win.hasOwnProperty(prop) && typeof this.win[prop] === "object") {
const method = this.win[prop];
if (method.deferExecution &&
method.displayMessage &&
method.getElementBy &&
method.getStyle &&
method.insert &&
method.nextFunction) {
if (method.toggle) {
this.config.debugMode && this.err("BetterStopAdblock");
data.bsa = prop;
} else {
this.config.debugMode && this.err("Antiblock.org v3");
data.abo3 = prop;
}
this.setProp(prop, null);
}
if (method.bab) {
this.config.debugMode && this.err("BlockAdBlock");
this.setProp(prop, null);
} else if (this.win.Object.keys(method).length === 3 && this.win.Object.keys(method).join().length === 32) {
this.config.debugMode && this.err("BlockAdBlock");
this.setProp(prop, null);
}
}
} catch (err) { }
}
});
const onInsertHandler = (insertedNode) => {
if (insertedNode.nodeName === "DIV" &&
insertedNode.id &&
insertedNode.id.length === 4 &&
/^[a-z0-9]{4}$/.test(insertedNode.id) &&
insertedNode.firstChild &&
insertedNode.firstChild.id &&
insertedNode.firstChild.id === insertedNode.id &&
insertedNode.innerHTML.includes("no-adblock.com")) {
this.config.debugMode && this.err("No-Adblock");
insertedNode.remove();
}
if (insertedNode.nodeName === "DIV" &&
insertedNode.id &&
insertedNode.id.length === 7 &&
/^a[a-z0-9]{6}$/.test(insertedNode.id) &&
insertedNode.parentNode &&
insertedNode.parentNode.id &&
insertedNode.parentNode.id === insertedNode.id + "2" &&
insertedNode.innerHTML.includes("stopadblock.org")) {
this.config.debugMode && this.err("StopAdblock");
insertedNode.remove();
}
const reIframeId = /^(zd|wd)$/;
const reImgId = /^(xd|gd)$/;
const reImgSrc = /\/ads\/banner.jpg/;
const reIframeSrc = /(\/adhandler\/|\/adimages\/|ad.html)/;
if (insertedNode.id &&
reImgId.test(insertedNode.id) &&
insertedNode.nodeName === "IMG" &&
reImgSrc.test(insertedNode.src) ||
insertedNode.id &&
reIframeId.test(insertedNode.id) &&
insertedNode.nodeName === "IFRAME" &&
reIframeSrc.test(insertedNode.src)) {
this.config.debugMode && this.err("AntiAdblock");
insertedNode.remove();
}
const reId = /^[a-z]{8}$/;
const reClass = /^[a-z]{8} [a-z]{8}/;
const reBg = /^[a-z]{8}-bg$/;
if (typeof this.win.vtfab !== "undefined" &&
typeof this.win.adblock_antib !== "undefined" &&
insertedNode.parentNode &&
insertedNode.parentNode.nodeName === "BODY" &&
insertedNode.id &&
reId.test(insertedNode.id) &&
insertedNode.nodeName === "DIV" &&
insertedNode.nextSibling &&
insertedNode.nextSibling.className &&
insertedNode.nextSibling.nodeName === "DIV") {
if (insertedNode.className &&
reClass.test(insertedNode.className) &&
reBg.test(insertedNode.nextSibling.className) &&
insertedNode.nextSibling.style &&
insertedNode.nextSibling.style.display !== "none") {
this.config.debugMode && this.err("Adunblock Premium");
insertedNode.nextSibling.remove();
insertedNode.remove();
} else if (insertedNode.nextSibling.id &&
reId.test(insertedNode.nextSibling.id) &&
insertedNode.innerHTML.includes("Il semblerait que vous utilisiez un bloqueur de publicité !")) {
this.config.debugMode && this.err("Adunblock Free");
insertedNode.remove();
}
}
const reMsgId = /^[a-z0-9]{4,10}$/i;
const reTag1 = /^(div|span|b|i|font|strong|center)$/i;
const reTag2 = /^(a|b|i|s|u|q|p|strong|center)$/i;
const reWords1 = /ad blocker|ad block|ad-block|adblocker|ad-blocker|adblock|bloqueur|bloqueador|Werbeblocker|adblockert|&#1570;&#1583;&#1576;&#1604;&#1608;&#1603; &#1576;&#1604;&#1587;|блокировщиком/i;
const reWords2 = /kapat|disable|désactivez|désactiver|desactivez|desactiver|desative|desactivar|desactive|desactiva|deaktiviere|disabilitare|&#945;&#960;&#949;&#957;&#949;&#961;&#947;&#959;&#960;&#959;&#943;&#951;&#963;&#951;|&#1079;&#1072;&#1087;&#1088;&#1077;&#1097;&#1072;&#1090;&#1100;|állítsd le|publicités|рекламе|verhindert|advert|kapatınız/i;
if (insertedNode.parentNode &&
insertedNode.id &&
insertedNode.style &&
insertedNode.childNodes.length &&
insertedNode.firstChild &&
!insertedNode.firstChild.id &&
!insertedNode.firstChild.className &&
reMsgId.test(insertedNode.id) &&
reTag1.test(insertedNode.nodeName) &&
reTag2.test(insertedNode.firstChild.nodeName)) {
this.config.debugMode && this.err("Antiblock.org");
const audio = insertedNode.querySelector("audio[loop]");
if (audio) {
audio.pause();
audio.remove();
} else if ((data.abo2 && insertedNode.id === data.abo2) ||
(insertedNode.firstChild.hasChildNodes() && reWords1.test(insertedNode.firstChild.innerHTML) && reWords2.test(insertedNode.firstChild.innerHTML))) {
insertedNode.remove();
} else if ((data.abo3 && insertedNode.id === data.abo3) ||
(insertedNode.firstChild.hasChildNodes() && insertedNode.firstChild.firstChild.nodeName === "IMG" && insertedNode.firstChild.firstChild.src.startsWith("data:image/png;base64"))) {
aak.win[data.abo3] = null;
insertedNode.remove();
} else if (data.bsa && insertedNode.id === data.bsa) {
this.win[data.bsa] = null;
insertedNode.remove();
}
}
};
this.observe("insert", onInsertHandler);
} else if (this.config.debugMode) {
this.out.warn("Generic solutions are disabled on this domain. ");
}
},
/**
* Gets the name of the current script manager, if available.
* @method getScriptManager
*/
getScriptManager() {
if (typeof GM_info === 'object') {
// Greasemonkey (Firefox)
if (typeof GM_info.uuid !== 'undefined') {
return 'Greasemonkey';
} // Tampermonkey (Chrome/Opera)
else if (typeof GM_info.scriptHandler !== 'undefined') {
return 'Tampermonkey';
}
} else {
// Scriptish (Firefox)
if (typeof GM_getMetadata === 'function') {
return 'Scriptish';
} // NinjaKit (Safari/Chrome)
else if (typeof GM_setValue !== 'undefined' &&
typeof GM_getResourceText === 'undefined' &&
typeof GM_getResourceURL === 'undefined' &&
typeof GM_openInTab === 'undefined' &&
typeof GM_setClipboard === 'undefined') {
return 'NinjaKit';
} else { // Native
return 'Native';
}
}
},
/**
* Initialize the script.
* @method init
* @param excluded {Array} An array of URLs to exclude from blocking.
* @param AdFlyMatch {Boolean} Whether or not to match adfly.
* @param AdflyUnmatch {Boolean} Wheter or not to unmatch adfly.
*/
init(excluded, AdflyMatch, AdflyUnmatch) {
this.$ = this.make$();
this.config();
this.config.debugMode && this.out.warn("Domain: " + a.dom);
this.config.domExcluded = excluded;
if (this.config.debugMode && excluded) {
this.out.warn("This domain is in excluded list. ");
}
if (!excluded && (AdflyMatch || (this.config.aggressiveAdflySkiper && !AdflyUnmatch))) {
this.generic.AdflySkipper();
}
},
/**
* Converts a string into an object. For functions, only the function body is taken.
* @method intoString
* @param a {Any} The object to convert
* @param {String} The string representation of the object.
*/
intoString(a) {
if (typeof a === 'function') {
var str = a.toString();
var first = str.indexOf("{") + 1;
var last = str.lastIndexOf("}");
return str.substr(first, last - first).trim();
} else if (typeof entry === 'object') {
return JSON.stringify(a);
} else { // array or string
return a.toString();
}
},
/**
* Create a jQuery instance.
* @method make$
*/
make$() {
let $ = this.jQueryFactory(this.win, true);
return $;
},
/**
* Match enum for the "applyMatch" method.
* @property matchMethod
* @type Object
*/
matchMethod: {
matchAll: 0, // Match all, this is default.
string: 1, // Substring match
stringExact: 2, // Exact string match, will result in match if one or more arguments matches the filter
RegExp: 3, // Regular expression
callback: 4 // Callback, arguments list will be supplied as an array. Retrun true for match, false for no match.
},
/**
* Creates a native video player.
* @method nativePlayer
* @param source {String} The source URL of the video stream.
* @param [typeIn] {String} Specify a video MIME type.
* @param [widthIn] {String} Specify a custom width.
* @param [heightIn] {String} Specify a custom height.
*/
nativePlayer(source, typeIn, widthIn, heightIn) {
let type;
if (typeIn) {
type = typeIn;
} else {
const temp = source.split(".");
switch (temp[temp.length - 1]) {
case "webm":
type = "video/webm";
break;
case "mp4":
type = "video/mp4";
break;
case "ogg":
type = "video/ogg";
break;
default:
type = "video/mp4";
break;
}
}
const width = widthIn || "100%";
const height = heightIn || "auto";
return `<video width='${width}' height='${height}' controls><source src='${source}' type='${type}'></video>`;
},
/**
* Blocks scripts from accessing a global property.
* @method noAccess
* @param name {String} The name of the property to deny access to. Using "." will traverse an object's properties. Starts at the global context.
*/
noAccess(name) {
const errMsg = "AdBlock Error: This property may not be accessed!";
try {
this.defineProperty(name, {
configurable: false,
set: function() {
throw errMsg;
},
get: function() {
throw errMsg;
}
});
} catch(err) {
this.config.debugMode && this.out.error("AAK failed to define non-accessible property '" + name + "'!");
}
},
/**
* Shorthand function for observing and reacting to DOM mutations.
* @method observe
* @param type {String} The type of mutation to observe, "insert" or "remove".
* @param callback {Function} The callback function that fires when the mutation occurs.
*/
observe(type, callback) {
if (!this.observe.init.done) {
this.observe.init.done = true;
this.observe.init();
}
switch(type) {
case "insert":
this.observe.insertCallbacks.push(callback);
break;
case "remove":
this.observe.removeCallbacks.push(callback);
break;
}
},
/**
* Shorthand function for unsafeWindow.attachEventListener.
* @method on
* @param event {String} The event to listen to.
* @param func {Function} The callback that fires when the event occurs.
* @param capture {Boolean} "useCapture".
*/
on(event, func, capture) {
if (typeof exportFunction === "function") {
var funcName = this.uid();
exportFunction(func, this.win, { defineAs: funcName });
this.addScript(`
window.addEventListener("${event}", window.${funcName}, ${capture});
delete window.${funcName};
`, this.scriptInjectMode.drop);
} else {
this.win.addEventListener(event, func, capture);
}
},
/**
* The console of the unsafe window
* @property out
*/
out: win.console,
/**
* Modify the HTML of the entire page before it loads.
* @method patchHTML
* @param patcher {Function} Function that is passed the HTML of the page, and returns the replacement.
*/
patchHTML(patcher) {
this.win.stop();
GM_xmlhttpRequest({
method: "GET",
url: this.doc.location.href,
headers: {
"Referer": this.doc.referer
},
onload: (result) => {
this.doc.write(patcher(result.responseText));
}
});
},
/**
* @method patchToString
*/
patchToString() {
//Implementation wanted.
//Patch Function.prototype.toString so our modification can't be detected by the page script
},
/**
* Stops websites from detecting function modifications by utilizing the toString method of the function. Used in conjunction with "filter".
* @method protectFunc
*/
protectFunc() {
this.protectFunc.enabled = true;
const original = this.win.Function.prototype.toString;
const newFunc = () => {
const index = this.protectFunc.pointers.indexOf(this);
if (index === -1) {
return original.apply(this);
} else {
return this.protectFunc.masks[index];
}
};
try {
this.win.Function.prototype.toString = newFunc;
this.protectFunc.pointers.push(newFunc);
this.protectFunc.masks.push(String(original));
this.config.debugMode && this.out.warn("Functions protected.");
} catch(err) {
this.config.debugMode && this.out.error("AAK failed to protect functions!");
return false;
}
return true;
},
/**
* Makes it so a global property is not modifiable by further scripts.
* @method noAccess
* @param name {String} The name of the property to make read-only. Using "." will traverse an object's properties. Starts at the global context.
* @param val {Any} The desired value of the read-only property.
*/
readOnly(name, val) {
try {
this.defineProperty(name, {
configurable: false,
set: function() {},
get: function() {
return val;
}
});
} catch(err) {
this.config.debugMode && this.out.error("AAK failed to define non-accessible property '" + name + "'!");
}
},
/**
* Fires when the DOM is ready for modification.
* @method ready
* @param func {Function} Callback to fire when DOM is ready.
* @param capture {Boolean} Whether or not the callback should fire before event target.
*/
ready(func, capture) {
this.on("DOMContentLoaded", func, capture);
},
/**
* Redirects the page with a get or post request. Use this instead of window.location.href for greater compatibility.
* @method redirect
* @param url {String} The URL to redirect to.
* @param [method="get"] {String} The redirection method, "get" or "post".
* @param [params] {Object} Either get params or post body data, depending on the method.
*/
redirect(url, method, params) {
var callRedirect = () => {
method = (method || "get").toLowerCase();
let form = this.doc.createElement("form");
form.method = method;
form.action = url;
if (params) {
for (let key in params) {
if (params.hasOwnProperty(key)) {
let hiddenField = this.doc.createElement("input");
hiddenField.type = "hidden";
hiddenField.name = key;
hiddenField.value = params[key];
form.appendChild(hiddenField);
}
}
}
let submitButton = this.doc.createElement("input");
submitButton.style.display = "none";
submitButton.type = "submit";
form.appendChild(submitButton);
this.doc.body.appendChild(form);
submitButton.click();
this.doc.body.removeChild(form);
};
if (document.readyState == "interactive" || document.readyState == "complete") {
callRedirect();
} else {
this.ready(() => {
callRedirect();
});
}
},
scriptInjectMode: {
default: 0,
eval: 1,
drop: 2
},
/**
* The unsafe window's setInterval.
* @property setInterval
*/
setInterval: win.setInterval,
/**
* Sets a property on the unsafe window.
* @method setProp
* @param name {String} The name of the property to set. Can use a dot separated syntax to drill down into objects.
* @param val {Any} The value of the property.
*/
setProp(name, val) {
if (Object.prototype.toString.call(name) === "[object Array]") {
name = name.join(".");
}
if (typeof exportFunction === "function") {
var valFunction = function() {
return val;
};
var valFunctionName = this.uid();
exportFunction(valFunction, this.win, { defineAs: valFunctionName });
this.addScript(`
window.${name} = ${valFunctionName}();
delete ${valFunctionName};
`, this.scriptInjectMode.drop);
}
else {
let original = this.win;
let parent;
let stack = name.split(".");
let current;
while (current = stack.shift()) {
parent = original;
original = parent[current];
if (!stack.length) {
parent[current] = val;
}
}
}
},
/**
* The unsafe window's setTimeout.
* @property setTimeout
*/
setTimeout: win.setTimeout,
/**
* Creates a SHA-256 hash signature of provided string.
* @method sha256
* @param r {String} The string to encrypt.
*/
sha256(r) {
//@pragma-keepline Based on work of Angel Marin and Paul Johnston
//@pragma-keepline More information: http://www.webtoolkit.info/javascript-sha256.html
function n(r, n) {
var t = (65535 & r) + (65535 & n),
e = (r >> 16) + (n >> 16) + (t >> 16);
return e << 16 | 65535 & t;
}
function t(r, n) {
return r >>> n | r << 32 - n;
}
function e(r, n) {
return r >>> n;
}
function o(r, n, t) {
return r & n ^ ~r & t;
}
function u(r, n, t) {
return r & n ^ r & t ^ n & t;
}
function a(r) {
return t(r, 2) ^ t(r, 13) ^ t(r, 22);
}
function f(r) {
return t(r, 6) ^ t(r, 11) ^ t(r, 25);
}
function c(r) {
return t(r, 7) ^ t(r, 18) ^ e(r, 3);
}
function i(r) {
return t(r, 17) ^ t(r, 19) ^ e(r, 10);
}
function h(r, t) {
var e, h, C, g, d, v, A, l, m, S, y, w, b = new Array(1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298),
p = new Array(1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225),
s = new Array(64);
r[t >> 5] |= 128 << 24 - t % 32, r[(t + 64 >> 9 << 4) + 15] = t;
for (m = 0; m < r.length; m += 16) {
e = p[0], h = p[1], C = p[2], g = p[3], d = p[4], v = p[5], A = p[6], l = p[7];
for (S = 0; 64 > S; S++) 16 > S ? s[S] = r[S + m] : s[S] = n(n(n(i(s[S - 2]), s[S - 7]), c(s[S - 15])), s[S - 16]), y = n(n(n(n(l, f(d)), o(d, v, A)), b[S]), s[S]), w = n(a(e), u(e, h, C)), l = A, A = v, v = d, d = n(g, y), g = C, C = h, h = e, e = n(y, w);
p[0] = n(e, p[0]), p[1] = n(h, p[1]), p[2] = n(C, p[2]), p[3] = n(g, p[3]), p[4] = n(d, p[4]), p[5] = n(v, p[5]), p[6] = n(A, p[6]), p[7] = n(l, p[7]);
}
return p;
}
function C(r) {
for (var n = Array(), t = (1 << v) - 1, e = 0; e < r.length * v; e += v) n[e >> 5] |= (r.charCodeAt(e / v) & t) << 24 - e % 32;
return n;
}
function g(r) {
r = r.replace(/\r\n/g, "\n");
for (var n = "", t = 0; t < r.length; t++) {
var e = r.charCodeAt(t);
128 > e ? n += String.fromCharCode(e) : e > 127 && 2048 > e ? (n += String.fromCharCode(e >> 6 | 192), n += String.fromCharCode(63 & e | 128)) : (n += String.fromCharCode(e >> 12 | 224), n += String.fromCharCode(e >> 6 & 63 | 128), n += String.fromCharCode(63 & e | 128));
}
return n;
}
function d(r) {
for (var n = A ? "0123456789ABCDEF" : "0123456789abcdef", t = "", e = 0; e < 4 * r.length; e++) t += n.charAt(r[e >> 2] >> 8 * (3 - e % 4) + 4 & 15) + n.charAt(r[e >> 2] >> 8 * (3 - e % 4) & 15);
return t;
}
var v = 8,
A = 0;
return r = g(r), d(h(C(r), r.length * v));
},
/**
* Similar to "filter", except all arguments are multiplied by a "ratio" for detection on the next call. Usually used on "setInterval".
* @method timewarp
*/
timewarp(func, method, filter, onMatch, onAfter, ratio) {
ratio = ratio || 0.02;
const original = this.win[func];
const newFunc = (...args) => {
if (this.config.debugMode) {
this.out.warn("Timewarpped " + func + " is called with these arguments: ");
for (let i = 0; i < args.length; i++) {
this.out.warn(String(args[i]));
}
}
if (!method || this.applyMatch(args, method, filter)) {
this.config.debugMode && this.out.warn("Timewarpped. ");
onMatch && onMatch(args);
onAfter && onAfter(true, args);
args[1] = args[1] * ratio;
return original.apply(this.win, args);
} else {
this.config.debugMode && this.out.info("Not timewarpped. ");
onAfter && onAfter(false, args);
return original.apply(this.win, args);
}
};
try {
if (typeof exportFunction === "function") { // Firefox
exportFunction(newFunc, this.win, { defineAs: func });
} else {
this.win[func] = newFunc;
}
if (this.protectFunc.enabled) {
this.protectFunc.pointers.push(newFunc);
this.protectFunc.masks.push(String(original));
}
this.config.debugMode && this.out.warn("Timewarp activated on " + func);
} catch (err) {
this.config.debugMode && this.out.error("uBlock Protector failed to apply timewarp on " + func + "! ");
return false;
}
return true;
},
/**
* Generated a unique ID string.
* @method uid
* @return {String} The unique id.
*/
uid() {
const chars = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
let str = "";
for (let i = 0; i < 10; i++) {
str += chars.charAt(this.win.Math.floor(this.win.Math.random() * chars.length));
}
this.uid.counter++;
return str + this.uid.counter.toString();
},
/**
* Creates a videoJS player.
* @method videoJS
*
*/
videoJS(sources, types, width, height) {
let html = `<video id="uBlock_Protector_Video_Player" class="video-js vjs-default-skin" controls preload="auto" width="${width}" height="${height}" data-setup="{}">`;
for (let i = 0; i < sources.length; i++) {
html += `<source src="${sources[i]}" type="${types[i]}">`;
}
html += `</video>`;
return html;
},
/**
* The unsafe window. Use for read-only access.
* Writing directly does not work in all setups. Use the "setProp" method to write.
* @property window
*/
win: win
};
/*
* Static properties for aak.config
*/
aak.config.aggressiveAdflySkipper = true;
aak.config.allowExperimental = true;
aak.config.allowGeneric = true;
aak.config.debugMode = true;
aak.config.domExcluded = null;
aak.config.update = (id, val) => {
const names = [
"config_debugMode",
"config_allowExperimental",
"config_aggressiveAdflySkiper"
];
if (names.includes(id)) {
GM_setValue(id, Boolean(val));
}
};
/*
* Static properties for aak.generic
*/
aak.generic.AdflySkipper = function () {
//@pragma-keepline Based on AdsBypasser
//@pragma-keepline License: https://github.com/adsbypasser/adsbypasser/blob/master/LICENSE
const handler = function (encodedURL) {
if (aak.doc.body) {
return;
}
const index = encodedURL.indexOf("!HiTommy");
if (index >= 0) {
encodedURL = encodedURL.substring(0, index);
}
let var1 = "", var2 = "";
for (let i = 0; i < encodedURL.length; ++i) {
if (i % 2 === 0) {
var1 = var1 + encodedURL.charAt(i);
} else {
var2 = encodedURL.charAt(i) + var2;
}
}
let decodedURL = aak.win.atob(var1 + var2);
decodedURL = decodedURL.substr(2);
if (aak.win.location.hash) {
decodedURL += aak.win.location.hash;
}
if (decodedURL.length > 3 && decodedURL.includes(".")) {
aak.win.stop();
aak.setProp("onbeforeunload", null);
aak.redirect(decodedURL);
}
};
try {
let val;
let flag = true;
aak.defineProperty("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) {
aak.config.debugMode && aak.out.error("uBlock Protector could not set up Adfly skipper. ");
}
};
aak.generic.FuckAdBlock = function (constructorName, instanceName) {
const patchedFuckAdBlock = function () {
//@pragma-keepline Based on FuckAdBlock
//@pragma-keepline License: https://github.com/sitexw/FuckAdBlock/blob/master/LICENSE
this._callbacks = [];
aak.on("load", (function () {
this.emitEvent();
}).bind(this));
this.setOption = function () {
return this;
};
this.check = function () {
this.emitEvent();
return true;
};
this.emitEvent = function () {
for (let i = 0; i < this._callbacks.length; i++) {
this._callbacks[i]();
}
return this;
};
this.clearEvent = function () {
this._callbacks = [];
};
this.on = function (detected, func) {
aak.config.debugMode && aak.err("FuckAdBlock");
if (!detected) {
this._callbacks.push(func);
}
return this;
};
this.onDetected = function () {
aak.config.debugMode && aak.err("FuckAdBlock");
return this;
};
this.onNotDetected = function (func) {
return this.on(false, func);
};
this.debug = {};
this.debug.set = (function () {
return this;
}).bind(this);
};
return aak.readOnly(constructorName, patchedFuckAdBlock) && aak.readOnly(instanceName, new aak.win[constructorName]());
};
/*
* Static properties for aak.observe
*/
aak.observe.init = () => {
const observer = new aak.win.MutationObserver(function(mutations) {
for (let i=0; i<mutations.length; i++) {
if (mutations[i].addedNodes.length) {
for (let ii=0; ii<aak.observe.insertCallbacks.length; ii++) {
for (let iii=0; iii<mutations[i].addedNodes.length; iii++) {
aak.observe.insertCallbacks[ii](mutations[i].addedNodes[iii]);
}
}
}
if (mutations[i].removedNodes.length) {
for (let ii = 0; ii < aak.observe.removeCallbacks.length; ii++) {
for (let iii = 0; iii < mutations[i].removedNodes.length; iii++) {
aak.observe.removeCallbacks[ii](mutations[i].removedNodes[iii]);
}
}
}
}
});
observer.observe(aak.doc, {
childList: true,
subtree: true
});
};
aak.observe.init.done = false;
aak.observe.insertCallbacks = [];
aak.observe.removeCallbacks = [];
/*
* Static properties for aak.protectFunc
*/
aak.protectFunc.enabled = false;
aak.protectFunc.pointers = [];
aak.protectFunc.masks = [];
/*
* Static properties for aak.uuid
*/
aak.uid.counter = 0;
/*
* Static properties for aak.videoJS
*/
aak.videoJS.init = (...args) => {
try {
aak.win.HELP_IMPROVE_VIDEOJS = false;
} catch (err) { }
let plugins = args.join();
aak.$("head").append(`<link href="//vjs.zencdn.net/5.4.6/video-js.min.css" rel="stylesheet"><script src="//vjs.zencdn.net/5.4.6/video.min.js"><\/script>${plugins}`);
};
aak.videoJS.plugins = {};
aak.videoJS.plugins.hls = `<script src="//cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.4.0/videojs-contrib-hls.min.js"><\/script>`;
return aak;
})((typeof unsafeWindow !== "undefined") ? unsafeWindow : window);
/*========
| jQuery |
=========*/
a.jQueryFactory=function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selecte
a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")
null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.
/*================
| Initialize AAK |
=================*/
(function () {
if (a.domCmp(["29443kmq.video", "dato.porn"])) {
a.readOnly("cRAds", true);
}
const excludedDomCmp = ["360.cn", "apple.com", "ask.com", "baidu.com", "bing.com", "bufferapp.com",
"chromeactions.com", "easyinplay.net", "ebay.com", "facebook.com", "flattr.com", "flickr.com",
"ghacks.net", "imdb.com", "imgbox.com", "imgur.com", "instagram.com", "jsbin.com", "jsfiddle.net",
"linkedin.com", "live.com", "mail.ru", "microsoft.com", "msn.com", "paypal.com", "pinterest.com",
"preloaders.net", "qq.com", "reddit.com", "stackoverflow.com", "tampermonkey.net", "twitter.com",
"vimeo.com", "wikipedia.org", "w3schools.com", "yandex.ru", "youtu.be", "youtube.com", "xemvtv.net",
"vod.pl", "agar.io", "pandoon.info", "fsf.org", "adblockplus.org", "plnkr.co", "exacttarget.com",
"dolldivine.com", "popmech.ru", "calm.com", "chatango.com", "filiser.tv"];
const excludedDomInc = ["google", "amazon", "yahoo"];
const AdflyMatchDomCmp = ["adf.ly", "ay.gy", "j.gs", "q.gs", "gamecopyworld.click", "babblecase.com",
"pintient.com", "atominik.com", "bluenik.com", "sostieni.ilwebmaster21.com", "auto-login-xxx.com",
"microify.com", "riffhold.com"];
a.init(
a.domCmp(excludedDomCmp, true) || a.domInc(excludedDomInc, true),
a.domCmp(AdflyMatchDomCmp),
false
);
})();
/*======================================================================
| AAK Website Rules |
| (Please keep in alphabetical order to avoid unnecessary duplicates.) |
=======================================================================*/
//Rules:#
if (a.domCmp(["15min.lt"])) {
a.noAccess("__adblock_config");
}
if (a.domCmp(["29443kmq.video", "czechhq.net", "peeperz.com", "pornhub.com", "pornmd.com", "redtube.com",
"thumbzilla.com", "tube8.com", "xtube.com", "youporn.com"])) {
a.win.open = function (arg) {
if (arg.includes(a.dom)) {
a.redirect(arg);
}
};
}
if (a.domCmp(["2site.me", "sport-show.fr", "vipflash.net"])) {
a.css("#blockblockA {visibility:invisible;display:none;} #blockblockA td {visibility:invisible;di" +
"splay:none;} #blockblockA td p {visibility:invisible;display:none;} #blockblockB {visibility:visible" +
";display:block;}");
}
if (a.domCmp(["37.187.173.205", "latelegratuite.blogspot.com", "lewebtvbouquetfrancophone.overblog.com",
"totaldebrid.org", "tvgratuite.blogspot.com", "webtv.bloguez.com"])) {
a.bait("div", "#my_ad_div");
a.readOnly("jabbahud", function () { });
}
if (a.domCmp(["3dgames.com.ar"])) {
a.generic.FuckAdBlock(a.uid(), "gw");
}
if (a.domCmp(["3dnews.ru"])) {
a.cookie("adblockwarn", "1");
a.css("#earAds { width: 401px; }");
a.bait("div", "#earAds");
a.readOnly("__AT_detected", true);
}
if (a.domCmp(["4shared.com"])) {
a.ready(function () {
a.$("body").removeClass("jsBlockDetect");
});
}
if (a.domCmp(["5278bbs.com"])) {
a.readOnly("myaabpfun12", function () { });
}
if (a.domCmp(["720pmkv.com"])) {
a.bait("div", "#advert");
}
//Rules:A
if (a.domCmp(["abczdrowie.pl", "autokrata.pl", "autokult.pl", "biztok.pl", "echirurgia.pl", "fotoblogia.pl",
"gadzetomania.pl", "hotmoney.pl", "kafeteria.pl", "kafeteria.tv", "kardiolo.pl", "komediowo.pl",
"komorkomania.pl", "money.pl", "o2.pl", "parenting.pl", "pudelek.pl", "pudelek.tv", "pudelekx.pl",
"sfora.pl", "snobka.pl", "wawalove.pl", "wp.pl", "wp.tv", "wrzuta.pl"])) {
a.cookie("ABCABC", "true");
a.filter("addEventListener", a.matchMethod.stringExact, "advertisement");
a.readOnly("hasSentinel", function () { return false; });
}
if (a.domCmp(["adbull.me"])) {
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
}
if (a.domCmp(["adz.bz", "clik.bz", "hop.bz", "mellow.link", "mellowads.com", "url.vin"])) {
let val;
a.win.Object.defineProperty(a.win, "linkVM", {
configurable: false,
set: function (arg) {
val = arg;
},
get: function () {
if (val.verify) {
val.verify = (function () {
callAPI(
"publishing",
"VerifyLinkClick",
{
linkRef: val.linkRef(),
linkClickRef: $("#LinkClickRef")[0].value,
recaptchaResponse: val.recaptchaResponse()
},
"Verify",
"Verifying",
function (response) {
if (response.result) {
a.redirect(response.linkURL);
} else {
showMessageModal("Verify failed", response.resultHtml, response.result);
}
},
null,
function () {
grecaptcha.reset();
}
);
}).bind(val);
}
return val;
}
});
}
if (a.domCmp(["agarabi.com", "agario.sx"])) {
a.generic.FuckAdBlock(a.uid(), "agario_SX_ads");
}
if (a.domCmp(["ahmedabadmirror.com"])) {
a.protectFunc();
a.filter("document.addEventListener", a.matchMethod.string, "function _0x");
a.protectFunc.masks[1] = "function addEventListener() { [native code] }";
}
if (a.domCmp(["ahzahg6ohb.com", "ahzahg6ohb.com", "chouhaa.info", "youwatch.org"])) {
a.readOnly("adsShowPopup1", 1);
a.ready(function () {
a.$("#player_imj, #player_imj + div[id]").remove();
});
}
if (a.domCmp(["aidemu.fr"])) {
a.cookie("adblockPopup", "true");
}
if (a.domCmp(["akam.no", "amobil.no", "diskusjon.no", "gamer.no", "hardware.no", "insidetelecom.no",
"prisguide.no", "tek.no", "teknofil.no", "teknojobb.no"])) {
a.ready(function () {
a.$("<div>").attr("id", "google_ads_iframe_").html("<p></p>").appendTo("body");
});
}
if (a.domCmp(["ajihezo.info", "bojem3a.info", "chefti.info", "exashare.com", "yahmaib3ai.com", "yahmaib3ai.com"])) {
a.readOnly("adsShowPopup1", 1);
a.ready(function () {
a.$("#player_gaz, #player_gaz + div[id]").remove();
});
}
if (a.domCmp(["allmyvideos.net", "amvtv.net"])) {
a.cookie("_favbt33", "1");
}
if (a.domCmp(["ally.sh", "al.ly"])) {
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
a.win.open = null;
}
if (a.domCmp(["an1me.se"])) {
a.readOnly("isBlockAds2", false);
}
if (a.domCmp(["anandabazar.com"])) {
a.readOnly("canRunAds", false);
a.config.allowGeneric = false;
}
if (a.domCmp(["andoveradvertiser.co.uk", "asianimage.co.uk", "autoexchange.co.uk", "banburycake.co.uk",
"barryanddistrictnews.co.uk", "basildonrecorder.co.uk", "basingstokegazette.co.uk", "bicesteradvertiser.net",
"borehamwoodtimes.co.uk", "bournmouthecho.co.uk", "boxingnewsonline.net", "braintreeandwithamtimes.co.uk",
"brentwoodweeklynews.co.uk", "bridgwatermercury.co.uk", "bridportnews.co.uk", "bromsgroveadvertiser.co.uk",
"bucksfreepress.co.uk", "burnhamandhighbridgeweeklynews.co.uk", "burytimes.co.uk", "campaignseries.co.uk",
"chardandilminsternews.co.uk", "chelmsfordweeklynews.co.uk", "chesterlestreetadvertiser.co.uk",
"chorleycitizen.co.uk", "clactonandfrintongazette.co.uk", "consettstanleyadvertiser.co.uk",
"cotswoldessence.co.uk", "cotswoldjournal.co.uk", "cravenherald.co.uk", "creweguardian.co.uk",
"croydonguardian.co.uk", "dailyecho.co.uk", "darlingtonandstocktontimes.co.uk",
"darlingtonaycliffesedgefieldadvertiser.co.uk", "dorsetecho.co.uk", "droitwichadvertiser.co.uk",
"dudleynews.co.uk", "durhamadvertiser.co.uk", "durhamtimes.co.uk", "ealingtimes.co.uk", "echo-news.co.uk",
"edition.pagesuite-professional.co.uk", "enfieldindependent.co.uk", "engagedinvestor.co.uk",
"epsomguardian.co.uk", "essexcountystandard.co.uk", "eveningtimes.co.uk", "eveshamjournal.co.uk",
"falmouthpacket.co.uk", "freepressseries.co.uk", "gazette-news.co.uk", "gazetteherald.co.uk",
"gazetteseries.co.uk", "globalreinsurance.com", "guardian-series.co.uk", "halesowennews.co.uk",
"halsteadgazette.co.uk", "hampshirechronicle.co.uk", "haringeyindependent.co.uk", "harrowtimes.co.uk",
"harwichandmanningtreestandard.co.uk", "heraldscotland.com", "heraldseries.co.uk", "herefordtimes.com",
"hillingdontimes.co.uk", "ilkleygazette.co.uk", "insurancetimes.co.uk", "keighleynews.co.uk",
"kidderminstershuttle.co.uk", "kingstonguardian.co.uk", "knutsfordguardian.co.uk", "lancashiretelegraph.co.uk",
"ledburyreporter.co.uk", "leighjournal.co.uk", "ludlowadvertiser.co.uk", "maldonandburnhamstandard.co.uk",
"malverngazette.co.uk", "messengernewspapers.co.uk", "middevonstar.co.uk", "middlewichguardian.co.uk",
"milfordmercury.co.uk", "monmouthshirecountylife.co.uk", "newsquest.co.uk", "newsshopper.co.uk",
"northernfarmer.co.uk", "northwichguardian.co.uk", "northyorkshireadvertiser.co.uk", "oxfordmail.co.uk",
"oxfordtimes.co.uk", "pembrokeshirecountyliving.co.uk", "penarthtimes.co.uk", "pensions-insight.co.uk",
"prestwichandwhitefieldguide.co.uk", "redditchadvertiser.co.uk", "redhillandreigatelife.co.uk",
"reward-guide.co.uk", "richmondandtwickenhamtimes.co.uk", "romseyadvertiser.co.uk",
"runcornandwidnesworld.co.uk", "s1cars.com", "s1community.com", "s1homes.com", "s1jobs.com", "s1rental.com",
"salisburyjournal.co.uk", "smallholder.co.uk", "somersetcountygazette.co.uk", "southendstandard.co.uk",
"southwalesargus.co.uk", "southwalesguardian.co.uk", "southwestfarmer.co.uk", "stalbansreview.co.uk",
"sthelensstar.co.uk", "stourbridgenews.co.uk", "strategic-risk-global.com", "streathamguardian.co.uk",
"surreycomet.co.uk", "suttonguardian.co.uk", "swindonadvertiser.co.uk", "tewkesburyadmag.co.uk",
"theargus.co.uk", "theboltonnews.co.uk", "thenational.scot", "thenorthernecho.co.uk", "thescottishfarmer.co.uk",
"thestrad.com", "thetelegraphandargus.co.uk", "thewestmorlandgazette.co.uk", "thisisthewestcountry.co.uk",
"thurrockgazette.co.uk", "times-series.co.uk", "tivysideadvertiser.co.uk", "wandsworthguardian.co.uk",
"warringtonguardian.co.uk", "watfordobserver.co.uk", "wearvalleyadvertiser.co.uk", "westerntelegraph.co.uk",
"wharfedaleobserver.co.uk", "wilmslowguardian.co.uk", "wiltsglosstandard.co.uk", "wiltshiretimes.co.uk",
"wimbledonguardian.co.uk", "wirralglobe.co.uk", "witneygazette.co.uk", "worcesternews.co.uk",
"yeovilexpress.co.uk", "yorkpress.co.uk"])) {
a.readOnly("_sp_", null);
}
if (a.domCmp(["animes-mangas-ddl.com", "animmex.co", "avmoo.com", "btaia.com", "cda-online.pl", "cheminots.net",
"computerworm.net", "coolsoft.altervista.org", "corepacks.com", "crackhex.com", "darkstars.org", "dasolo.org",
"europeup.com", "fullstuff.net", "hisse.net", "leporno.org", "linkdrop.net", "lolsy.tv", "mamahd.com",
"naturalbd.com", "noticiasautomotivas.com.br", "nrj.fr", "openload.us", "pizzamaking.com", "revclouds.com",
"revealedtricks4u.com", "sadeempc.com", "socketloop.com", "srnk.co", "thailande-fr.com", "tusoft.org",
"uploadshub.com", "urbanplanet.org", "yourlifeupdated.net", "zeusnews.it"])) {
a.filter("setTimeout", a.matchMethod.string, "bab_elementid");
}
if (a.domCmp(["anizm.com"])) {
a.always(function () {
a.win.stopAdBlock = {};
});
}
if (a.domCmp(["antennesport.com", "serverhd.eu"])) {
a.ready(function () {
a.$("#pub .pubclose").remove();
a.$("#pub .embed iframe").attr("src", "/embed/embed.php");
});
}
if (a.domCmp(["apkmirror.com"])) {
a.readOnly("doCheck", function () { });
}
if (a.domCmp(["armorgames.com"])) {
a.readOnly("ga_detect", null);
}
if (a.domCmp(["arsopo.com", "buzina.xyz", "farmet.info", "kitorelo.com", "omnipola.com", "porosin.co.uk",
"rimladi.com", "rimleno.com", "simple4alls.com"])) {
a.css("#adsframe { height: 151px; }");
a.ready(function () {
a.$("#adsframe").remove();
a.$("#remove-over").click();
});
}
if (a.domCmp(["atdhe.al", "atdhe.bz", "atdhe.li", "atdhe.me", "atdhe.mx", "atdhe.ru", "atdhe.se",
"atdhe.to", "atdhe.top", "firstrow.co", "firstrow1us.eu", "firstrows.biz", "firstrows.co",
"firstrows.org", "firstrows.ru", "firstrows.tv", "firstrowsportes.com", "firstrowsportes.tv",
"firstrowus.eu", "firstsrowsports.eu", "hahasport.me", "justfirstrowsports.com", "myp2p.biz",
"myp2p.com", "myp2p.ec", "myp2p.eu", "myp2p.la", "myp2p.sx", "myp2p.tv", "myp2p.ws", "wiziwig.ru",
"wiziwig.sx", "wiziwig.to", "wiziwig.tv"])) {
a.filter("open");
a.always(function () {
a.cookie("adb", "1");
a.css("#bannerInCenter, #hiddenBannerCanvas { display: none; }");
a.cookie("anCookie", "true");
a.win.anOptions = {};
});
}
if (a.domCmp(["auto-motor-i-sport.pl", "menshealth.pl", "mojeauto.pl", "motocykl-online.pl", "runners-world.pl",
"womenshealth.pl"])) {
a.ready(function () {
if (a.win.location.pathname.startsWith("/welcome-page")) {
a.redirect(a.$("#timeLink").attr("href"));
}
});
}
if (a.domCmp(["automobile-sportive.com"])) {
a.css(".myTestAd { height: 51px; display: none; }");
}
//Rules:B
if (a.domCmp(["bakersfield.com"])) {
a.readOnly("AD_SLOT_RENDERED", true);
}
if (a.domCmp(["backin.net"])) {
a.css("#divad { height: 31px; }");
}
if (a.domCmp(["badcomics.it", "badgames.it", "badtv.it", "badtaste.it"])) {
a.cookie("adBlockChecked", "disattivo");
}
if (a.domCmp(["bc.vc"])) {
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
}
if (a.domCmp(["bhaskar.com", "divyabhaskar.co.in"])) {
a.readOnly("openPopUpForBreakPage", function () { });
a.readOnly("canABP", true);
a.readOnly("canCheckAds", true);
}
if (a.domCmp(["beppegrillo.it", "la-cosa.it", "tzetze.it"])) {
a.generic.FuckAdBlock("CADetect", "cadetect");
}
if (a.domCmp(["beta.speedtest.net"])) {
a.readOnly("adsOoklaComReachable", true);
a.readOnly("scriptsLoaded", function () { });
}
if (a.domCmp(["betterdocs.net"])) {
a.filter("eval", a.matchMethod.string, "eval(function(p,a,c,k,e,d)");
}
if (a.domCmp(["bg-gledai.tv"])) {
a.css(".myAd { height: 1px; }");
}
if (a.domCmp(["bigdownloader.com"])) {
a.ready(function () {
a.$("#anti_adblock").remove();
});
}
if (a.domCmp(["binbucks.com"])) {
a.readOnly("testJuicyPay", true);
a.readOnly("testSensePay", true);
}
if (a.domCmp(["bitcoinaliens.com"])) {
a.bait("ins", ".adsbygoogle");
}
if (a.domCmp(["bitcoiner.net", "litecoiner.net"])) {
a.bait("div", "#tester");
a.bait("div", "#ad-top");
}
if (a.domCmp(["bitcoinker.com"])) {
a.readOnly("claim", function () {
return true;
});
a.ready(function () {
a.$("#E33FCCcX2fW").remove();
});
}
if (a.domCmp(["bitcoinzebra.com", "moonbit.co.in", "moondoge.co.in", "moonliteco.in"])) {
a.ready(function () {
a.$("#AB, #E442Dv, #eCC5h").remove();
});
}
if (a.domCmp(["bitvisits.com"])) {
a.readOnly("blockAdblockUser", function () { });
}
if (a.domCmp(["bknime.com", "debrido.com", "go4up.com"])) {
a.css(".myTestAd { height: 1px; }");
}
if (a.domCmp(["blockadblock.com"])) {
a.filter("eval");
a.ready(function () {
a.$("#babasbmsgx").remove();
});
}
if (a.domCmp(["bluesatoshi.com"])) {
a.css("#test { height: 280px; }");
a.bait("div", "#test");
}
if (a.domCmp(["bokepspot.com"])) {
a.cookie("hideDialog", "hide");
a.ready(function () {
a.$("#tupiklan").remove();
});
}
if (a.domCmp(["bolor-toli.com"])) {
a.on("load", function () {
a.$(".banner").html("<br>").css("height", "1px");
});
}
if (a.domCmp(["burning-feed.com"])) {
a.readOnly("ads_enable", function () { });
}
if (a.domCmp(["business-standard.com"])) {
a.readOnly("adsLoaded", 1);
a.cookie("_pw", "t");
}
if (a.domCmp(["businessinsider.com", "chip.de", "comicbook.com"])) {
a.noAccess("stop");
}
if (a.domCmp(["businesstoday.in", "intoday.in", "lovesutras.com"])) {
a.css("#adbocker_alt { display: none; }");
a.readOnly("openPopup", function () { });
}
if (a.domCmp(["businesstoday.in", "dl-protect.com", "doatoolsita.altervista.org", "drivearabia.com", "filecom.net",
"free-movie-home.com", "generatupremium.biz", "kooora.com", "mega-debrid.eu", "newsinlevels.com",
"pc.online143.com", "pipocas.tv", "premiumst0re.blogspot.com", "putlocker.com", "sockshare.com",
"str3am.altervista.org", "str3amtv.altervista.org", "str3amtv.co.nr", "vipracing.biz"])) {
a.filter("alert");
}
if (a.domCmp(["buzina.xyz"])) {
a.css("#adsframe { height: 151px; }");
a.ready(function () {
const elem = a.$("iframe[src*='.php?hash=']");
if (elem.length > 0) {
let parts = elem.attr("src").split("/");
parts[2] = "arsopo.com";
elem.attr("src", parts.join("/"));
}
});
}
//Rules:C
if (a.domCmp(["canalplus.fr"])) {
let original; //Will be set later
let currentVideoId = null; //So we don't switch unles it's different
let videoElem; //Current video player element, used to replace it when changing episode
const newFunc = function (onglet, liste, page, pid, ztid, videoId, progid) {
if (videoId !== currentVideoId) {
currentVideoId = videoId;
videoSwitch(videoId);
}
original.apply(a.win, arguments);
};
const videoSwitch = function (videoID) {
videoElem.text("Loading...");
GM_xmlhttpRequest({
method: "GET",
url: "http://service.canal-plus.com/video/rest/getVideos/cplus/" +
videoID + "?format=json",
onload: function (res) {
try {
const response = JSON.parse(res.responseText);
const url = response.MEDIA.VIDEOS.HD;
if (url) {
const tempElem = a.$(a.nativePlayer(url + "?secret=pqzerjlsmdkjfoiuerhsdlfknaes"));
videoElem.after(tempElem).remove();
videoElem = tempElem;
} else {
throw "Media URL Not Found";
}
} catch (err) {
a.config.debugMode && a.out.error("uBlock Protector failed to find media URL! ");
}
},
onerror: function () {
a.config.debugMode && a.out.error("uBlock Protector failed to load media JSON! ");
}
});
};
a.ready(() => {
original = a.win.changeOngletColonneCentrale;
a.win.changeOngletColonneCentrale = newFunc;
videoElem = a.$("#onePlayerHolder");
if (currentVideoId = videoElem.data("video")) {
videoSwitch(currentVideoId);
}
});
}
if (a.domCmp(["cbox.ws"])) {
a.readOnly("koddostu_com_adblock_yok", true);
}
if (a.domCmp(["cda.pl"])) {
a.readOnly("adblockV1", true);
}
if (a.domCmp(["citationmachine.net"])) {
a.cookie("sbm_cm_citations", "0");
}
if (a.domCmp(["cityam.com", "computerworlduk.com", "techworld.com", "v3.co.uk"])) {
a.ready(function () {
a.$("#r3z-wait").remove();
a.$(".r3z-hide").removeClass("r3z-hide");
a.win._r3z = null;
});
}
if (a.domCmp(["cleodesktop.com"])) {
a.bait("div", "#myTestAd");
}
if (a.domCmp(["cloudwebcopy.com"])) {
a.filter("setTimeout");
}
if (a.domCmp(["clubedohardware.com.br"])) {
if (a.win.location.host.includes("forum")) {
a.css("#banner, script { height: 51px; }");
a.bait("div", "#banner");
} else {
a.bait("div", ".banner_topo");
}
a.ready(function () {
if (a.win.location.host.includes("forum")) {
a.win.addBlocking.hide();
a.win.addBlocking.kill();
} else {
a.doc.body.id = "";
a.$(".adblock").remove();
}
});
}
if (a.domCmp(["cnbeta.com"])) {
a.readOnly("JB", function () { });
}
if (a.domCmp(["comicallyincorrect.com"])) {
a.observe("insert", (node) => {
if (node && node.tagName === "DIV" && node.innerHTML && node.innerHTML.includes("Paid Content:")) {
node.remove();
}
});
}
if (a.domCmp(["comptoir-hardware.com"])) {
a.readOnly("adblock", "non");
}
if (a.domCmp(["crackacc.com", "fpabd.com", "referencemega.com"])) {
a.cookie("_lbGatePassed", "true");
}
if (a.domCmp(["cubeupload.com"])) {
a.filter("document.write", a.matchMethod.string, "Please consider removing adblock to help us pay our bills");
}
if (a.domCmp(["cwtv.com"])) {
a.readOnly("wallConfig", false);
a.readOnly("CWTVIsAdBlocking", undefined);
}
//Rules:D
if (a.domCmp([["d3brid4y0u.info", "dramapassion.com", "easybillets.com", "fileice.net", "freeallmusic.info",
"nosteam.ro", "online.ua", "openrunner.com", "osoarcade.com", "putlocker.com", "sockshare.com", "spox.fr",
"tv3.co.nz", "yooclick.com", "yovoyages.com"]])) {
a.bait("div", "#tester");
}
if (a.domCmp(["dailybitcoins.org"])) {
a.ready(function () {
a.$(".ad-img").remove();
});
}
if (a.domCmp(["dasolo.co"])) {
a.win.eval = function () { };
a.noAccess("adblockblock");
a.bait("div", "#loveyou");
a.readOnly("nocontext", null);
a.readOnly("mischandler", null);
a.readOnly("disableselect", null);
a.filter("document.addEventListener", a.matchMethod.stringExact, "contextmenu");
}
if (a.domCmp(["dawn.com"])) {
a.generic.FuckAdBlock("DetectAdBlock", "detectAdBlock");
}
if (a.domCmp(["dbplanet.net"])) {
a.cookie("newnoMoreAdsNow", "1");
}
if (a.domCmp(["ddlfrench.org"])) {
a.ready(function () {
a.$("#dle-content .d-content").removeClass();
a.$("#content").attr("id", "");
});
}
if (a.domCmp(["debrastagi.com"])) {
a.ready(function () {
a.$("#stp-main").remove();
a.$("#stp-bg").remove();
});
}
if (a.domCmp(["debrid.us", "debridfast.com", "getdebrid.com", "leecher.us"])) {
a.css(".myTestAd, .my24Ad, .nabil { height: 1px; }");
a.ready(function () {
a.$("#simpleAd").html(`<p style="display:none;">debridfast.com</p>`);
})
}
if (a.domCmp(["debrideurstream.fr"])) {
a.css("#content div[id][align=center] { height: 12px; }");
}
if (a.domCmp(["debridnet.com"])) {
a.noAccess("_pop");
}
if (a.domCmp(["debridnet.com", "livedebrid.com"])) {
a.css(".myTestAd2 { height: 5px; }");
a.bait("div", ".myTestAd2");
}
if (a.domCmp(["demo-phoenix.com", "dpstream.net", "filmstreaming-hd.com", "filmvf.net",
"gaara-fr.com", "gaytube.com", "gum-gum-streaming.com", "hentaifr.net", "hentaihaven.org",
"jeu.info", "jeu.video", "manga-news.com", "mangas-fr.com", "narutoshippudenvf.com",
"sofoot.com", "thebadbuzz.com", "tuxboard.com", "xstory-fr.com"])) {
a.css("body {visibility: visible;}");
}
if (a.domCmp(["di.se"])) {
a.ready(function () {
a.$("#header_overlay").remove();
a.$("#message_modal").remove();
});
}
if (a.domCmp(["diarioinformacion.com"])) {
a.readOnly("pr_okvalida", true);
}
if (a.domCmp(["discoveryrom.org"])) {
a.win.adsbygoogle = [];
}
if (a.domCmp(["dovathd.com"])) {
a.ready(function () {
a.$(".onp-sl-social-buttons-enabled").remove();
a.$(".onp-sl-content").show();
});
}
if (a.domCmp(["dplay.com", "dplay.dk", "dplay.se"])) {
let date = new a.win.Date();
date.setDate(date.getDate() + 365);
const timestamp = date.getTime().toString();
const value = JSON.stringify({
"notificationSubmission": "submitted",
"reportingExpiry": timestamp,
"notificationExpiry": timestamp
});
a.cookie("dsc-adblock", value);
}
//Rules:E
if (a.domCmp(["e24.no", "vg.no"])) {
a.css(".ad { display: none; }");
a.readOnly("__AB__", function () { });
}
if (a.domCmp(["eami.in"])) {
a.always(function () {
a.cookie("ad_locked", "1");
});
}
if (a.domCmp(["easyvideo.me", "playbb.me", "videowing.me", "videozoo.me"])) {
a.ready(function () {
$(".safeuploada-content").css("background", "transparent");
});
}
if (a.domCmp(["eb.dk", "ekstrabladet.dk"])) {
a.noAccess("eb");
}
if (a.domCmp(["eclypsia.com"])) {
a.generic.FuckAdBlock("MggAbd", "mggAbd");
}
if (a.domCmp(["elahmad.com"])) {
a.css("#adblock { height: 1px; }");
}
if (a.domCmp(["elektroda.pl"])) {
a.filter("setTimeout", a.matchMethod.string, "adBlockTest.offsetHeight");
}
if (a.domCmp(["emuparadise.me"])) {
a.always(function () {
a.$("h2:contains('Bandwidth is expensive')").parent().remove();
});
}
if (a.domCmp(["epiotrkow.pl"])) {
a.bait("div", "#adboxx");
}
if (a.domCmp(["esmas.com"])) {
a.readOnly("opened_adbblock", false);
}
if (a.domCmp(["europe1.fr"])) {
a.generic.FuckAdBlock("FabInstance", "fabInstance");
}
if (a.domCmp(["eurotransport.de"])) {
a.generic.FuckAdBlock(a.uid(), "antiAdBlock");
}
if (a.domCmp(["eventhubs.com"])) {
a.bait("div", "#blahyblaci1");
}
if (a.domCmp(["eventosppv.me"])) {
a.ready(function () {
a.$("#nf37").remove();
});
}
if (a.domCmp(["ewallstreeter.com"])) {
a.readOnly("OAS_rdl", 1);
}
if (a.domCmp(["exrapidleech.info"])) {
a.filter("eval");
a.readOnly("PopAds", "this is a string");
a.cookie("popcashpuCap", "1");
a.cookie("popcashpu", "1");
a.ready(() => {
a.$(".alert-danger.lead:contains('block')").remove();
a.$("p:contains('Please disable ads block')").remove();
a.$("p:contains('Please turn on popup')").remove();
});
}
if (a.domCmp(["extratorrent.cc", "extratorrent.com"])) {
a.cookie("ppu_delay", "1");
a.cookie("ppu_main", "1");
a.cookie("ppu_sub", "1");
a.cookie("ppu_show_on", "1");
}
//Rules:F
if (a.domCmp(["faqmozilla.org", "gamespowerita.com", "kingmaker.news", "next-episode.net",
"receive-a-sms.com", "ringmycellphone.com", "thememypc.com", "todayidol.com", "wakeupcallme.com"])) {
a.always(function () {
a.win.google_jobrunner = {};
});
}
if (a.domCmp(["filecom.net", "mwfiles.net", "skippyfile.com", "up-flow.org", "upshare.org"])) {
a.bait("div", "#add");
}
if (a.domCmp(["filecore.co.nz"])) {
a.css(".adsense { height: 5px; }");
}
if (a.domCmp(["filespace.com"])) {
a.generic.FuckAdBlock(a.uid(), "fAB");
}
if (a.domCmp(["filmy.to", "histock.info"])) {
a.win.open = function () {
return { closed: false };
};
}
if (a.domCmp(["filmyiseriale.net"])) {
a.ready(function () {
a.win.konik = 1;
});
}
if (a.domCmp(["finalservers.net"])) {
a.ready(function () {
a.win.videojs("video_1").videoJsResolutionSwitcher();
});
}
if (a.domCmp(["financialexpress.com", "indianexpress.com", "jansatta.com"])) {
a.readOnly("RunAds", true);
}
if (a.domCmp(["firstonetv.eu"])) {
a.readOnly("blocked", function () { });
a.readOnly("adFuckBlock", function () { });
}
if (a.domCmp(["flashx.tv"])) {
a.filter("document.addEventListener", a.matchMethod.RegExp, /^(mousedown|keydown|contextmenu)$/);
}
if (a.domCmp(["fmovies.is", "fmovies.se", "fmovies.to", "thevideo.me"])) {
a.win.open = function () { };
}
if (a.domCmp(["folha.uol.com.br"])) {
a.readOnly("paywall_access", true);
a.readOnly("folha_ads", true);
}
if (a.domCmp(["forbes.com"])) {
if (a.win.location.pathname.includes("/welcome")) {
a.cookie("welcomeAd", "true", 86400000, "/");
a.cookie("dailyWelcomeCookie", "true", 86400000, "/");
a.win.location = cookie("toUrl") || "http://www.forbes.com/";
}
}
if (a.domCmp(["forum.pac-rom.com"])) {
a.bait("div", ".banner_ads");
}
if (a.domCmp(["fourchette-et-bikini.fr", "meteocity.com"])) {
a.readOnly("adProtect", 1);
}
if (a.domCmp(["fox.com.tr"])) {
a.readOnly("adblockDetector", {
init: function () { }
});
}
if (a.domCmp(["foxvalleyfoodie.com"])) {
a.patchHTML(function (html) {
return html.replace(/<script.*\/wp-includes\/js\/(?!jquery|comment|wp-embed).*<\/script>/g,
"<script>console.error('Uncaught AdBlock Error: Admiral AdBlock detectors are not allowed on this " +
"device! ');<\/script>");
});
}
if (a.domCmp(["freebitcoins.nx.tc", "getbitcoins.nx.tc"])) {
a.readOnly("ad_block_test", function () {
return false;
});
}
if (a.domCmp(["freecoins4.me"])) {
a.readOnly("check", function () {
return false;
});
}
if (a.domCmp(["freedom-ip.com"])) {
a.css(".pub_vertical ins, .pub_vertical div { height: 11px; }");
}
if (a.domCmp(["freegamehosting.nl"])) {
a.bait("div", "#adtest");
}
if (a.domCmp(["freegameserverhost.com"])) {
a.css("#fab13 { height: 11px; }");
}
if (a.domCmp(["freepdf-books.com"])) {
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
}
if (a.domCmp(["freeskier.com"])) {
a.ready(function () {
a.$("#adb-not-enabled").css("display", "");
a.$("#videoContainer").css("display", "");
});
}
if (a.domCmp(["freesportsbet.com", "sportsplays.com"])) {
a.bait("div", "#ad-tester");
}
if (a.domCmp(["freetvall.com"])) {
a.readOnly("clickNS", function () { });
}
if (a.domCmp(["freezedownload.com"])) {
a.ready(function () {
if (a.win.location.href.includes("freezedownload.com/download/")) {
a.$("body > div[id]").remove();
}
});
}
if (a.domCmp(["fullhdzevki.com"])) {
a.readOnly("check", function () { });
}
//Rules:G
if (a.domCmp(["gaana.com"])) {
const noop = function () { };
const pType = {
_auds: "", //all
isauds: false,
lotamecall: false,
itemInfo: [],
colombiaAdeURL: "",
deviceType: "", //desktop
colombiaCookies: "",
privateMode: true,
adIconInfo: [],
fns: { push: noop },
update: noop,
colombiaAdRequest: noop,
resetAdDivClass: noop,
clear: noop,
clearData: noop,
notifyColombiaAd: noop,
refresh: noop,
refreshFBAd: noop,
timeoutHandler: noop,
load: noop,
loadDataAd: noop,
drawIconHtml: noop,
loadDisplayAd: noop,
jsonCallback: noop,
getCB: noop,
repllaceMacro: noop,
getAdJSON: noop,
fireImpression: noop,
fireThirdPartyImp: noop,
storeThirdPartyImprURL: noop,
dataResponseFormat: noop,
storeAdIcons: noop,
checkDevice: noop,
dfpLog: noop
};
let obj = function () { };
obj.prototype = pType;
a.readyOnly("colombia", new obj());
}
if (a.domCmp(["game-debate.com"])) {
a.readOnly("ad_block_test", function () { });
}
if (a.domCmp(["gamepedia.com"])) {
a.on("load", function () {
a.$("#atflb").remove();
});
}
if (a.domCmp(["gamer.com.tw"])) {
a.readOnly("AntiAd", null);
};
if (a.domInc(["gamereactor"])) {
a.cookie("countdownToAd", "-1");
}
if (a.domCmp(["gametrailers.com"])) {
a.ready(function () {
a.$("#ad_blocking").remove();
});
}
if (a.domCmp(["gamezhero.com"])) {
a.readOnly("ads", true);
a.timewarp("setInterval", a.matchMethod.string, "function (){var _0x");
}
if (a.domCmp(["gamingroom.tv"])) {
a.readOnly("adblock_detect", function () { });
a.readOnly("GR_adblock_hide_video", function () { });
a.readOnly("adblock_video_msg_start", function () { });
a.readOnly("adblock_video_msg_stop", function () { });
a.readOnly("disable_chat", function () { });
}
if (a.domCmp(["gaybeeg.info"])) {
a.observe("insert", function (node) {
if (node.innerHTML && node.innerHTML.includes("AdBloker Detected")) {
node.remove();
}
});
a.ready(function () {
a.$("script").each(function (i, elem) {
if (!elem || !elem.innerHTML) {
return;
}
if (a.sha256(elem.innerHTML) ===
"b36b90f86ec7192c0942df3d504279967eb80dded90587a87010fdbbcc167923") {
a.win.eval(elem.innerHTML);
return;
}
if (elem.innerHTML.includes("/* Collapse Functions, version 2.0")) {
const temp = elem.innerHTML.split("/* Collapse Functions, version 2.0");
if (temp.length === 2) {
const hash = a.sha256(temp[1]);
if (hash ===
"382f3949955c262f392d50e681f373c50b779b7503a303b93a03070940532af7") {
a.win.eval(elem.innerHTML);
return;
} else if (a.config.debugMode) {
a.out.warn("Archive related inline script does not match expected hash: ");
a.out.warn(temp[1]);
a.out.warn("Hash: " + hash);
}
}
}
if (a.config.debugMode) {
a.out.warn("This inline script is not executed: ")
a.out.warn(elem.innerHTML);
a.out.warn("Hash: " + a.sha256(elem.innerHTML));
}
})
a.$(".download a.button").each(function (i, el) {
a.$(el).removeClass("locked").attr("href", a.$(el).data("href"))
.removeAttr("data-href");
});
});
}
if (a.domCmp(["gearsuite.com", "insidegov.com", "mooseroots.com"])) {
a.css("html,body { overflow-y: scroll; } .BOX-wrap { display: none; }");
}
if (a.domCmp(["gelbooru.com"])) {
if (a.win.location.pathname === "/") {
a.on("load", function () {
a.$("div").each(function () {
if (a.$(this).text() === "Have you first tried disabling your AdBlock?") {
a.$(this).empty();
} else {
a.config.debugMode && a.out.log(a.$(this).text());
}
});
});
} else {
a.noAccess("abvertDar");
}
}
if (a.domCmp(["generatupremium.biz"])) {
a.cookie("genera", "false");
}
if (a.domCmp(["gentside.com"])) {
a.readOnly("adblockPopup", {
"IS_BLOCKED": false,
"init": function () { },
"removeAdblockPopup": function () { },
});
}
if (a.domCmp(["ghame.ru"])) {
a.$("<p class='adsbygoogle' style='display:none;'>hi</p>").prependTo("html");
}
if (a.domCmp(["globeslot.com"])) {
a.bait("div", "#add");
a.bait("div", "#add1");
}
if (a.domCmp(["goodcast.co"])) {
a.ready(function () {
if (a.win.location.pathname.startsWith("/stream.php")) {
a.$(".advertisement").hide();
a.$(".adsky iframe").attr("src", "about:blank");
}
});
}
//Rules:H
if (a.domCmp(["haaretz.co.il", "themarker.com"])) {
a.win.AdBlockUtil = {};
}
if (a.domCmp(["hackinformer.com"])) {
a.ready(() => {
a.$(".special-message-wrapper:contains(your ad blocker)").remove();
});
}
if (a.domInc(["hackintosh"])) {
a.readOnly("eval", function () {
a.$("#babasbmsgx").remove();
a.doc.body.style.setProperty("visibility", "visible", "important");
});
if (a.domCmp(["hackintosh.computer"], true)) {
a.noAccess("google_jobrunner");
}
}
if (a.domCmp(["hanime.tv"])) {
const _open = a.win.open;
a.win.open = function () {
_open.apply(a.win, arguments);
window.close();
};
a.readOnly("BetterJsPop", function () { });
}
if (a.domCmp(["happy-hack.ru"])) {
a.css("#blockblockF4 {visibility:invisible;display:none;} #blockblockF4 td {visibility:invisible;display:" +
"none;} #blockblockF4 td p {visibility:invisible;display:none;} #blockblockD3 {visibility:visible;display:block;}");
}
if (a.domCmp(["happytrips.com", "mid-day.com"])) {
a.readOnly("canRun", true);
}
if (a.domCmp(["hellsmedia.com", "leaguesecretary.com", "teknogods.com"])) {
a.bait("div", "#adpbtest");
}
if (a.domCmp(["hentai.to"])) {
a.css("#hentaito123 { height: 11px; }");
}
if (a.domCmp(["hentaihaven.org"])) {
a.noAccess("desktop_variants");
}
if (a.domCmp(["homerun.re", "strikeout.co", "strikeout.me", "vipapp.me", "vipbox.biz", "vipbox.co", "vipbox.eu",
"vipbox.nu", "vipbox.so", "vipbox.sx", "vipbox.tv", "vipboxsa.co", "vipboxtv.co", "vipleague.ch", "vipleague.co",
"vipleague.is", "vipleague.me", "vipleague.mobi", "vipleague.se", "vipleague.sx", "vipleague.tv", "vipleague.tv",
"vipleague.ws"])) {
a.readOnly("iExist", true);
a.cookie("xclsvip", "1");
a.css(".vip_052x003 { height: 250px; }");
a.css(".vip_09x827 { height: 26px; }");
a.css("#overlay { display: none; }");
}
if (a.domCmp(["hotslogs.com"])) {
a.win.MonkeyBroker = {};
a.noAccess("MonkeyBroker.regSlotsMap");
}
if (a.domCmp(["hqq.tv"])) {
a.ready(function () {
if (a.win.location.pathname === "/player/embed_player.php") {
a.$("form[id^='form-']").submit();
}
});
}
//Rules:I
if (a.domCmp(["idlelivelink.blogspot.com"])) {
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
a.ready(() => {
a.doc.body.oncontextmenu = null;
a.doc.body.onkeydown = null;
a.doc.body.onmousedown = null;
});
}
if (a.domCmp(["imageraider.com"])) {
a.bait("div", "#myGContainer");
}
if (a.domCmp(["ilive.to", "streamlive.to"])) {
a.on("load", function () {
if (a.win.location.pathname.toLowerCase().startsWith("/embedplayer.php")) {
a.win.setTimeout(function () {
a.win.removeOverlayHTML();
}, 1000);
}
});
}
if (a.domCmp(["independent.co.uk"])) {
a.cookie("adblock_detected", "ignored");
}
if (a.domCmp(["infojobs.com.br"])) {
a.win.webUI = {};
a.win.webUI.Utils = {};
a.defineProperty("webUI.Utils.StopAdBlock", {
configurable: false,
set: function () { },
get: function () {
return function () { };
}
});
}
if (a.domCmp(["inn.co.il"])) {
a.win.TRC = {};
a.win.TRC.blocker = {
states: {
ABP_DETECTION_DISABLED: -2,
ABP_NOT_DETECTED: 0,
ABP_DETECTED: 1
},
createBlockDetectionDiv: function () {
return a.doc.createElement("div");
},
isBlockDetectedOnDiv: function () {
return 0;
},
isBlockDetectedOnClassNames: function () {
return 0;
},
getBlockedState: function () {
return 0;
}
};
}
if (a.domCmp(["interfans.org"])) {
a.css(".ad_global_header { height: 1px; display: none; }");
}
if (a.domCmp(["is.fi", "viasatsport.fi"])) {
a.readOnly("Sabdetect_load", false);
if (a.domCmp(["viasatsport.fi"], true)) {
a.config.allowGeneric = false;
}
}
if (a.domCmp(["italiatv.org"])) {
a.bait("div", "#fab13");
}
//Rules:J
if (a.domCmp(["jagranjunction.com"])) {
a.readOnly("canRunAds", true);
a.readOnly("isAdsDisplayed", true);
}
if (a.domCmp(["jc-mp.com"])) {
a.css(".adsense {width: 1px; height: 1px; visibility: hidden; display: block; position: absolute;}");
}
if (a.domCmp(["jkanime.net"])) {
a.bait("div", "#reco");
}
//Rules:K
if (a.domCmp(["keezmovies.com", "extremetube.com", "mofosex.com", "spankwire.com"])) {
a.cookie("abClosed", "true");
a.cookie("hide_ad_msg", "1");
}
if (a.domCmp(["kissanime.com", "kissanime.ru", "kissanime.to"])) {
a.css("iframe[id^='adsIfrme'], .divCloseBut { display:none; }");
a.ready(function () {
const divContentVideo = a.doc.querySelector("#divContentVideo");
if (a.win.DoDetect2) {
a.win.DoDetect2 = null;
a.win.CheckAdImage = null;
} else if (divContentVideo) {
const divDownload = a.doc.querySelector("#divDownload").cloneNode(true);
a.win.setTimeout(function () {
divContentVideo.innerHTML = "";
a.win.DoHideFake();
divContentVideo.appendChild(divDownload);
a.$("iframe[id^='adsIfrme'], .divCloseBut").remove();
}, 5500);
}
});
}
if (a.domCmp(["kisscartoon.me", "kisscartoon.se"])) {
a.readOnly("xaZlE", function () { });
a.ready(function () {
a.$("iframe[id^='adsIfrme']").remove();
});
}
if (a.domInc(["knowlet3389.blogspot"])) {
a.filter("setTimeout", a.matchMethod.string, '$("#gAds").height()');
}
if (a.domCmp(["koscian.net"])) {
a.ready(function () {
a.$(".ban").remove();
});
}
if (a.domCmp(["kozaczek.pl", "zeberka.pl"])) {
a.cookie("ablc", "1");
a.cookie("cookie_policy", "1");
}
if (a.domCmp(["kuchniaplus.pl", "miniminiplus.pl", "tvn.pl", "tvn24.pl", "tvnstyle.pl", "tvnturbo.pl"])) {
const homePages = ["http://www.tvn.pl/", "http://www.tvnstyle.pl/", "http://www.tvnturbo.pl/"];
if (!homePages.includes(a.doc.location.href)) {
a.on("load", function () {
a.$(".videoPlayer").parent().after(a.nativePlayer(a.$(".videoPlayer").data("src"))).remove();
});
}
}
if (a.domCmp(["kodilive.eu"])) {
a.css(".Ad { height: 5px; }");
}
//Rules:L
if (a.domCmp(["lachainemeteo.com"])) {
a.readOnly("js_loaded", true);
}
if (a.domCmp(["lesechos.com", "lesechos.fr"])) {
a.readOnly("checkAdBlock", function () { });
a.readOnly("paywall_adblock_article", function () { });
a.readOnly("call_Ad", 1);
}
if (a.domCmp(["leveldown.fr"])) {
a.bait("div", "#adblock");
a.bait("div", "#adblocktest");
}
if (a.domCmp(["lg-firmware-rom.com"])) {
a.readOnly("killads", true);
}
if (a.domCmp(["libertaddigital.com"])) {
a.readOnly("ad_already_played", true);
a.readOnly("puedeMostrarAds", true);
}
if (a.domCmp(["link.tl"])) {
a.css(".adblock { height:1px; }");
a.readOnly("adblocker", false);
}
if (a.domCmp(["linkneverdie.com"])) {
a.readOnly("eval", function () {
a.$("div").each(function () {
if (this.id.length === 30) {
this.remove();
}
});
});
a.ready(function () {
a.$(".SC_TBlock").each(function () {
if (a.$(this).text() === "loading...") {
this.remove();
}
});
a.$("#wrapper").show();
});
}
if (a.domCmp(["linternaute.com"])) {
let val;
a.defineProperty("OO", {
configurable: false,
set: function (arg) {
val = arg;
},
get: function () {
val && (val.AAB = null);
return val;
}
});
}
if (a.domCmp(["litv.tv"])) {
a.bait("div", ".player_mask");
}
if (a.domCmp(["livemint.com"])) {
a.readOnly("canRun1", true);
}
if (a.domCmp(["lol.moa.tw"])) {
a.ready(function () {
a.win.MoaObj = a.win.MoaObj || {};
a.win.MoaObj.ad = a.win.MoaObj.ad || {};
a.win.MoaObj.ad.hasAdblock = function () {
return false;
};
a.win.MoaObj.ad.checkABP = function () {
return false;
};
});
}
if (a.domCmp(["luxyad.com"])) {
a.ready(function () {
if (a.win.location.pathname === "/Information.php") {
const href = location.href;
a.redirect(href.substr(href.indexOf("url=") + 4, href.length));
}
});
}
//Rules:M
if (a.domCmp(["mac4ever.com"])) {
a.readOnly("coquinou", function () { });
}
if (a.domCmp(["manga9.com", "mangabee.co"])) {
a.css(".adblock { height: 31px; }");
}
if (a.domCmp(["mangabird.com"])) {
a.css(".afs_ads { height: 5px; }");
}
if (a.domCmp(["mangahost.com"])) {
a.readOnly("testDisplay", false);
}
if (a.domCmp(["mangamint.com"])) {
a.css(".ad728 { height: 31px; }");
}
if (a.domCmp(["mangas.zlx.com.br", "mangasproject.com.br", "mangasproject.net.br"])) {
a.generic.FuckAdBlock(a.uid(), "mangasLeitorSlider");
}
if (a.domCmp(["mariage-franco-marocain.net"])) {
a.css("#my_ad_div {height: 1px;}");
}
if (a.domCmp(["maxdebrideur.com"])) {
a.css(".clear + div[id] { height: 12px; }");
}
if (a.domCmp(["mega-debrid.eu"])) {
a.on("load", function () {
const elem = a.$(".realbutton")[0];
elem.setAttribute("onclick", "");
elem.setAttribute("type", "submit");
});
}
if (a.domCmp(["megogo.net"])) {
a.readOnly("adBlock", false);
a.readOnly("showAdBlockMessage", function () { });
}
if (a.domCmp(["mexashare.com"])) {
a.readOnly("BetterJsPop", function () { });
}
if (a.domCmp(["micast.tv"])) {
a.cookie("vid_main", "true");
a.cookie("vid_sub", "true");
a.on("load", function () {
if (a.win.removeOverlayHTML) {
a.win.removeOverlayHTML();
}
})
}
if (a.domCmp(["mil.ink"])) {
a.bait("div", "#ads_div");
}
if (a.domCmp(["mma-core.com"])) {
a.noAccess("displayAdBlockedVideo");
}
if (a.domCmp(["mobile-tracker-free.com"])) {
a.css("#myAds { height: 1px; }");
}
if (a.domCmp(["money.pl", "parenting.pl", "sportowefakty.wp.pl", "tech.wp.pl"], true)) {
let mid; //Media ID of next video
let midArray1 = []; //Media IDs method 1
let midArray2 = []; //Media IDs method 2
let url = null; //URL of the next video
let replaceCounter = 0; //The number of video players that are replaced
let loadCounter = 0; //The index of next item to load
let networkBusy = false; //A flag to prevent sending a new request before the first one is done
let networkErrorCounter = 0; //Will stop sending request if this is over 5
let isInBackground = false; //A flag to prevent excessive CPU usage when the tab is in background
let containerMatcher = ".wp-player-outer, .player__container, .wp-player, .embed-container";
const main = function () {
if (isInBackground) {
return;
}
a.config.debugMode && a.out.log(midArray1, midArray2);
try {
if (a.win.WP.player.list.length > midArray1.length) {
let thisMid = a.win.WP.player.list[midArray1.length].p.url;
if (thisMid) {
thisMid = thisMid.split("=")[1];
}
if (thisMid) {
midArray1.push(thisMid);
}
}
} catch (err) {
a.config.debugMode && a.out.error("uBlock Protector failed to find media ID with method 1! ");
}
if (a.$(containerMatcher).length > 0) {
const elem = a.$(containerMatcher).first().find(".titlecont a.title");
let thisMid = elem.attr("href");
if (thisMid) {
thisMid = thisMid.match(/mid[=,]([0-9]+)/)[1].toString();
elem.remove();
}
if (thisMid) {
midArray2.push(thisMid);
}
}
if (loadCounter === replaceCounter) {
if (networkBusy || networkErrorCounter > 5) {
return;
}
let mid;
let midArray = (midArray1.length > midArray2.length) ? midArray1 : midArray2;
if (midArray.length > loadCounter) {
mid = midArray[loadCounter];
} else {
return;
}
networkBusy = true;
GM_xmlhttpRequest({
method: "GET",
url: "http://wp.tv/player/mid," + mid + ",embed.json",
onload: function (res) {
try {
const response = JSON.parse(res.responseText);
for (let i = 0; i < response.clip.url.length; i++) {
let item = response.clip.url[i];
if (item.quality === "HQ" && item.type.startsWith("mp4")) {
url = item.url;
break;
}
}
if (!url) {
throw "Media URL Not Found";
}
loadCounter++;
networkErrorCounter = 0;
} catch (err) {
a.config.debugMode && a.out.error("uBlock Protector failed to find media URL! ");
networkErrorCounter += 1;
}
networkBusy = false;
},
onerror: function () {
a.config.debugMode && a.out.error("uBlock Protector failed to load media JSON! ");
networkErrorCounter += 0.5;
networkBusy = false;
}
});
} else {
if (a.$(containerMatcher).length > 0) {
if (a.config.debugMode) {
a.out.log("Replacing player... ");
a.out.log(a.$(containerMatcher)[0]);
}
a.$(containerMatcher).first().after(a.nativePlayer(url)).remove();
url = null;
replaceCounter++;
}
}
};
a.win.setInterval(main, 1000);
a.on("focus", function () {
isInBackground = false;
});
a.on("blur", function () {
isInBackground = true;
});
}
if (a.domCmp(["monnsutogatya.com"])) {
a.ready(function () {
a.css("#site-box {display:block;}");
a.$("#for-ad-blocker").remove();
});
}
if (a.domCmp(["mrtzcmp3.net"])) {
a.css(".rtm_ad { height: 1px; }");
}
if (a.domCmp(["mtlblog.com"])) {
a.readOnly("puabs", function () { });
}
if (a.domCmp(["mufa.de"])) {
a.css("#leaderboard { height: 5px; }");
a.css("#large-rectangle { height: 5px; }");
a.css("#ad-header-468x60 { height: 5px; }");
}
if (a.domCmp(["multiup.eu", "multiup.org"])) {
a.cookie("visit", "1");
a.readOnly("hi", function () { });
a.ready(function () {
a.$(".alert").each(function () {
if (a.$(this).text().includes("Tired of ads ? Remove them")) {
a.$(this).remove();
}
});
const elem = a.$("#M130814ScriptRootC54591");
elem.text().includes("Loading...") && elem.remove();
});
}
if (a.domCmp(["mybank.pl", "rapidgrab.pl"])) {
a.filter("addEventListener", a.matchMethod.string, ".nextFunction()}");
}
//Rules:N
if (a.domInc(["nana10"])) {
a.css("#advert-tracker { height: 1px; }");
}
if (a.domCmp(["narkive.com"])) {
a.readOnly("adblock_status", function () {
return false;
});
}
if (a.domCmp(["naruto-mx.net", "onepiece-mx.net", "scan-mx.com"])) {
a.readOnly("ad_block_test", function () { });
a.ready(function () {
a.$("#yop").attr("id", "");
});
}
if (a.domCmp(["nbc.com"])) {
a.noAccess("mps");
}
if (a.domCmp(["ndtv.com"])) {
a.readOnly("___p__p", 1);
a.readOnly("getNoTopLatestNews", function () { });
}
if (a.domCmp(["new-skys.net"])) {
a.noAccess("alert");
}
if (a.domCmp(["newstatesman.com"])) {
a.cookie("donationPopup", "hide");
}
if (a.domCmp(["newyorker.com"])) {
a.generic.FuckAdBlock("SniffAdBlock", "sniffAdBlock");
}
if (a.domCmp(["nicematin.com"])) {
a.noAccess("checkAds");
}
if (a.domCmp(["notre-planete.info"])) {
a.readOnly("pubpop", function () { });
}
//Rules:O
if (a.domCmp(["oneadfaucet.com"])) {
a.css("#test { height: 250px; }");
a.bait("div", "#test");
}
if (a.domCmp(["onemanga2.com"])) {
a.css(".afs_ads { height: 5px; }");
}
if (a.domCmp(["oneplaylist.eu.pn"])) {
a.readOnly("makePopunder", false);
}
if (a.domCmp(["onmeda.de"])) {
a.readOnly("$ADP", true);
a.readOnly("sas_callAd", function () { });
a.readOnly("sas_callAds", function () { });
}
if (a.domCmp(["onvasortir.com"])) {
a.readOnly("JeBloque", function () { });
}
if (a.domCmp(["openload.co", "openload.io", "openload.tv"])) {
a.readOnly("adblock", false);
a.readOnly("adblock2", false);
a.readOnly("popAdsLoaded", true);
}
if (a.domCmp(["ouo.io"])) {
a.win.localStorage.setItem("snapLastPopAt", (new a.win.Date()).getTime());
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
}
//Rules:P
if (a.domCmp(["paidverts.com"])) {
a.bait("div", ".afs_ads");
}
if (a.domCmp(["pastebin.com"])) {
a.readOnly("abdd", "");
}
if (a.domCmp(["pasted.co", "tny.cz"])) {
a.cookie("__.popunderCap", "1");
a.cookie("__.popunder", "1");
}
if (a.domCmp(["pcgames-download.net"])) {
a.always(function () {
a.cookie("noAdblockNiceMessage", "1");
a.win.mgCanLoad30547 = true;
});
}
if (a.domCmp(["picload.org"])) {
a.cookie("pl_adblocker", "false");
a.ready(function () {
a.win.ads_loaded = true;
a.win.imageAds = false;
a.$("div[oncontextmenu='return false;']").remove();
});
}
if (a.domCmp(["pinkrod.com", "wetplace.com"])) {
a.readOnly("getAd", function () { });
a.readOnly("getUtm", function () { });
}
if (a.domInc(["pinoy1tv"])) {
a.readOnly("allowads", 1);
}
if (a.domCmp(["pipocas.tv"])) {
a.cookie("popup_user_login", "yes");
}
if (a.domInc(["planetatvonlinehd.blogspot"]) || a.domCmp(["planetatvonlinehd.com"])) {
a.css(".adsantilok { height: 1px; }");
}
if (a.domCmp(["play.bandit.se", "play.lugnafavoriter.com", "play.radio1.se", "play.rixfm.se"])) {
a.on("load", function () {
a.win.setTimeout(function () {
a.win.player_load_live(a.win.stream_id);
}, 1000);
});
}
if (a.domCmp(["play.tv3.lt", "tv3play.tv3.ee", "tvplay.skaties.lv", "viafree.dk", "viafree.no", "viafree.se"])
&& a.config.debugMode) {
const handler = function () {
const elem = a.$("#video-player");
if (elem.length === 0) {
a.win.setTimeout(handler, 1000);
return;
}
let videoID = a.win.vfAvodpConfig.videoId;
if (!videoID) {
a.win.setTimeout(handler, 1000);
return;
}
const proxy = "http://www.sagkjeder.no/p/browse.php?u=";
GM_xmlhttpRequest({
method: "GET",
url: proxy + "http://playapi.mtgx.tv/v3/videos/stream/" + videoID,
onload: function (result) {
a.out.info("Response received: ");
a.out.info(result.responseText);
parser(result.responseText);
}
});
};
const parser = function (data) {
let streams;
try {
const parsedData = JSON.parse(data);
streams = parsedData.streams
} catch (err) {
a.config.debugMode && a.out.error("uBlock Protector failed to find video URL! ");
return;
}
let sources = [], types = [];
if (streams.high && streams.high !== "") {
sources.push(streams.high);
types.push("video/mp4");
} else if (streams.hls && streams.hls !== "") {
sources.push(streams.hls);
types.push("application/x-mpegURL");
} else if (streams.medium && streams.medium !== "") {
sources.push(streams.medium);
types.push(streams.medium.startsWith("rtmp") ? "rtmp/mp4" : "application/f4m+xml");
} else {
a.config.debugMode && a.out.error("uBlock Protector failed to find video URL! ");
return;
}
a.out.info("Potential media URLs: ");
a.out.info([streams.high, streams.hls, streams.medium]);
a.out.info("Used media URL: ");
a.out.info(sources);
a.videoJS.init(a.videoJS.plugins.hls);
const height = a.$("#video-player").height();
const width = a.$("#video-player").width();
a.$("#video-player").after(a.videoJS(sources, types, width, height)).remove();
handler();
};
handler();
}
if (a.domCmp(["player.pl"])) {
//@pragma-keepline Based on solution from Anti-Adblock Killer
//@pragma-keepline License: https://github.com/reek/anti-adblock-killer/blob/master/LICENSE
a.on("load", function () {
let elem;
if (a.$("header.detailImage").length > 0) {
elem = a.$("header.detailImage");
} else {
return;
}
const parts = a.doc.location.href.split(/[.,]/);
const id = parts[parts.length - 2];
const params = {
platform: "ConnectedTV",
terminal: "Panasonic",
format: "json",
authKey: "064fda5ab26dc1dd936f5c6e84b7d3c2",
v: "3.1",
m: "getItem",
id: id
};
const api = "https://api.tvnplayer.pl/api/?" + a.serialize(params);
const proxy = "http://www.proxy.xmc.pl/index.php?hl=3e5&q=";
const requestURL = (a.cookie("tvn_location2") === "1") ? api : proxy +
a.win.encodeURIComponent(api);
GM_xmlhttpRequest({
method: "GET",
url: requestURL,
onload: function (result) {
let url;
try {
let data = JSON.parse(result.responseText);
let vidSources = data.item.videos.main.video_content;
if (vidSources[1].url) {
elem.html("").append(a.nativePlayer(vidSources[1].url));
a.$("video").css("max-height", "540px");
} else if (vidSources[0].src) {
a.config.debugMode && a.out.error("uBlock Protector will not replace this video player " +
"because it is DRM prtected. ");
}
} catch (err) {
a.config.debugMode && a.out.error("uBlock Protector failed to find media URL! ");
return;
}
}
});
});
}
if (a.domCmp(["plej.tv"])) {
a.css(".advert_box { height: 1px; }");
}
if (a.domCmp(["pornve.com"])) {
a.readOnly("adxjwupdate", 1);
}
if (a.domCmp(["preemlinks.com"])) {
a.css("#divads { height: 1px; }");
}
if (a.domCmp(["pregen.net"])) {
a.cookie("pgn", "1");
}
if (a.domCmp(["primeshare.tv"])) {
a.bait("div", "#adblock");
}
if (a.domCmp(["privateinsta.com"])) {
a.ready(function () {
a.win.dont_scroll = false;
a.$("#overlay_div").remove();
a.$("#overlay_main_div").remove();
});
}
if (a.domCmp(["pro-ddl.ws", "pro-sport.ws", "pro-tect.ws", "pro-zik.ws"])) {
a.cookie("visitedf", "true");
a.cookie("visitedh", "true");
}
if (a.domCmp(["programme-tv.net", "voici.fr"])) {
a.bait("div", "#sas_script2");
}
if (a.domCmp(["prototurk.com"])) {
a.css("#reklam { height: 1px; }");
}
if (a.domCmp(["psarips.com"])) {
a.bait("div", "#advert");
a.noAccess("open");
}
if (a.domCmp(["pxstream.tv"])) {
a.on("load", function () {
if (a.win.location.pathname.startsWith("/embedrouter.php")) {
a.win.setTimeout(function () {
a.win.closeAd();
}, 1000);
}
});
}
//Rules:Q
if (a.domCmp(["qnimate.com"])) {
a.readOnly("adBlockDetected", function () { });
}
//Rules:R
if (a.domCmp(["rapid8.com"])) {
a.ready(function () {
a.$("div.backk + #blcokMzg").remove();
a.$("div.backk").remove();
});
}
if (a.domCmp(["ratemyprofessors.com"])) {
a.readOnly("adBlocker", false);
a.filter("addEventListener", a.matchMethod.RegExp, /^resize$/i);
}
if (a.domCmp(["razercrypt.com"])) {
a.css("#test { height: 250px; }");
a.bait("div", "#test");
}
if (a.domCmp(["receive-sms-online.info"])) {
a.filter("addEventListener", a.matchMethod.stringExact, `function (b){return"undefined"!=typeof n&&` +
`n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}`);
}
if (a.domCmp(["richonrails.com"])) {
a.ready(function () {
const adsByGoogleHtml = `"<ins+id="aswift_0_expand"+style="display:inline-table;border:none;height:90px;` +
`margin:0;padding:0;position:relative;visibility:visible;width:750px;background-color:transparent"><ins+id="aswi` +
`ft_0_anchor"+style="display:block;border:none;height:90px;margin:0;padding:0;position:relative;visibility:visib` +
`le;width:750px;background-color:transparent"><iframe+marginwidth="0"+marginheight="0"+vspace="0"+hspace="0"+all` +
`owtransparency="true"+scrolling="no"+allowfullscreen="true"+onload="var+i=this.id,s=window.google_iframe_oncopy` +
`,H=s&amp;&amp;s.handlers,h=H&amp;&amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;&amp;d&am` +
`p;&amp;(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else+if(h.match){try{h=s.upd(h,i)}catch(e){}w.` +
`location.replace(h)}}"+id="aswift_0"+name="aswift_0"+style="left:0;position:absolute;top:0;"+width="750"+frameb` +
`order="0"+height="90"></iframe></ins></ins>"`;
a.$.ajax({
url: a.$(".article-content").data("url"),
dataType: "script",
method: "post",
data: {
html: adsByGoogleHtml
},
success: function (result) {
const exec = result.replace("$('.article-content')", "$('.article-content-2')");
a.win.eval(exec);
}
});
a.$(".article-content").after(`<div class="article-content-2"></div>`).remove();
});
}
if (a.domCmp(["rmprepusb.com"])) {
a.cookie("jot_viewer", "3");
}
if (a.domCmp(["rockfile.eu"])) {
a.ready(function () {
a.$("<iframe>").attr("src", "about:blank").css("visibility", "hidden").appendTo("body");
});
}
if (a.domCmp(["rtl.de"])) {
a.ready(function () {
a.$("div[data-widget='video']").each(function () {
const url = a.$(this).data("playerLayerCfg").videoinfo.mp4url;
a.$(this).after(a.nativePlayer(url));
a.$(this).remove();
});
});
}
//Rules:S
if (a.domCmp(["sandiegouniontribune.com"])) {
const token = a.win.setInterval(function () {
if (a.$("#reg-overlay").length) {
a.$("#reg-overlay").remove()
a.$("<style> html[data-dss-meterup], [data-dss-meterup] body { o" +
"verflow: scroll !important; } </style>").appendTo("head");
a.win.clearInterval(token);
}
}, 1000);
a.filter("addEventListener", a.matchMethod.stringExact, "scroll");
}
if (a.domCmp(["sapib.ca"])) {
a.readOnly("Abd_Detector", function () { });
}
if (a.domCmp(["satoshiempire.com"])) {
a.css("#test { height: 250px; }");
a.bait("div", "#test");
}
if (a.domCmp(["sawlive.tv"])) {
a.ready(function () {
if (a.win.location.pathname.toLowerCase().startsWith("/embed/watch/")) {
a.win.display = false;
a.win.closeMyAd();
}
});
}
if (a.domCmp(["sc2casts.com"])) {
a.readOnly("scriptfailed", function () { });
a.filter("setTimeout");
a.win._gaq = { push: function () { } }
a.readOnly("showdialog", function () { });
a.readOnly("showPopup2", function () { });
}
if (a.domCmp(["securenetsystems.net"])) {
a.readOnly("iExist", true);
}
if (a.domCmp(["sharecast.to"])) {
a.ready(function () {
if (a.win.location.pathname.startsWith("/embed.php")) {
const token = a.win.setInterval(function () {
a.cookie("vid_main", "true");
a.cookie("vid_sub", "2");
a.cookie("vid_delay", "true");
}, 100);
a.win.setTimeout(function () {
a.win.clearInterval(token);
}, 5000);
a.$("#table1").remove();
}
});
}
if (a.domCmp(["shink.in"])) {
a.readOnly("RunAds", true);
a.win.open = function () { };
a.readOnly("jsPopunder", function () { });
const _createElement = a.doc.createElement;
a.doc.createElement = function (name) {
switch (name.toLowerCase()) {
case "a":
return null;
case "iframe":
let elem = _createElement.apply(a.doc, arguments);
return elem;
default:
return _createElement.apply(a.doc, arguments);
}
};
if (a.win.location.pathname.startsWith("/go/")) {
a.ready(() => {
const link = a.doc.getElementById("btn-main");
const i = link.href.lastIndexOf("http");
const url = link.href.substr(i);
a.redirect(url);
});
}
}
if (a.domCmp(["showsport-tv.com"])) {
a.ready(function () {
if (a.win.location.pathname.startsWith("/ch.php")) {
a.$("#advertisement, .advertisement").remove();
}
});
}
if (a.domCmp(["sidereel.com"])) {
a.protectFunc();
a.filter("setTimeout", a.matchMethod.RegExp, /function\ \_0x[a-z0-9]{4,8}\(/);
}
if (a.domCmp(["simply-debrid.com"])) {
a.win.adsbygoogle = {};
a.win.adsbygoogle.loaded = true;
}
if (a.domCmp(["skiplimite.tv"])) {
a.css("div.addthis_native_toolbox + div[id] { height: 12px; }");
}
if (a.domInc(["slideplayer"])) {
a.on("load", function () {
a.win.force_remove_ads = true;
const slide_id = a.win.get_current_slide_id();
const slide_srv = a.doc.getElementById("player_frame").src.split("/")[3];
const time = 86400 + a.win.Math.floor(a.win.Date.now() / 1000);
const secret = a.win.encodeURIComponent(a.win.strtr(a.win.MD5.base64("secret_preved slideplayer never solved " +
time + slide_id + ".ppt"), "+/", "- "));
const url = "http://player.slideplayer.org/download/" + slide_srv + "/" + slide_id + "/" + secret + "/" +
time + "/" + slide_id + ".ppt";
let links = a.doc.querySelectorAll("a.download_link");
for (let i = 0; i < links.length; i++) {
let events = a.win.$._data(links[i]).events.click;
events.splice(0, events.length);
links[i].href = url;
}
});
}
if (a.domCmp(["snsw.us"])) {
a.css("#ad_1 { height: 1px; }");
}
if (a.domCmp(["sports.fr"])) {
a.generic.FuckAdBlock("FabInstance", "fabInstance");
}
if (a.domCmp(["stream4free.eu"])) {
a.bait("div", "#jpayday");
a.readOnly("jpayday_alert", 1);
}
if (a.domCmp(["superanimes.com"])) {
a.bait("div", "#bannerLoja");
}
//Rules:T
if (a.domCmp(["temp-mail.org"])) {
a.readOnly("checkadBlock", function () { });
}
if (a.domCmp(["tf2center.com"])) {
a.filter("setInterval", a.matchMethod.string, '"/adblock"');
a.filter("setTimeout", a.matchMethod.stringExact, "function (){B(F+1)}");
}
if (a.domCmp(["tg007.net"])) {
a.bait("div", "#gads");
a.$("#gads").hide();
}
if (a.domCmp(["tgo-tv.com"])) {
a.css("#adb, #bannerad1, .load_stream { display: none; }");
a.bait("div", "#tester");
a.on("load", function () {
a.win.threshold = 1000;
a.$(".chat_frame").remove();
})
}
if (a.domCmp(["thebatavian.com"])) {
a.readOnly("broadstreet", true);
}
if (a.domCmp(["thechive.com"])) {
a.readOnly("stephaneDetector", {
hook: function (cb) {
cb(false);
},
init: function () { },
broadcastResult: function () { }
});
}
if (a.domCmp(["theinquirer.net"])) {
a.readOnly("_r3z", true);
}
if (a.domCmp(["themeslide.com"])) {
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
}
if (a.domCmp(["thepcspy.com"])) {
a.css(".myTestAd { height: 1px; }");
a.css(".blocked { display: none; }");
a.ready(function () {
a.$(".blocked").remove();
})
}
if (a.domCmp(["thesimsresource.com"])) {
a.readOnly("gadsize", true);
a.readOnly("iHaveLoadedAds", true);
}
if (a.domCmp(["theweatherspace.com"])) {
a.bait("div", "#ab-bl-advertisement");
}
if (a.domCmp(["thomas-n-ruth.com"])) {
a.css(".Google { height: 5px; }");
}
if (a.domCmp(["titulky.com"])) {
a.generic.FuckAdBlock("FADB", "fADB");
}
if (a.domCmp(["topserialy.sk"])) {
a.generic.FuckAdBlock(a.uid(), "sratNaVas");
}
if (a.domCmp(["topzone.lt"])) {
a.css(".forumAd { height: 1px; display: none; }");
}
if (a.domCmp(["torrent-tv.ru"])) {
a.readOnly("c_Oo_Advert_Shown", true);
}
if (a.domCmp(["translatica.pl"])) {
a.readOnly("adblock", false);
}
if (a.domCmp(["turkanime.tv"])) {
a.always(function () {
a.win.adblockblock = function () { };
a.win.BlokKontrol = {};
});
}
if (a.domCmp(["turkdown.com"])) {
a.ready(function () {
a.$("#duyuru").remove();
});
}
if (a.domCmp(["tvregionalna24.pl"])) {
let text = [];
a.readOnly("videojs", function (a, b, func) {
let temp = "(" + func.toString().match(/var _ended=(.*);var _skipButton/)[1] + ")();";
temp = temp.replace("player.dispose();", "");
text.push(temp);
});
a.on("load", function replace() {
if (text.length > 0 && a.$(".vjs-poster").length > 0) {
for (let i = 0; i < text.length; i++) {
a.win.eval(text[i]);
}
} else {
a.win.setTimeout(replace, 1000);
}
});
}
if (a.domCmp(["tweaktown.com"])) {
a.on("load", function () {
a.css("html, body { overflow: scroll; }");
const blockScreenRemover = function () {
if (a.$("body").children("div").last().text().indexOf("Ads slowing you down?") > -1) {
a.$("body").children("div").last().remove();
a.$("body").children("div").last().remove();
} else {
a.win.setTimeout(blockScreenRemover, 500);
}
};
a.win.setTimeout(blockScreenRemover, 500);
});
}
//Rules:U
if (a.domCmp(["undeniable.info"])) {
a.bait("div", "#testadblock");
}
if (a.domCmp(["up-4ever.com"])) {
a.filter("setTimeout", a.matchMethod.string, "$('#adblock_detected').val(1);");
a.css("#hiddensection { display: block; }");
a.ready(function () {
a.$("#hiddensection").show();
a.$("#hiddensection2").remove();
});
}
if (a.domCmp(["urlchecker.net"])) {
a.css("#adchecker { height: 20px; }");
}
if (a.domCmp(["urle.co"])) {
a.filter("setTimeout", a.matchMethod.string, "captchaCheckAdblockUser();");
a.filter("eval");
a.timewarp("setInterval", a.matchMethod.stringExact, "1000");
}
if (a.domCmp(["usapoliticstoday.com"])) {
a.filter("eval");
}
if (a.domCmp(["userscloud.com"])) {
a.on("load", function () {
a.$("#dl_link").show();
a.$("#adblock_msg").remove();
});
}
//Rules:V
if (a.domCmp(["vgunetwork.com"])) {
a.ready(function () {
a.cookie("stopIt", "1");
a.$("#some_ad_block_key_close").click()
});
}
if (a.domCmp(["videowood.tv"])) {
a.filter("open");
a.win.config = {};
a.readOnly("adb_remind", false);
}
if (a.domCmp(["vidlox.tv"])) {
a.readOnly("xRds", false);
a.readOnly("cRAds", true);
a.readOnly("adb", 0);
}
if (a.domCmp(["vivo.sx"])) {
a.on("load", function aa() {
a.$("#alert-throttle").remove();
a.$("button#access").removeAttr("id").removeAttr("disabled").html("Continue To Video");
a.win.setTimeout(function () {
a.$("input[name='throttle']").remove();
}, 1000);
});
}
if (a.domCmp(["ville-ideale.com"])) {
a.readOnly("execsp", function () { });
}
//Rules:W
if (a.domCmp(["wakanim.tv"])) {
a.css("#detector { display: none; }");
a.css("#nopub { display: block; }");
}
if (a.domCmp(["watcharab.com"])) {
a.css("#adblock { height: 5px; }");
}
if (a.domCmp(["webqc.org"])) {
a.filter("setTimeout");
}
if (a.domCmp(["whiskypreise.com", "whiskyprices.co.uk", "whiskyprijzen.com", "whiskyprix.fr"])) {
a.readOnly("OA_show", true);
}
if (a.domCmp(["whosampled.com"])) {
a.readOnly("showAdBlockerOverlay", function () { });
}
if (a.domCmp(["wired.com"])) {
a.readOnly("google_onload_fired", true);
}
if (a.domCmp(["workupload.com"])) {
a.always(function () {
a.css(".adBlock, .adsbygoogle, #sad { height: 11px; }");
});
}
if (a.domCmp(["wowhead.com"])) {
a.ready(function () {
a.$("div[id^='ad-']").parent().parent().parent().remove();
});
}
if (a.domCmp(["wstream.video"])) {
a.css("#adiv { height:4px; }");
}
if (a.domCmp(["wtfbit.ch"])) {
a.readOnly("writeHTMLasJS", function () { });
}
if (a.domCmp(["wtkplay.pl"])) {
a.readOnly("can_run_ads", true);
}
//Rules:X
if (a.domCmp(["xnxx.com"])) {
a.cookie("wpn-popupunder", "1");
a.readOnly("openpop", function () { });
}
//Rules:Y
if (a.domCmp(["yellowbridge.com"])) {
a.readOnly("finalizePage", function () { });
}
if (a.domCmp(["yes.fm"])) {
a.readOnly("com_adswizz_synchro_initialize", function () { });
}
if (a.domCmp(["youporn.com", "youporngay.com"])) {
a.cookie("adblock_message", "closed");
}
//Rules:Z
if (a.domCmp(["zap.in"])) {
let val;
a.defineProperty("zapVM", {
configurable: false,
set: function (arg) {
val = arg;
},
get: function () {
if (val.verify) {
val.verify = (function () {
callAPI(
"VerifyZapClick",
{
linkRef: val.linkRef(),
linkClickRef: $("#LinkClickRef")[0].value,
recaptchaResponse: val.recaptchaResponse()
},
"Verify",
"Verifying",
function (response) {
if (response.result) {
a.redirect(response.zapURL);
} else {
showMessageModal("Verify failed", response.resultHtml, response.result);
}
},
null,
function () {
grecaptcha.reset();
}
);
}).bind(val);
}
return val;
}
});
}
if (a.domCmp(["zoomtv.me"])) {
a.readOnly("iaxpEnabled", true);
}
if (a.domCmp(["zrabatowani.pl"])) {
a.cookie("adblockAlert", "yes");
}
//Generic
a.generic();