Greasy Fork is available in English.

ABPVN AdsBlock

Script chặn quảng cáo,loại bỏ chờ đợi của ABPVN

2018-05-24 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name        ABPVN AdsBlock
// @namespace   ABPVN
// @author      ABPVN
// @copyright   ABPVN
// @homepage    http://abpvn.com
// @supportURL  https://github.com/abpvn/abpvn/issues
// @icon        http://abpvn.com/icon.png
// @description Script chặn quảng cáo,loại bỏ chờ đợi của ABPVN
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=donghoang.nguyen@gmail.com&item_name=ABPVN Donation
// @run-at      document-end
// @include     http://*
// @include     https://*
// @version     2.2.10.8
// @change-log  Optimize removeMgId function
// @grant       none
// ==/UserScript==
/* String Prototype */
String.prototype.startWith = function strxStart(str) {
  return this.indexOf(str) === 0;
};
String.prototype.ismatch = function (regex) {
  return this.match(regex) !== null;
};
var getAllText = function (selector) {
  var text = '';
  var list = document.querySelectorAll(selector);
  if (list)
  for (var i = 0; i < list.length; i++) {
    text += list[i].innerText;
  }
  return text;
};
var removeDuplicates = function (arr) {
  var tmp = [
  ];
  for (var i = 0; i < arr.length; i++) {
    if (tmp.indexOf(arr[i]) == - 1) {
      tmp.push(arr[i]);
    }
  }
  return tmp;
};
//Bypass Class
var byPass = {
  hideLinkUnlock: function () {
    var contentDiv = document.querySelectorAll('.onp-sl-content,.onp-locker-call,[data-locker-id]');
    if (contentDiv.length) {
      ABPVN.cTitle();
      //Add style tag to hide all .onp-sl and show all .onp-sl-content
      if (!document.getElementById('abpvn_style')) {
        var style = document.createElement('style');
        style.id = 'abpvn_style';
        style.innerHTML = '.onp-sl-content{display:block!important;}.onp-sl,.onp-sl-overlap-box{display:none!important;}';
        document.body.appendChild(style);
      }      //ShowALl ContentDiv

      for (var i in contentDiv) {
        if (contentDiv[i].firstChild && contentDiv[i].firstChild.innerText != 'Unlocked by ABPVN.COM') {
          var creditDiv = document.createElement('div');
          creditDiv.innerHTML = '<a href="http://abpvn.com" target="_blank" style="color: #08BE54;font-weight: bold;">Unlocked by ABPVN.COM</a>';
          creditDiv.style.textAlign = 'right';
          contentDiv[i].insertBefore(creditDiv, contentDiv[i].firstChild);
        }
        if(contentDiv[i].style){
          contentDiv[i].style.display = 'block';
        }
      } //Hide All LockDiv

      var lockDiv = document.querySelectorAll('.onp-sl,div[id^="content-locker"]');
      for (var j in lockDiv) {
        if(lockDiv[j].style){
          lockDiv[j].style.display = 'none !important';
          lockDiv[j].setAttribute('hidden','hidden');
        }
      }
    }
  },
  anti123link: function(){
    var allShortLink = document.querySelectorAll('a[href^="http://123link"]');
    var count = 0;
    if(allShortLink.length){
      ABPVN.cTitle();
      for(var i=0;i<allShortLink.length;i++){
        var processingLink = allShortLink[i];        
        var href = processingLink.getAttribute('href');
        var tmp = href.match(/url=(.+?)&|$/);        ;
        if(tmp[1]){
          processingLink.setAttribute('href', atob(tmp[1]));
          var oldTitle = processingLink.getAttribute('title');
          processingLink.setAttribute('title',oldTitle?(oldTitle+' '):''+'123link by pass by ABPVN');
          count++;
        }
      }
      Logger.info("By pass "+count+" 123link short");
    }
  },
  init: function () {
    window.addEventListener('DOMContentLoaded', this.hideLinkUnlock);
    window.addEventListener('load', this.hideLinkUnlock);
    this.hideLinkUnlock();
    window.addEventListener('DOMContentLoaded',  this.anti123link);
    
  }
};
//Logger Class
var Logger = {
  info: function (text) {
    console.info('ABPVN Info: ', text);
  },
  warn: function (text) {
    console.warn('ABPVN Warn: ', text);
  },
  error: function (text) {
    console.error('ABPVN Error: ', text);
  },
  log: function (text) {
    console.log('ABPVN Log: ', text);
  },
};
//get Link class
var getLink = {
  FShareConfig: function () {
    if (this.url.startWith('https://www.fshare.vn')) {
      var background_image = localStorage.off == 'true' ? 'url("http://i.imgur.com/kJnOMOB.png")' : 'url("http://i.imgur.com/2b7fN6a.png")';
      var title = localStorage.off == 'true' ? 'Bật get link fshare' : 'Tắt get link fshare';
      var html = '<div id=\'fs_click\' title=\'' + title + '\' style=\'position: fixed; right: 0; bottom: 0; width: 30px; height: 30px; border-radius: 50%; background-image: ' + background_image + '; background-size: cover; cursor: pointer; z-index: 99999;\'></div>';
      $(document).ready(function () {
        $(document.body).append(html);
        $(document).on('click', '#fs_click', function FS_on_off() {
          if (localStorage.off != 'true') {
            localStorage.off = true;
            this.style.backgroundImage = 'url("http://i.imgur.com/kJnOMOB.png")';
            this.setAttribute('title', 'Bật get link fshare');
            alert('Đã tắt get link fshare');
          }
          else {
            localStorage.off = false;
            this.setAttribute('title', 'Tắt get link fshare');
            this.style.backgroundImage = 'url("http://i.imgur.com/2b7fN6a.png")';
            alert('Đã bật get link fshare');
          }
        });
      });
    }
  },
  FShareGetLink: function () {
    if (this.url.startWith('https://www.fshare.vn/file/') && !this.url.startWith('https://www.fshare.vn/file/manager')) {
      if (localStorage.off != 'true') {
        console.info('Start get link Fshare.vn');
        $(document).ready(function () {
          var checkpassword = document.querySelector('.password-form');
          var linkcode = $('#linkcode').val();
          if (checkpassword === null) {
            var code = $('#form-download input[name="_csrf-app"]').val();           
            var data = {
              '_csrf-app': code,
              'fcode5': '',
              'linkcode': linkcode,
              'withFcode5': 0,
            };
            $.post('/download/get', data).done(function (data, statusText, xhr) {
              if (data.url === undefined) location.reload();
               else {
                if (typeof location != 'undefined') {
                  console.log('ABPVN: ' + location.href + ' -> ' + data.url);
                  location.href = data.url;
                } 
                else {
                  $('.download').prepend('<a title="Tải trực tiếp" style="padding: 5px 0;box-sizing: content-box;" class="download-btn mdc-button mdc-button--raised mdc-ripple-upgraded full-width mdc-button-primary fcode5" href="' + data.url + '">Tải trực tiếp<span>Hỗ trợ bởi abpvn.com</span></a>'
                  );
                }
              }
            }).fail(function (xhr, statusText, error) {
              alert('ABPVN: Đã có lỗi fshare hoặc file có password');
            });
          } 
          else {
            alert('ABPVN: Hãy nhập mật khẩu cho file trước');           
          }
        });
      }
      else {
        $('.download').prepend('<a title="Download nhanh qua linksvip.net" style="padding: 5px 0;box-sizing: content-box;" class="download-btn mdc-button mdc-button--raised mdc-ripple-upgraded full-width mdc-button-primary fcode5" href="http://linksvip.net?link=' + location.href + '">Tải nhanh<span>Qua dịch vụ linksvip.net</span></a>'
        );
      }
    }
  },
  mediafire_com: function () {
    if (this.url.startWith('http://www.mediafire.com/file/') || this.url.startWith('https://www.mediafire.com/file/')) {
      var a_tag = document.querySelector('.download_link a');
      var link = a_tag.getAttribute('href');
      if (link.startWith('http')) {
        document.body.innerHTML = '<center><h1>ABPVN MediaFire Download đã hoạt động</h1><a href=\'http://abpvn.com/napthe\'><h1>Ủng hộ ABPVN</h1></a><br/>Không tự tải xuống? <a href=\'' + link + '\' title=\'Download\'>Click vào đây</a></center>';
        location.href = link;
      }
    }
  },
  usercloud_com: function () {
    if (this.url.startWith('https://userscloud.com/') && this.url.length > 24) {
      var form = document.querySelector('form[name="F1"]');
      if (form) {
        form.submit();
        document.body.innerHTML = '<center><h1>ABPVN UserCloud Download đã hoạt động</h1><a href=\'http://abpvn.com/napthe\'><h1>Ủng hộ ABPVN</h1></center>';
      } else {
        var a_link = document.querySelector('h4 a.btn-success');
        if (a_link) {
          var link = a_link.getAttribute('href');
          if (link.startWith('https')) {
            location.href = link;
            document.body.innerHTML = '<center><h1>ABPVN UserCloud Download đã hoạt động</h1><a href=\'http://abpvn.com/napthe\'><h1>Ủng hộ ABPVN</h1></a><br/>Không tự tải xuống? <a href=\'' + link + '\' title=\'Download\'>Click vào đây</a></center>';
          }
        }
      }
    }
  },
  init: function () {
    this.url = location.href;
    this.FShareConfig();
    this.FShareGetLink();
    this.mediafire_com();
    this.usercloud_com();
  }
};
//Fix site class
var fixSite = {
  elementExist: function (selector) {
    var check = document.querySelector(selector);
    return check != null;
  },
  getAllText: function (selector) {
    var text = '';
    var nodeList = document.querySelectorAll(selector);
    if (nodeList) {
      for (var i in nodeList) {
        if (nodeList[i].innerText) text += nodeList[i].innerText;
      }
    }
    return text;
  },
  getScript: function (url) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.addEventListener('load', function (data) {
      var blob = new Blob([xhr.responseText], {
        type: 'text/javascript'
      });
      var url = URL.createObjectURL(blob);
      var script = document.createElement('script');
      script.src = url;
      script.type = 'text/javascript';
      document.getElementsByTagName('head')[0].appendChild(script);
    });
    xhr.send();
  },
  loadCss: function (url, id) {
    var css_tag = document.createElement('link');
    css_tag.rel = 'stylesheet';
    css_tag.id = id;
    css_tag.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(css_tag);
  },
  phim_media: function () {
    if (this.url.startWith('https://www.phim.media/')||this.url.startWith('http://www.phim.media/')) {
      var links = document.querySelectorAll('#btn-film-watch,.poster > a');
      if(links){
        for(var i=0;i<links.length;i++){          
          var href = links[i].getAttribute('href');
          href = href.match('utm_id=.*') [0].replace('utm_id=', '');
          if (href) {
            links[i].setAttribute('href', atob(href));
          } 
        }       
        ABPVN.cTitle();
      }
    }
  },
  linkneverdie_com: function () {
    if(this.url.startWith('https://linkneverdie.com/')){
      ABPVN.cTitle();
      var el=document.getElementById('wrapper');
      if(el){
        el.id="wrapper-fix-by-abpvn";
      }
    }    
  },
  hdonline_vn: function(){    
    if (this.url.startWith('http://hdonline.vn')) {         
      var links = document.querySelectorAll('a[href^="http://hub.blueserving.com/"]');
      for (var i in links) {
        var link = links[i];
        var href = link.getAttribute('href');
        href = href.match('url=.*') [0].replace('url=', '');
        if (href) {
          link.setAttribute('href', href);
        }
      }
      ABPVN.cTitle();
    }
  },
  maclife_vn: function(){
    if(this.url.startWith('https://maclife.vn/')){
      var allShortUrl=document.querySelectorAll('a[rel]');
      var count=0;
      for(var i=0;i<allShortUrl.length;i++){
        if(allShortUrl[i].innerText.indexOf('http')===0){
          allShortUrl[i].setAttribute('href',allShortUrl[i].innerText);
          count++;
        }
      }
      Logger.info("Đã xóa "+count+" link rút gọn!");
    }
  },
  aphim_co: function(){
      if (this.url.startWith('https://aphim.co/xem-phim/')) {
          ABPVN.cTitle();
          var aTagAds = document.querySelector('#video > a');
          aTagAds.setAttribute('href','#abpvn');
          aTagAds.removeAttribute('target');
          Logger.info('Đã xóa link quảng cáo!');
      }
  },
  openload: function(){
    if(this.url.match(/^(https?:)?\/\/openload\.co\/*.*/) || this.url.match(/^(https?:)?\/\/oload\.\/*.*/)){
     //Base on https://greasyfork.org/vi/scripts/17665-openload
     //
     // @run-at document-start
     //
     window.adblock=false;
     window.adblock2=false;
     window.turnoff=true;
     window.open=function(){};
     //
     // @run-at document-end
     //
     function onready(fn){if(document.readyState!='loading')fn();else document.addEventListener('DOMContentLoaded',fn);}

     onready(function(){
      if( document.location.href.match(/\/embed\//) || $('#realdl>a') )
      {
       var streamurl = '#streamurl,#streamuri,#streamurj,#adbdetect + script + div > p:nth-child(2)';
       $('#btnView').hide();
       $('#btnDl').hide();
       $('.dlButtonContainer').show();
       $('h3.dlfile.h-method').hide();
       $('.col-md-4.col-centered-sm *').remove();
       $('#mgiframe,#main>div[id*="Composite"]').remove();
       $('#downloadTimer').hide();
       $('#mediaspace_wrapper').prepend( $('<div/>').attr('id', 'realdl')
                                        .attr('style', 'position: absolute; top: 0 ; left: 0 ; right: 0; text-align: center; z-index: 9999; background-color: #00DC58; padding: .5em 0;')
                                        .on('mouseenter', function(){ $(this).fadeTo(500, 1); }).on('mouseleave', function(){ $(this).fadeTo(500, 0); })
                                        .append( $('<a/>').attr('href', '').attr('style', 'color: #fff; text-decoration: none;').html('FREE DOWNLOAD<sub>Power by abpvn.com</sub>') ) );
        if(document.location.href.match(/\/embed\//)){
         setTimeout(function(){
          $('#realdl').fadeTo(500,0);
         },1500); 
        }        
       $('#realdl').show();
       var tmrstreamurl = setInterval(function(){
        if($(streamurl).text() != '640K ought to be enough for anybody')
        {
         $('#realdl a').attr('href', '/stream/' + $(streamurl).text());
         $('#videooverlay').click();
         clearInterval(tmrstreamurl);
        }
       },100);
      }
      window.onclick=function(){};
      document.onclick=function(){};
      document.body.onclick=function(){};
     });
    }    
  },
  fontdep_com: function(){
    if(this.url.startWith('http://www.fontdep.com/')&&document.cookie.indexOf('virallock_myid')==-1){
      document.cookie='virallock_myid=0001';
      location.reload();
    }
  },
  removeRedir(config) {
    if (this.url.match(new RegExp(config.url,'g')) || this.url.startWith(config.url)) {
      ABPVN.cTitle();
      var links = document.querySelectorAll('a[href^="' + config.replace + '"]');
      Logger.info('Remove Redirect for ' + links.length + ' links');
      if (links.length) {
        links.forEach(function (item) {
          var stockUrl = item.getAttribute('href').replace(config.replace, '');
          var count = 0;
          while (stockUrl.indexOf('%2') > - 1 && count < 5) {
            stockUrl = decodeURIComponent(stockUrl);
            count++;
          }
          item.setAttribute('href', stockUrl);
          item.setAttribute('title','Link đã xóa chuyển hướng trung gian bởi abpvn.com');
        }.bind(this));
      }
    }
  },
  removeRedirect() {
    var configs = [
      {
        url: 'https://samsungvn.com',
        replace: 'https://samsungvn.com/xfa-interstitial/redirect?url=',
      },
      {
        url: 'https://forum.vietdesigner.net',
        replace: 'redirect/?url='
      },
      {
        url: 'http://sinhvienit.net',
        replace: 'http://sinhvienit.net/goto/?'
      },
      {
        url: 'http://phanmemaz.com/',
        replace: 'http://phanmemaz.com/wp-content/plugins/tm-wordpress-redirection/l.php?'
      },
      {
         url: 'vozforums\.(com|net)',
         replace: '/redirect/index.php?link='
      }
    ];
    configs.forEach(function (config) {
      this.removeRedir(config);
    }.bind(this));
  },
  mgIdAdRemover: function(){
    var allMgIdEl = document.querySelectorAll('[id*="ScriptRoot"]');
    if(allMgIdEl && allMgIdEl.length){
      ABPVN.cTitle();
      for(var i = 0;i<allMgIdEl.length;i++){
        allMgIdEl[i].innerHTML = '';
      }
    }    
  },
  init: function () {
    this.url = location.href;
    this.mgIdAdRemover();
    this.removeRedirect();
    this.phim_media();
    this.linkneverdie_com();
    this.hdonline_vn();
    this.maclife_vn();
    this.aphim_co();
    this.fontdep_com();
    this.openload();
  }
};
//Main class
var ABPVN = {
  getCookie: function (cookie_name) {
    var value = '; ' + document.cookie;
    var parts = value.split('; ' + cookiename + '=');
    if (parts.length == 2) return parts.pop().split(';').shift();
  },
  cTitle: function () {
    if (document.title.indexOf(' - Fixed by ABPVN.COM') == - 1) {
      document.title = document.title + ' - Fixed by ABPVN.COM';
    }
  },
  blockPopUp: function () {
    var listSite = [
      'http://blogtruyen.com',
      'http://www.khosachnoi.net',
      'http://hamtruyen.vn/',
      'http://phim14.net/',
      'http://phim7.com/',
      'http://www.diendan.trentroiduoidat.com/',
      'http://www.trentroiduoidat.com/',
      'http://chophanthiet.us',
      'http://animetvn.com',
      'http://font.vn',
      'https://vidoza.net/',
      'http://www.easysoft.xyz',
      'http://hdonline.vn',
      'https://www.phim.media',
      'http://phimnhanh.com',
      'http://www.vietsubhd.com'
    ];
    for (var i = 0; i < listSite.length; i++) {
      if (this.url.startWith(listSite[i])) {
        this.cTitle();
        Logger.info('Đã chặn popup quảng cáo');
        document.body.onclick = null;
        document.onclick = null;
        document.ontouchstart=null;
        document.onmousedown=null;
        window.addEventListener('load', function () {
          setTimeout(function () {
            Logger.info('Đã chặn popup quảng cáo onload');
            document.ontouchstart=null;
            document.onclick = null;
            document.body.onclick = null;
            document.onmousedown=null;
          }, 300);
        });
        window.addEventListener('DOMContentLoaded', function () {
          setTimeout(function () {
            Logger.info('Đã chặn popup quảng cáo dom load');
            document.ontouchstart=null;
            document.onclick = null;
            document.body.onclick = null;
            document.onmousedown=null;
          }, 300);
        });
      }
    }
  },
  init: function () {
    this.url = location.href;
    this.blockPopUp();
    //Init class getLink
    getLink.init();
    //Init class Fixsite
    fixSite.init();
    //console.info('ABVPN init finish for: '+this.url);
    byPass.init();
  }
};
//RUN INNIT
ABPVN.init();