Greasy Fork

KissAnime Anti-Adblock Blocker

Not even the people from Easylist seem to fight this site anymore, someone had to try as this looks popular enough. *sigh*

目前为 2016-11-25 提交的版本。查看 最新版本

// ==UserScript==
// @name        KissAnime Anti-Adblock Blocker
// @author      Swyter
// @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       *://kissanime.com/*
// @match       *://kisscartoon.me/*
// @match       *://kissanime.to/*
// @match       *://kissasian.com/*
// @match       *://kissmanga.com/*
// @match       *://readcomiconline.to/*
// @version     2016.11.25
// @grant       none
// @run-at      document-start
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=swyterzone%40gmail%2ecom&item_number=swydonations&currency_code=EUR
// ==/UserScript==

console.log('Started KissAnime Anti-Adblock Blocker, waiting for the DOM to load...');

window.addEventListener('beforescriptexecute', function(e)
{
  /* typical js kludge, holy carp, that's convoluted! */
  var element_host = ((tmp = document.createElement('a')).href = e.target.src) && tmp.host; delete tmp;

  if (e.target.src && element_host !== document.domain &&
                      element_host !== document.domain.split('.')[0] + '.disqus.com') e.preventDefault();

  console.log('[i] blocking script element: ', e.defaultPrevented, e.target.src);
});

/* override the check in Chrome and call it a day */
Object.defineProperty(window, 'DoDetect2',
{
  configurable: false,
  writable: false,
  value: function()
  {
    console.info('[/] check overriden!');
  }
});

window.addEventListener('DOMContentLoaded', function(e)
{
  console.log('DOM loaded, processing stuff...');

  /* get rid of the cruft */
  for (elem of document.querySelectorAll(`
     iframe[src*='ad']:not([src*='openload']),
    .divCloseBut,                               
    .clear2,                                    
     div[style*='!important'],                  
     div[id^='divFloat'],                       
    .episodeList div[style$='float: left;'],    
    .episodeList .clear,                        
     div[style$='height:80px'],                 
     img[id^='adCheck'],                        
     div[id^=adsFloat][style],                  
     div[id^=btnClose],                         
     div[style*='width:800px'],                 
     div[id*=fl-ads].rf-container,
     iframe[src*='Ads'],
     iframe[src*='facebook'],
     div[style*='width: 300px'][style*='height: 250px']
  `))
  {
    console.log('[-] removing cruft: ', elem);
    elem.parentElement.removeChild(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("[x] intercepted shitty 'ban' request!", arguments) && this.abort();
      }
      else
      {
        xhr_proto_open.apply(this, arguments);
      }
    };
  }(XMLHttpRequest.prototype.open));
})