Block-Adblocker-blocker

Blocks Anti-adblockers on several Indian News Sites

  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. // @include http://*.anandabazar.com/*
  9. // @include http://indianexpress.com/*
  10. // @run-at document-start
  11. // @version 1.40
  12. // @grant none
  13. // @author Piyush Soni (irrationalapps+blockerblocker@gmail.com)
  14. // @license GNU LGPL v3 (https://www.gnu.org/licenses/lgpl-3.0.html)
  15. // ==/UserScript==
  16.  
  17. var url = window.location.href.toLowerCase();
  18. var domain = new URL(url).hostname.replace("www.","");
  19. var mapPagesBlockerBlockers = {};
  20. var countStopped = 0;
  21. var countToCheck = 0;
  22. var arrPageBlockers;
  23.  
  24.  
  25. //Add new blocker list here
  26. ///mapPagesBlockerBlockers['<domain>'] = ['<external script source match>','<inline script source match>', <stop any 1 r more(count)>]
  27. mapPagesBlockerBlockers['indiatimes.com'] = [['detector', 'blocked.cms', 'opacity'], 1];
  28. mapPagesBlockerBlockers['hindustantimes.com'] = [['BlockerScript', 'checkAdBlocker'], 2];
  29. mapPagesBlockerBlockers['ndtv.com'] = [['canRunAds'], 1];
  30. mapPagesBlockerBlockers['anandabazar.com'] = [['custom.js', 'checkAdBlock'], 2];
  31. mapPagesBlockerBlockers['indianexpress.com'] = [['ie_block_redirect.js'], 1];
  32.  
  33.  
  34. var arrDomain = domain.split('.');
  35. if(arrDomain.length > 2)
  36. domain = arrDomain[arrDomain.length - 2] + "." + arrDomain[arrDomain.length - 1];
  37.  
  38. function scriptListener(e)
  39. {
  40. let i = 0;
  41. let src = e.target.src;
  42. let html = e.target.innerHTML;
  43. for(i=0; i < arrPageBlockers.length; ++i)
  44. {
  45. let blocker = arrPageBlockers[i];
  46. if(blocker.length > 0 && ((typeof src != "undefined" && src && src.indexOf(blocker) >= 0) || (typeof html != "undefined" && html && html.indexOf(blocker) >= 0)))
  47. {
  48. //Stop this nonsense.
  49. e.preventDefault();
  50. e.stopPropagation();
  51. console.log("Blocked an Anti-adblocker for " + domain);
  52.  
  53. countStopped++;
  54. if(countStopped >= countToCheck)
  55. {
  56. //We're done, remove the event listener now
  57. window.removeEventListener(e.type, arguments.callee, true);
  58. }
  59. }
  60. }
  61. }
  62.  
  63. if(domain in mapPagesBlockerBlockers)
  64. {
  65. arrPageBlockers = mapPagesBlockerBlockers[domain][0];
  66. countToCheck = mapPagesBlockerBlockers[domain][1];
  67. window.addEventListener('beforescriptexecute', scriptListener, true);
  68. }