Greasy Fork

Greasy Fork is available in English.

【广告去除】新闻网站

去除网易新闻、百家号、腾讯新闻的广告

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         【广告去除】新闻网站
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  去除网易新闻、百家号、腾讯新闻的广告
// @author       You
// @match        *://news.163.com/*
// @match        *://sports.163.com/*
// @match        *://money.163.com/*
// @match        *://auto.163.com/*
// @match        *://tech.163.com/*
// @match        *://mobile.163.com/*
// @match        *://hea.163.com/*
// @match        *://fashion.163.com/*
// @match        *://v.163.com/*
// @match        *://culture.163.com/*
// @match        *://travel.163.com/*
// @match        *://*.house.163.com/*
// @match        *://home.163.com/*
// @match        *://edu.163.com/*
// @match        *://jiankang.163.com/*
// @match        *://art.163.com/*
// @match        *://bendi.news.163.com/*
// @match        *://*.news.163.com/*
// @match        *://*.163.com/news/*
// @match        *://*.163.com/sports/*
// @match        *://ent.163.com/*
// @match        *://*.163.com/dy/*
// @match        *://*.163.com/ent/*
// @match        *://comment.tie.163.com/*

// @match        *://new.qq.com/*

// @match        *://news.sina.com.cn/*
// @match        *://finance.sina.com.cn/*
// @match        *://tech.sina.com.cn/*
// @match        *://k.sina.com.cn/*

// @match        *://*.sohu.com/a/*


// @match        *://*.china.com/*

// @match        *://*.huanqiu.com/*

// @match        *://*.1905.com/*

// @match        *://store.rg-adguard.net/

// @match        *://22.do/*
// @match        *://ask.zol.com.cn/*

// @exclude      *://tech.163.com/game/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=17173.com
// @grant        none
// @run-at       document-start
// @license      MIT
// ==/UserScript==


/*
1.0更新内容
创建

1.1更新内容

*/

