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*

目前为 2017-04-02 提交的版本。查看 最新版本

// ==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/*
// @match       *://kissanime.ru/*
// @match       *://kisscartoon.se/*
// @version     2017.04.01.1
// @grant       none
// @run-at      document-start
// ==/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();
  
  if (!e.target.src)
    for (var i of ['charCodeAt', 'BB_', 'taboola', 'plusone', 'analytics'])
      if (e.target.textContent.indexOf(i) != -1)
        e.preventDefault();

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

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

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*='300px'][style*='250px'],
     div[style*='margin: 0px auto'],
     div[style*='height: 600px'],
     div[style*='820px'][style*='215px'],
     div[style*='728px'][style*='200px'],
     li#liFlappy, li#liReportError,
     body > script[src],
     script[data-cfasync]
  `))
  {
    //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));
})