Not even the people from Easylist seem to fight this site anymore, someone had to try as this looks popular enough. *sigh*
当前为
// ==UserScript==
// @name KissAnime Anti-Adblock Blocker
// @namespace userscripts.org/user/swyter
// @description Not even the people from Easylist seem to fight this site anymore, someone had to try as this looks popular enough. *sigh*
// @match http://kissanime.com/*
// @version 3.3.3
// @grant GM_addStyle
// @run-at document-end
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=swyterzone%40gmail%2ecom&item_number=swydonations¤cy_code=EUR
// ==/UserScript==
/* run this just on the parent page, not in sub-frames */
if (window.parent !== window)
throw "stop execution";
/* get rid of timeouts right away, they aren't used for anything useful */
console.log("Started KissAnime Anti-Adblock Blocker, waiting for the DOM to load...");
function when_external_loaded()
{
console.log("DOM loaded, processing stuff...");
/* remove the anti-adblock script */
if(thing=document.querySelector("#adCheck3 + script"))
{
thing.parentElement.removeChild(thing);
}
/* get rid of the cruft */
for(elem in cruft=document.querySelectorAll("iframe[src*='ad'], .divCloseBut, .clear2, div[style*='!important']"))
{
if(typeof cruft[elem]==="object")
{
console.log("removing cruft: ", cruft[elem]);
cruft[elem].parentElement.removeChild(cruft[elem]);
}
}
/* custom timeout override */
(function(timeout_func)
{
window.setTimeout = function(arg, time)
{
if(typeof arguments[0] === "string" && arguments[0].match(/detect/i) != null)
{
console.info("No timeout for you, AdBlock blocker!", arguments.callee.caller.toString(), arguments);
return 0;
}
else
{
timeout_func.apply(this,arguments);
}
}
}(window.setTimeout))
/* let's hook the AJAX requests, just in case, and filter out the so-called 'ban'
avoiding potential fake points loss and such, what a scummy move by the site owner */
(function(xhr_proto_open)
{
XMLHttpRequest.prototype.open = function(method,url)
{
if(url.match(/ban|Banned|GotBanned/) != null)
{
console.info("Intercepted shitty 'ban' request!", arguments);
this.abort();
}
else
{
xhr_proto_open.apply(this,arguments);
}
}
}(XMLHttpRequest.prototype.open))
}
/* inject this cleaning function right in the page */
window.document.head.appendChild(
inject_fn = document.createElement("script")
);
inject_fn.innerHTML = when_external_loaded.toString() + ";when_external_loaded()";
/* fix upper links positioning after removing the cruft and
add styling rules for my custom lightsoff lampshade */
GM_addStyle("a#qualityChoose \
{ \
display: block; \
} \
\
div.swylightsoff \
{ \
right: 0; \
width: 100%; \
height: 100%; \
top: 0; \
left: 0; \
position: fixed; \
background: rgba(0,0,0,0.96); \
} \
\
#divContentVideo \
{ \
z-index: 999; \
} \
\
#switch \
{ \
z-index: auto; \
}");
/* make the *lights off* button work */
document.getElementById("switch").addEventListener("click",function(e)
{
lights_off = document.querySelector('.swylightsoff');
if(!lights_off)
{
console.log("Lights off");
window.document.getElementById("switch").appendChild(
inject_lo = document.createElement("div")
);
inject_lo.classList.add("swylightsoff");
}
else
{
console.log("Lights on");
lights_off.parentElement.removeChild(lights_off);
}
e.stopPropagation();
})