// ==UserScript== // @name 【广告去除】游戏网站 // @namespace http://tampermonkey.net/ // @version 1.2 // @description 去除一些游戏攻略、资讯网站的广告 // @author You // @match *://*.17173.com/* // @match *://*.gamersky.com/* // @match *://*.ali213.net/* // @match *://*.3dmgame.com/* // @match *://*.9game.cn/* // @match *://18183.com/* // @match *://*.18183.com/* // @match *://games.sina.com.cn/* // @match *://*.163.com/game/* // @match *://*.nbegame.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=17173.com // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; //************************************************************************************* //----------------------------------------广告判断标准 //************************************************************************************* var url = window.location.href; var namesStyle = []; var namesStyleText = []; var namesId = []; var namesClass = []; //****************** //---------17173 //****************** if (url.includes('17173.com')) { console.log('[广告去除] 17173'); namesStyle = [ ]; namesStyleText = [ 'position:absolute;z-index:2;top:41px;left:-99px;width:180px;height:470px;overflow:hidden;',//左上悬浮广告拥有的StyleText ]; namesId = [ ]; namesClass = [ 'fullmedia-video-wrap',//悬浮广告拥有的Class 'righttop-window-recycle',//悬浮广告拥有的Class 'righttop-window-video-wrap',//悬浮广告拥有的Class 'fullmedia-recycle',//左上悬浮广告拥有的Class 'video-box',//多媒体视窗广告拥有的Class 'mod-17173app-qrcode',//右侧APP广告拥有的Class /\bpn\b.*\bpn-tg-avatar\b.*\bad17173carouse[l]{0,1}[0-9]{0,2}\b/,//图片轮播广告拥有的Class 'pn1 pn-tg pn-tg-bevel',//一行两列推广广告拥有的Class 'pn pn-tg ad17173Corner1 classNameTrackModule',//一行两列推广广告拥有的Class 'pn pn-tg adnewgameindexbanner2',//分隔栏广告拥有的Class 'pn pn-tg ad17173indexbanner3 classNameTrackModule',//分隔栏广告拥有的Class 'pn pn-tg ad17173indexBottomBanner1 classNameTrackModule',//分隔栏广告拥有的Class 'Classpn pn-rss Ad17173Banner2',//分隔栏广告拥有的Class 'pn pn-rss Ad17173Banner2',//分隔栏广告拥有的Class /\bmod-tg\b.*\bad-v-daka-7\b.*\bad17173WenziTuijian[0-9]{0,1}\b.*\bclassNameTrackModule\b/,//底部游戏下载中的广告拥有的Class ]; } //****************** //---------游民星空 //****************** else if (url.includes('gamersky.com')) { console.log('[广告去除] 游民星空'); namesStyle = [ ]; namesId = [ 'ADcover',//顶层悬浮倒计时广告拥有的Id /\bgsBackgroundId[0-9]{12}\b/,//文章背景广告Id,例:gsBackgroundId511953469937 //new_top_allsite_970_2 /\bnew_top_allsite_[0-9]{3,4}_[0-9]{1}\b/,//文章标题下广告Id /\btop_pd_[0-9]{3,4}\b_\b[0-9]{1}\b/,//文章标题下广告Id 'adscontainer_block_300_3',//右侧底部动图广告拥有的Id ]; namesClass = [ 'bgAdWrap',//背景图片广告拥有的Class 'adscontainer_background_back_index1100_all',//背景图片广告拥有的Class 'advert',//顶部右侧活动广告拥有的Class 'box-shadow',//标题下方广告拥有的Class 'ad_r',//右侧动图广告拥有的Class 'fixedCode',//右侧APP广告拥有的Class 'Midtit yyggtit lxyygg',//右侧游戏广告拥有的Class 'yyimg',//右侧游戏广告拥有的Class ]; } //****************** //---------游侠网 //****************** else if (url.includes('ali213.net')) { console.log('[广告去除] 游侠网'); namesStyle = [ ]; namesId = [ /\bali-ad-js-[0-9]{1,2}\b/,//图片广告Id ]; namesClass = [ 'alertbox',//顶层悬浮广告Class 'ali-index-bg',//背景图片广告Class 's-bg',//标题下方广告拥有的Class 'box-shadow',//标题下方广告拥有的Class 'ag300 box-shadow-right',//右侧图片广告Class 's1-r-img',//右侧图片广告Class /\bag300\b.*\bmt[0-9]{1,2}\b.*\bbox-shadow-right\b/,//右侧图片广告Class 'fengxiang box-shadow',//底部分享、APP广告Class 'go-lb',//底部滚动文字广告Class ]; } //****************** //---------3DM //****************** else if (url.includes('3dmgame.com')) { console.log('[广告去除] 3DM'); namesStyle = [ ]; namesStyleText = [ 'z-index:2147483648;',//右下角弹窗图片广告StyleText 'display: block; padding: 0px; margin: 0px; z-index:2147483648; position: fixed; right: 0px; bottom: auto; left: auto; bottom:1px; width: 320px; height: 270px;',//右下角弹窗图片广告StyleText 'width: 100%;display: block;margin-top: 20px;',//下方APP广告StyleText 'width: 1160px;overflow: hidden; margin-top: 20px;position: relative;',//下方横幅广告StyleText 'width: 785px;overflow: hidden;position: relative;',//下方横幅广告StyleText ]; namesId = [ 'index_bg_box',//背景图片广告Id 'note',//右下角弹窗图片广告Id ]; namesClass = [ 'index_bg_box',//背景图片广告Class 'Indexadd-100',//主页横幅图片广告Class 'addapp',//顶部APP广告Class 'Tonglan_785',//标题下方横幅图片广告Class 'R_qingtianzhu',//右侧顶部广告Class 'R_fangkuai',//右侧底部广告Class 'dj_warp_e mg_bt30',//右侧自营游戏广告Class ]; } //****************** //---------九游 //****************** else if (url.includes('9game.cn')) { console.log('[广告去除] 九游'); namesStyle = [ ]; namesStyleText = [ ]; namesId = [ ]; namesClass = [ 'ntop-banner',//文章上方APP广告Class 'guide-app-fix',//下方APP广告Class 'nbot-banner',//文章下方APP广告Class 'box-con hot-game',//文章下方热门游戏广告Class 'box-con other-games',//文章下方其他游戏广告Class 'box-con gift-con',//文章右侧游戏礼包广告Class ]; } //****************** //---------18183 //****************** else if (url.includes('18183.com')) { console.log('[广告去除] 18183'); namesStyle = [ ]; namesStyleText = [ ]; namesId = [ ]; namesClass = [ /\bad[0-9]{1,2}\b/,//右侧广告Class 'ad_right',//文章右侧广告Class 'side-scroBox-v3',//文章扫码广告Class /\bdownload-block-[0-9]{6}\b/,//web顶部广告Class ]; } //****************** //---------新浪游戏 //****************** else if (url.includes('games.sina')) { console.log('[广告去除] 新浪游戏'); namesStyle = [ 'data-ad-pdps',//部分广告Style ]; namesStyleText = [ 'padding-bottom:45px;',//右侧图片广告StyleText ]; namesId = [ 'rightad',//左下弹窗广告Id 'leftFlashDiv',//左下活动弹窗广告Id ]; namesClass = [ 'headad',//头部广告Class 'apppop',//左下公众号扫码广告Class 'Pop-ups',//左下弹窗广告Class 'downPart',//底部APP广告Class ]; } //****************** //---------网易游戏 //****************** else if (url.includes('163.com/game')) { console.log('[广告去除] 新浪网易'); namesStyle = [ 'ad-location',//文章夹杂广告Style 'ad-position',//文章夹杂广告Style 'ad-category',//文章夹杂广告Style 'adtype',//文章夹杂广告Style ]; namesStyleText = [ ]; namesId = [ 'fixed_ad',//首页右侧广告Id ]; namesClass = [ 'js_N_navSelect ntes-nav-select c-fl',//底部网易新闻APP广告Class 'ad_module',//右侧广告Class 'newsapp-qrcode',//右侧APP广告Class 'post_columnad_mid',//文章底部广告Class 'at_item post_recommend_new post_recommend_ad',//文章底部推荐文章中伪装文章广告Class 'at_item info_ad_item clearfix mod_js_ad news_article',//首页文章底部伪装文章广告Class 'post_area post_columnad_btm',//文章最底部多图广告Class 'rg_ad mb20 mod_js_ad',//首页右侧广告Class /\barea\b.*\bbottomad\b.*\bchannel_relative_20[0-9]{2}\b/,//首页底部广告Class 'sidebar_qrcode',//首页右下角回顶上方网易新闻广告Class ]; } //****************** //---------nbegame.com //****************** else if (url.includes('nbegame.com')) { console.log('[广告去除] NBE攻略'); namesStyle = [ ]; namesId = [ ]; namesClass = [ 'widget widget-tie zanzhu2',//右侧APP广告Class ]; } //**************其他 else { console.log('[广告去除] 其他'); namesStyle = [ ]; namesId = [ ]; namesClass = [ ]; } //************************************************************************************* //----------------------------------------广告去除函数 //************************************************************************************* function delAd(tagType,names) { //console.log("tagType:"+tagType); //console.log("names.length:"+names.length); if (names.length) { var flag = false; for (var name of names) { //console.log("name:"+name); var elements = []; switch (tagType) { case 'style': elements = document.querySelectorAll(`[${name}]`); break; case 'styleText': //需要匹配标签style的内容 elements = document.querySelectorAll('[style*="' + name + '"]'); break; case 'id': //elements.push(document.getElementById(name)); if (name instanceof RegExp) { elements = document.querySelectorAll('[id]'); elements = Array.prototype.filter.call(elements, function(element) { return name.test(element.id); }); } else { elements = document.querySelectorAll(`[id="${name}"]`); } //console.log("idelements:"+elements); break; case 'class': //elements = document.getElementsByClassName(name); if (name instanceof RegExp) { elements = document.querySelectorAll('[class]'); elements = Array.prototype.filter.call(elements, function(element) { return name.test(element.className); }); } else { elements = document.querySelectorAll(`[class="${name}"]`); } //console.log("classelements:"+elements); break; default: break; }; if (elements && elements.length) { if (elements.length > 0) { flag = true; for (var i = 0; i < elements.length; i++) { elements[i].remove(); } console.log(`[广告去除] ${name} 元素移除成功!`); } } else { //console.log(`[广告去除] 未发现 ${name} 元素!`); } } if (!flag) { //console.log("[广告去除] 未发现要移除的元素!"); } } else { //console.log("[广告去除] 暂不支持此站点,请提交适配反馈!"); } } //************************************************************************************* //----------------------------------------广告去除 //************************************************************************************* // 定义要运行的函数 function runDelAd() { delAd('style',namesStyle); delAd('styleText',namesStyleText); delAd('id',namesId); delAd('class',namesClass); } runDelAd() // 每隔一秒运行一次函数 setInterval(runDelAd, 1000); })();