Block-Adblocker-blocker

Blocks Anti-adblockers on several Indian News Sites

As of 2016-07-04. See the latest version.

  1. // ==UserScript==
  2. // @name Block-Adblocker-blocker
  3. // @namespace http://www.piyushsoni.com
  4. // @description Blocks Anti-adblockers on several Indian News Sites
  5. // @include http://timesofindia.indiatimes.com/*
  6. // @include http://www.hindustantimes.com/*
  7. // @include http://*.ndtv.com/*
  8. // @run-at document-start
  9. // @version 1.10
  10. // @grant none
  11. // @author Piyush Soni (irrationalapps+blockerblocker@gmail.com)
  12. // @license GNU LGPL v3 (https://www.gnu.org/licenses/lgpl-3.0.html)
  13. // ==/UserScript==
  14.  
  15. var url = window.location.href.toLowerCase();
  16. var domain = new URL(url).hostname.replace("www.","");
  17. var mapPagesBlockerBlockers = {};
  18. var countStopped = 0;
  19. var countToCheck = 0;
  20. var inlineBlocker = new String("");
  21. var externalBlocker = new String("");
  22.  
  23.  
  24. //Add new blocker list here
  25. ///mapPagesBlockerBlockers['<domain>'] = ['<external script source match>','<inline script source match>', <stop any 1 r more(count)>]
  26. mapPagesBlockerBlockers['indiatimes.com'] = ['detector/minify-1.cms', 'blocked.cms', 1];
  27. mapPagesBlockerBlockers['hindustantimes.com'] = ['BlockerScript', 'checkAdBlocker', 2];
  28. mapPagesBlockerBlockers['ndtv.com'] = ['', 'canRunAds', 1];
  29.  
  30.  
  31.  
  32. var arrDomain = domain.split('.');
  33. if(arrDomain.length > 2)
  34. domain = arrDomain[arrDomain.length - 2] + "." + arrDomain[arrDomain.length - 1];
  35.  
  36. function scriptListener(e)
  37. {
  38. let src = e.target.src;
  39. if ((src && externalBlocker.length > 0 && src.indexOf(externalBlocker) >= 0) || (inlineBlocker.length > 0 && e.target.innerHTML.indexOf(inlineBlocker) >= 0))
  40. {
  41. //Stop this nonsense.
  42. e.preventDefault();
  43. e.stopPropagation();
  44. console.log("Blocked an Anti-adblocker for " + domain);
  45.  
  46. countStopped++;
  47. if(countStopped >= countToCheck)
  48. {
  49. //We're done, remove the event listener now
  50. window.removeEventListener(e.type, arguments.callee, true);
  51. }
  52. }
  53. }
  54.  
  55. if(domain in mapPagesBlockerBlockers)
  56. {
  57. externalBlocker = mapPagesBlockerBlockers[domain][0];
  58. inlineBlocker = mapPagesBlockerBlockers[domain][1];
  59. countToCheck = mapPagesBlockerBlockers[domain][2];
  60. window.addEventListener('beforescriptexecute', scriptListener, true);
  61. }