// ==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 2015.07.22 // @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 // @downloadURL none // ==/UserScript== /* run this just on the parent page, not in sub-frames */ if (window.parent !== window) throw "stop execution"; console.log("Started KissAnime Anti-Adblock Blocker, waiting for the DOM to load..."); function when_external_loaded() { console.log("DOM loaded, processing stuff..."); /* override the check in Chrome and call it a day */ Object.defineProperty(window, 'DoDetect2', { configurable: false, writable: false, value: function() { console.info("check overriden!"); } }); /* remove the anti-adblock script */ if((thing = document.querySelector("#adCheck3 + script"))) { console.log("Getting rid of the script itself..."); thing.parentElement.removeChild(thing); } /* get rid of the cruft */ for(var elem in (cruft = document.querySelectorAll(" iframe[src*='ad'], \ .divCloseBut, \ .clear2, \ div[style*='!important'], \ div[id^='divFloat'], \ .episodeList div[style$='float: left;'], \ .episodeList .clear, \ div[style$='height:80px'], \ img[id^='adCheck']"))) { if(typeof cruft[elem] === "object") { console.log("removing cruft: ", cruft[elem]); cruft[elem].parentElement.removeChild(cruft[elem]); } } /* 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) { window.XMLHttpRequest.prototype.open = function(method, url) { if(url.match(/ban|Banned|GotBanned/gi) !== 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 to avoid silly sandbox-related greasemonkey limitations */ window.document.head.appendChild( inject_fn = document.createElement("script") ); inject_fn.innerHTML = '(' + when_external_loaded.toString() + ')()';