(function() {
    'use strict';

    //*************************************************************************************
    //----------------------------------------广告匹配规则
    //*************************************************************************************
    let url = window.location.href;
    let domain = document.domain;
    let pathSegment = window.location.pathname.split('/')[1]

    let names = [];


    //******************
    //---------网易新闻
    //******************
    if (domain.match(/(www|news|sports|ent|money|auto|tech|mobile|hea|fashion|v|culture|travel|house|home|edu|jiankang|art).163.com/)
        || (domain.match('163.com')
            && pathSegment.match(/(news|sports)/))
       ) {
        console.log('[广告去除] 网易新闻');
        //'anything'
        names = [
            ['class','ns_area area_column_ad channel_relative_2016 mod_js_ad'],//头部广告,通用
            ['class','post_area post_columnad_top'],//顶通
            ['data-adid',/\barticle_cms_column_[0-9]{1,2}\b/],//顶通
            ['class','ns_area second2016_top_ad channel_relative_2016 channel_relative_2016_lh'],//顶通
            ['class',/\b[^ ]*top_ad[^ ]*\b/],//顶部
            ['class',/\b[^ ]*mod_js_ad[^ ]*\b/],//顶部,area topad channel_relative_2016 mod_js_ad
            ['class',/\b[^ ]*advertisement[^ ]*\b/],//顶部
            ['id','js_ads_banner_top'],//顶部

            ['class','mod_ad_toutu channel_relative_2016'],//右侧文字广告
            ['class','rg_ad_text mb25 channel_relative_2016'],//右侧文字广告
            ['data-adid',/\bnews_index_column_[0-9]{1,2}\b/],//通用
            ['ad-location','anything'],//通用
            ['class',/\bmt[0-9]{1,2} mod_ad_[0-9]{1,2} mod_ad_r\b/],//右侧图片广告,mt27 mod_ad_8 mod_ad_r
            ['id',/\bssp_[0-9a-z]{7,10}\b/],//广告位:网易-内页矩形M1,ssp_7365610
            ['class',/\bblank[0-9]{1,2}\b/],//右侧
            ['data-adid',/\barticle_cms_right_[0-9]{1,2}\b/],//右侧,article_cms_right_2
            ['class',/\brg_ad mb[0-9]{1,2}\b/],//右侧严选广告
            ['class',/\bsports_shangxun_ad[0-9]{1,2}[^ ]*\b/],//AD 文字广告
            ['class',/\bchannel_ad_text_[0-9]{4}\b/],//AD 文字广告
            ['class',/\bimg_ad_[0-9]{3} mb[0-9]{1,2}[^ ]*\b/],//AD 广告图片300*250 +文字
            ['class',/\bad-wrapper underlive-ad[^ ]*\b/],//两侧
            ['class','ad'],//

            ['class','ns_side_qrcode'],//右侧APP二维码
            ['class','ns-side-qrcode'],//右侧APP二维码
            ['class','newsapp-qrcode'],//右侧APP二维码
            ['class','sidebar_qrcode'],//右侧APP二维码
            ['class','ntes-nav-mobile-title ntes-nav-entry-bgblack'],//顶部APP

        ];
    }


    //******************
    //---------网易号
    //******************
    else if (url.includes('163.com/dy')||url.includes('comment.tie.163.com')) {
        console.log('[广告去除] 网易号');
        names = [
            ['class','newsapp-qrcode'],//右侧APP二维码
            ['class','ntes-nav-mobile-title ntes-nav-entry-bgblack'],//顶部APP

            ['class','ad_module'],//右侧广告
            ['data-adid',/\barticle_dy_right_[0-9]{1}\b/],//右侧广告,article_dy_right_1
            ['data-adid',/\barticle_dy_column_[0-9]{1}\b/],//顶部广告,article_dy_column_1
            ['id',/\bssp_[0-9a-z]{7,10}\b/],//广告位:网易号--内页矩形M1,ssp_7365630

            ['id','top-banner'],//顶部
            ['id','ad-inner'],//右侧


        ];
    }

    //******************
    //---------腾讯网
    //******************

    else if (domain.includes('new.qq.com')) {
        console.log('[广告去除] 腾讯网');
        names = [
            //全屏

            //顶部
            ['id',/\b[Tt]{1}op[Aa]{1}d\b/],//顶部广告
            ['class',/\b[^ ]*widthAd[^ ]*\b/],//顶部广告

            //侧面
            ['id',/\badCon[0-9]{1,2}\b/],//夹杂广告
            ['id','focus-bar'],//右侧轮换
            ['class','focus-bar swiper-container-horizontal'],//右侧轮换
            ['dt-eid','em_ad'],//右侧图片
            ['data-role','hd-ad-adapter-interactivelayer'],//右侧视频
            ['data-role','creative-player-video-layer'],//右侧视频
            ['class','article-item ad-author-item'],//右侧
            ['id','pc_bot_author_ad'],//右侧
            //['class','pc_bot_hotlist_ad'],//右侧

            //底部
            ['class','g-bot-box'],//底部
            //['class','recommend-con'],//底部
            //['id','ArticleBottom'],//底部
            ['id','pic'],//底部

        ];
    }


    //******************
    //---------新浪新闻
    //******************
    else if (domain.match(/(news|finance|tech|k).sina.com.cn/)) {
        console.log('[广告去除] 新浪新闻');
        names = [
            ['id',/\bad_[0-9]{5}\b/],//顶部
            ['class','tb-left auto_switch'],//顶部
            ['class','tb-left'],//顶部空白


            ['class','blk-zcapp clearfix'],//正文底部
            ['data-sudaclick','ad_content_bottom'],//正文底部

            ['id',/\bBAIDU_SSP__wrapper_u[0-9]{7}_[0-9]{1}\b/],//侧面悬浮,BAIDU_SSP__wrapper_u6838895_0
            ['id',/\biframeu[0-9]{7}_[0-9]{1}\b/],//侧面悬浮
            ['name',/\biframeu[0-9]{7}_[0-9]{1}\b/],//侧面悬浮
            ['id',/\bsinaadToolkitBox[0-9]{1}\b/],//侧面悬浮
            ['class','side-btns-2w'],//侧面悬浮
            ['data-ad-pdps','anything'],//侧面文字
            ['class',/\bside-btns-answer[0-9]{4}\b/],//侧面悬浮
            ['class','right-bar-btn zc-app-btn'],//侧面APP
            ['id','sina-pages-u'],//
            ['class','yyy-wrap-2021'],//

            ['id','bgAdWrap'],//背景


        ];
    }

    //******************
    //---------搜狐
    //******************
    else if (url.includes('sohu.com/a/')) {
        console.log('[广告去除] 新浪号');
        names = [

            //全屏
            ['class','left-bottom-float-fullScreenSleepContainer'],//全屏弹窗

            //顶部
            //['id',/\bad_[0-9]{5}\b/],//顶部


            //侧面
            //['data-spm','left-author-card-ad'],//左侧悬浮
            ['id',/\bgoogle_ads_iframe_[^ ]*\b/],//左侧悬浮
            ['data-spm','ad-right-sponsor'],//右侧
            ['data-ad-status','filled'],//两侧悬浮
            ['id','god_fix_container'],//右侧悬浮
            ['class','right-fixed'],//右侧悬浮
            ['data-spm',/\bad-sq[0-9]{1}\b/],//两侧图片
            //['class','article-do article-do-fixed'],//左侧悬浮分享
            //['id','article-do'],//左侧悬浮分享
            ['data-spm','ad-ss'],//左下悬浮
            ['class','hot-article clear bord'],//右侧空白
            ['id','hot-news-container'],//右侧空白


            //底部
            ['class',/\bpublift-widget-[0-9]{11}-container\b/],//底部悬浮
            ['data-spm','middle-banner-ad'],//文章底部
            ['class','allsee-item clear bd-wrap'],//底部“大家都在看”夹杂
            ['data-spm','ad-text-bottom'],//底部“大家都在看”底部
            ['class','google-auto-placed'],//底部空白
            ['id',/\b[0-9a-z]{6,8}_\b/],//右侧“24小时推文”夹杂,其他夹杂

            //底部

            //背景
            ['id','bgAdWrap'],//背景

            //激进
            //['class','groom-read'],//文章底部推荐阅读
            ['class','news-list clear'],//文章底部推荐阅读

        ];

    }


    //******************
    //---------中国网
    //******************
    else if (domain.includes('china.com')) {
        console.log('[广告去除] 中国网');
        names = [
            //全屏悬浮
            ['id','plugin-newspush'],//底部

            //顶部
            ['id',/\bBAIDU_SSP__wrapper_u[0-9_]{9,11}\b/],//

            //正文
            ['id',/\bpicNewList_ad[0-9]{1,2}\b/],//
            ['class','listItem tt_xxl_L clearfix'],//
            ['id',/\bCH_MTL_[0-9]{5}\b/],//正文空白

            //侧面
            ['class','container'],//右侧
            ['src',/\b[^ ]*bd-china-2.appmobile.cn[^ ]*\b/],//右侧
            ['onmouseup',/\b[^ ]*mouseUpAd_JC[^ ]*\b/],//右侧
            ['class',/\bside_ads side_ads[0-9]{1,2}\b/],//左侧
            ['class','adcon margin_bot'],//右侧
            ['id',/\bnewsListJingcai_[0-9]{1}\b/],//右侧
            ['id',/\bmedia-[0-9]{1}-[0-9]{1}\b/],//左侧



            //底部
            ['id',/\bpicNewList_ad_[0-9]{1,2}_[0-9]{1,2}\b/],//底部大图
            ['id',/\bQIHOO__WEB__SO__[0-9_]{16,18}\b/],//底部大图


            //底部

            //背景

            //激进

        ];
    }

    //******************
    //---------环球网
    //******************
    else if (domain.includes('finance.huanqiu.com')) {
        console.log('[广告去除] 环球网');
        names = [
            //全屏悬浮
            ['id','next-box'],//右下

            //顶部

            //正文

            //侧面class="ad-content"
            ['class','ad-content'],//右侧
            ['__attr__id','anything'],//右侧

            //底部
            ['class','feed-item feed-other'],//底部夹杂
            ['class',/\bmediav-newsfeed-listitem-ads_[0-9]{1}\b/],//底部夹杂


            //底部

            //背景

            //激进

        ];
    }

    //******************
    //---------1905
    //******************
    else if (domain.includes('1905.com')) {
        console.log('[广告去除] 1905电影网');
        names = [
            //全屏悬浮
            ['id','next-box'],//右下

            //顶部

            //正文
            ['class','mdb-ad'],

            //侧面class="ad-content"
            ['class','ad ad-content bottom'],//右侧
            ['id',/\badjs_[0-9]{5}\b/],//右侧adjs_32001

            //底部



            //底部

            //背景

            //激进

        ];
    }

    //******************
    //---------通用-接口广告
    //******************
    if (url) {
        console.log('[广告去除] 通用-接口广告');
        names.push(...[
            ['src',/\b[^ ]*pos.baidu.com[^ ]*\b/],//通用
            ['src',/\b[^ ]*dup.baidustatic.com[^ ]*\b/],//通用
            ['src',/\b[^ ]*cpro.baidustatic.com[^ ]*\b/],//通用

            ['src',/\b[^ ]*c.gdt.qq.com[^ ]*\b/],//通用
            ['herf',/\b[^ ]*c.gdt.qq.com[^ ]*\b/],//通用

            ['src',/\b[^ ]*sina.cn\/check\?[^ ]*\b/],//通用

            ['src',/\b[^ ]*googleads.g.doubleclick.net[^ ]*\b/],//通用
            ['src',/\b[^ ]*pagead2.googlesyndication.com[^ ]*\b/],//通用


            //src="https://qgnu18wo.sina.cn/check?src=https%3A%2F%2Fmjs.sinaimg.cn%2Fwap%2Fcustom_html%2Fwap%2F20230511%2F645c9e2002215.html%3Fpdps%3DPDPS000000067809"
            //blogbf
        ])
    }








    //*************************************************************************************
    //----------------------------------------其他提升可读性的操作
    //*************************************************************************************
    function doOtherThing() {


        //******************
        //---------搜狐
        //******************
        if (url.includes('sohu.com/a/')) {

            //展开文章
            //lookall-box
            //lookall-box control-hide
            var openA = document.querySelector('div[class="lookall-box"]');
            if (openA) {
                openA.setAttribute("class", "lookall-box control-hide");
            }
            //hidden-content control-hide
            //hidden-content
            var openB = document.querySelector('div[class="hidden-content control-hide"]');
            if (openB) {
                openB.setAttribute("class", "hidden-content");
            }

            //显示来源作者
            var comeUrl = document.querySelector('span[data-role="original-link"]');
            if (comeUrl) {
                comeUrl.setAttribute("data-role", "");
            }
        }





    }










    //*************************************************************************************
    //----------------------------------------广告去除函数
    //*************************************************************************************
    function delAd(names) {

        if (names.length) {
            var flag = false;

            for (var name of names) {

                var tagType = name[0];
                var value = name[1];

                var elements = [];

                //属性内容正则
                if (value instanceof RegExp) {
                    var elementsZero = document.querySelectorAll(`[${tagType}]`);
                    elements = Array.from(elementsZero).filter(element => value.test(element.getAttribute(tagType)));
                }
                //只要存在属性
                else if (value === 'anything'){
                    elements = document.querySelectorAll(`[${tagType}]`);
                }
                //其他正常情况
                else{
                    elements = document.querySelectorAll(`[${tagType}="${value}"]`);
                }


                if (elements && elements.length) {
                    for (var i = 0; i < elements.length; i++) {
                        elements[i].remove();
                    }
                    console.log(`[广告去除] ${name} 元素移除成功!`);
                    flag = true;
                } else {
                    //console.log(`[广告去除] 未发现 ${name} 元素!`);
                }
            }

            if (!flag) {
                //console.log("[广告去除] 未发现要移除的元素!");
            }
        } else {
            //console.log("[广告去除] 暂不支持此站点。");
        }
    }



    //*************************************************************************************
    //----------------------------------------广告去除
    //*************************************************************************************
    // 定义要运行的函数
    function runDelAd() {
        delAd(names);
        //console.log("[广告去除] names:"+names);
    }

    var counter = 0; // 计数器变量
    var interval = setInterval(function() {
        runDelAd();
        counter++; // 每次执行时计数器加一
        if (counter === 100) { // 在达到指定次数后停止执行
            clearInterval(interval);
        }
    }, 50);

    // 每隔一秒运行一次函数
    setInterval(runDelAd, 1000);
    setInterval(doOtherThing, 1000);



})();