Greasy Fork is available in English.

【广告去除】百度百科

去除秒懂百科、去除页面底部的广告、去除右侧广告和TA说等;去除置灰默哀效果

// ==UserScript==
// @name         【广告去除】百度百科
// @namespace    http://tampermonkey.net/
// @version      2.7
// @description  去除秒懂百科、去除页面底部的广告、去除右侧广告和TA说等;去除置灰默哀效果
// @author       You
// @match        *://baike.baidu.com/
// @match        *://baike.baidu.com/item/*
// @match        *://baike.baidu.com/search/*
// @match        *://baike.baidu.com/vbaike/*
// @match        *://baike.baidu.com/tashuo/*
// @match        *://baike.baidu.com/tashuolist/*
// @match        *://baike.baidu.com/history/*
// @match        *://baike.baidu.com/historydiff/*
// @match        *://baike.baidu.com/usercenter/userpage*
// @match        *://baike.baidu.com/planet/talk*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=qq.com
// @license      MIT
// @grant        none
// ==/UserScript==

// run-at       document-start
/*
1.8
扩大适配范围
*/


(function() {
    'use strict';

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

    var names = [];

    //******************
    //---------百度百科词条
    //******************
    if (url.includes('baike.baidu.com/item')) {
        console.log('[广告去除] 百度百科词条');
        names = [
            ['ad','id','hotspotmining_s'],//概述下方TA说&新闻

            ['ad','class','second-wrapper'],//词条名下方秒懂视频
            ['ad','class','poster-middle'],//影视大图左下秒懂视频
            ['ad','class','related-video-container J-related-video-container'],//信息栏下方秒懂视频
            ['ad','class','lemmaWgt-promotion-slide'],//右侧秒懂百科贴图广告

            ['ad','class','add-video cmn-btn-hover-blue cmn-btn-28 J-add-video-link J-add-video'],//上传视频按键
            ['ad','class','edit-prompt'],//词条名下方编辑提示,例:本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

            ['ad','class','unionAd union'],//右侧列表广告
            //['ad','class',/\bunionAd_[0-9a-zA-Z]{5}\b/],//右侧列表广告unionAd_dNc3R
            ['ad','class','new-bdsharebuttonbox new-side-share'],//右侧悬浮分享
            ['ad','class','right-ad'],//右下悬浮知识专题

            ['ad','class','bottom-recommend-wrapper'],//底部猜你喜欢
            ['ad','class','fc-guess-like new-list'],//底部相关搜索
            ['ad','class','relatedSearch_gAuve'],//relatedSearch_gAuve
            //<div class="relatedSearch_gAuve" id="J-related-search">
            ['ad','class',/\brelatedSearch_[0-9a-zA-Z]{5}\b/],//relatedSearch_gAuve
            //'after-content',//底部所有,可能会误伤
            //'contentBottom_HLLJs',记不起来是什么的

            //'clearfix',//概述下方TA说&新闻,有误伤
            ['ad','class','tashuo-right'],//右侧TA说
            //slideAdBox_E5DMr
            ['ad','class',/\bslideAdBox_[0-9a-zA-Z]{5}\b/],//右侧TA说
            ['ad','class','tashuo-bottom'],//页面底部TA说
            //form-item clearfix

            ['ad','class','topA'],//顶部搜索栏右侧活动入口
            ['ad','class','pinzhuanWrap'],//页面底部品牌广告

            ['ad','class','item appdownload'],//顶部“下载百科APP”


            //这些其实不算广告,而是功能模块,如果无需排除可注释掉或删掉代码
            ['ad','class','lemma-structured'],//概述下方相关星图
            //           ['ad','id','J-lemma-structured'],//概述下方相关星图
            ['ad','class',/\bemmaStructured_[0-9a-zA-Z]{5}\b/],//概述下方
            ['ad','id','J-lemma-human-relation'],//概述下方主要演员
            ['ad','id','J-lemma-starmap'],//概述下方相关星图
            ['ad','class',/\bafterLargeFeature_[0-9a-zA-Z]{5}\b/],//上方影视模块afterLargeFeature_IP71q
            ['ad','class','graph-card'],//信息栏下方百科图谱
            ['ad','id','J-graph-card'],//信息栏下方百科图谱
            ['ad','class',/\balbumList_[0-9a-zA-Z_]{5}\b/],//页面下方词条图册



            //20231030新增
            //['ad','class',/\bvideoListWrap_[0-9a-zA-Z]{5}\b/],//信息栏下方视频videoListWrap_pYfbS
            ['ad','id','J-lemma-video-list'],//信息栏下方视频J-lemma-video-list
            //['ad','class',/\bshare_[0-9a-zA-Z]{5} z-index-fixed-content\b/],//右侧悬浮分享share_vNR96 z-index-fixed-content
            //['ad','class',/\bguessLike_[0-9a-zA-Z]{5}\b/],//底部猜你喜欢guessLike_SnZDT
            ['ad','id','J-bottom-recommend-wrapper'],//底部猜你喜欢J-bottom-recommend-wrapper
            ['ad','class',/\bappDownload_[0-9a-zA-Z]{5}\b/],//右上APP广告appDownload_OfsOt
            ['ad','class',/\bcontentBottom_[0-9a-zA-Z]{5}\b/],//词条名下秒懂视频contentBottom_lEzGh
            ['ad','class',/\btashuoWrap_[0-9a-zA-Z]{5}\b/],//ta说tashuoWrap_LZDYa
            ['ad','id','J-bottom-tashuo'],//ta说J-bottom-tashuo
            //手机端
            ['ad','id','J-declare'],//顶部提醒【声明:百度百科是免费编辑平台,无收费代编服务】
            ['ad','id','qtqy_container'],//底部大家还在搜
            ['ad','id','tashuo_list'],//底部他说
            //['ad','class','second-summary J-invoke-2ndvideoflow'],//概述视频
            ['ad','id','J-lemma-videos'],//更多视频
            ['ad','id','J-tashuo-button-fixed'],//右下TA说按钮
            ['ad','id','J_yitiao_container'],//下方广告

            ['ad','class','sw-383__scroll-image-box sw-383__J-scroll-item'],//底部他说
            ['ad','class',' sw-136__lemma-attention sw-136__no-title '],
            ['ad','id','_7152007'],

            //20231126
            ['ad','class',/\brightAd_[0-9a-zA-Z]{5}\b/],//右下悬浮

            ['ad','class',/\bindex-module_drawerHand__[0-9a-zA-Z]{5}\b/],//右侧活动广告

        ];
    }


    //******************
    //---------百度百科历史&历史对比
    //******************
    else if (url.includes('baike.baidu.com/history')) {
        console.log('[广告去除] 百度百科历史');
        names = [
            ['waterMark','id','water-mark'],//水印,style过长不匹配了
        ];
    }


    //******************
    //---------百度百科搜索
    //******************
    else if (url.includes('baike.baidu.com/search')) {
        console.log('[广告去除] 百度百科搜索');
        names = [
            ['ad','class','J-search-ad'],//搜索结果页广告,例:fc-054d5b35ad1f2c7a J-search-ad
            ['ad','class','ad-container J-search-result-ad'],//搜索结果页广告单个
        ];
    }


    //******************
    //---------百度百科V百科
    //******************
    else if (url.includes('baike.baidu.com/vbaike')) {
        console.log('[广告去除] 百度百科V百科');
        names = [
            ['ad','id',/\bJ-wgt-baikeapp-promote-[0-9a-zA-Z]{7}\b/],//右下角APP二维码,例:J-wgt-baikeapp-promote-28d928c
            ['ad','class','wgt-baikeapp-promote-container'],//右下角APP二维码
            ['ad','class','wgt-side-share'],//右侧悬浮分享
        ];
    }


    //******************
    //---------百度百科TA说
    //******************
    else if (url.includes('baike.baidu.com/tashuo') || url.includes('baike.baidu.com/tashuolist')) {
        console.log('[广告去除] 百度百科TA说');
        names = [
            ['ad','class','new-bdsharebuttonbox new-side-share'],//右侧悬浮分享
            ['ad','id','side-share'],//右侧悬浮分享
        ];
    }


    //******************
    //---------百度百科用户主页
    //******************
    else if (url.includes('baike.baidu.com/usercenter/userpage')) {
        console.log('[广告去除] 百度百科用户主页');
        names = [
            ['ad','class','navbarAdNew'],//主页顶部搜索栏右侧活动入口
            ['ad','class','wgt-baikeapp-promote-container'],//主页右下角下载APP悬浮窗
        ];
    }

    //******************
    //---------百度百科科星球
    //******************
    else if (url.includes('baike.baidu.com/planet/talk')) {
        console.log('[广告去除] 百度百科科星球');
        names = [
            ['ad','class','wgt-baikeapp-promote-container'],//主页右下角下载APP悬浮窗
        ];
    }

    //******************
    //---------百度百科首页
    //******************
    else if (url.includes('baike.baidu.com/') && pathSegment === "") {
        console.log('[广告去除] 百度百科首页');
        names = [
            ['ad','class','wgt-baikeapp-promote-container'],//主页右下角下载APP悬浮窗
            ['ad','id','navbarAdNew'],//顶部搜索栏右侧活动入口
            ['ad','class','navbarAdNew'],//顶部搜索栏右侧活动入口
        ];
    }

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

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

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

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

            ['ad','class',/\bappDownload_[0-9a-zA-Z]{5}\b/],//右上APP广告appDownload_OfsOt


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







    //*************************************************************************************
    //----------------------------------------广告去除函数
    //*************************************************************************************
    function delAd(names) {
        if (names.length) {
            var flag = false;

            for (var name of names) {

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

                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++) {
                        if (type === "ad") {
                            elements[i].remove();
                        }
                        else if (type === "waterMark") {
                            elements[i].setAttribute(tagType, `${value}-del`);
                        }
                    }
                    console.log(`[广告去除] ${name[0]} 元素 ${name[2]} 移除成功!`);
                    flag = true;
                } else {
                    //console.log(`[广告去除] 未发现 ${name} 元素!`);
                }
            }

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



    //*************************************************************************************
    //----------------------------------------广告去除
    //*************************************************************************************
    // 定义要运行的函数
    function runDelAd() {
        delAd(names);
    }

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

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



    //*************************************************************************************
    //----------------------------------------置灰去除
    //*************************************************************************************
    function delFilter() {


        //memorial
        //20231030新规则
        //var bodyElement = document.querySelector('body');

        // 移除原来的样式属性
        //if (bodyElement) {
        //bodyElement.removeAttribute('class');
        //}


        let box = document.getElementsByClassName('memorial');
        console.log(box);
        for (var i = 0; i < box.length; i++) {
            box[i].className = box[i].className.replace(/memorial/g, '');
        }

    }
    delFilter();

















})();