Greasy Fork

来自缓存

【广告去除】游戏网站

去除一些游戏攻略、资讯网站的广告

目前为 2023-08-13 提交的版本。查看 最新版本

// ==UserScript==
// @name         【广告去除】游戏网站
// @namespace    http://tampermonkey.net/
// @version      1.5
// @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
// ==/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

            'gs_ccs_appdown',//文章底部APP广告拥有的Class

        ];
    }

    //******************
    //---------游侠网
    //******************
    else if (url.includes('ali213.net')) {
        console.log('[广告去除] 游侠网');
        namesStyle = [

        ];
        namesStyleText = [
            //游侠图库(pic.ali213.net)
            'width:980px;height:auto;overflow:hidden;margin:0px auto 10px auto;',//底部多图广告StyleText

            //游侠攻略(例:https://gl.ali213.net/html/2023-8/1114539_2.html)
            'width:100%;margin-bottom:20px;background:#fff;box-sizing: border-box;border-radius:10px;box-shadow:0px 2px 9px 0px rgba(211, 211, 211, 0.6);',//右侧广告StyleText
            'position:relative;display:block;',//右侧广告StyleText

        ];
        namesId = [
            /\bali-ad-js-[0-9]{1,2}\b/,//图片广告Id

            //游侠攻略(例:https://gl.ali213.net/html/2023-8/1114539_2.html)
            'ali_gl_detail_top_ad',//顶部横幅广告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

            //游侠图库(pic.ali213.net)
            'daohang',//顶部导航栏广告Class

            //游侠攻略(例:https://gl.ali213.net/html/2023-8/1114539_2.html)
            'gltopg',//顶部横幅广告Class
            'share-container fengxiang',//底部分享、APP广告Class

            //游侠攻略(例:https://gl.ali213.net/z/8446/)
            'glzj_infob_ltt',//左侧菜单栏底部APP二维码广告Class

            //(例:https://m.ali213.net/news/gl/)
            'glzjll_r_libao',//右侧“热门游戏礼包”广告Class

            //(例:https://m.ali213.net/news/)
            'newslist_body_info_right_b',//右侧“热门软件”广告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

            //3DM下载(例:https://dl.3dmgame.com/patch/172845.html)
            'width:274px;height:368px; overflow: hidden;float:right;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


            //3DM下载(例:https://dl.3dmgame.com/patch/172845.html)
            'patchshow',//“推荐下载”广告Class
        ];
    }
    //******************
    //---------九游
    //******************
    else if (url.includes('9game.cn')) {
        console.log('[广告去除] 九游');
        namesStyle = [
            'data-portal-explore',//文章中加速器广告Style

        ];
        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

            'ngame-book',//文章标题右侧APP二维码广告Class
            'ngame-qrcode',//文章右侧APP二维码广告Class
            'ngame-btns',//文章右侧APP加速器下载广告Class
            'box-con right-like',//文章右侧猜你喜欢广告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);



})();