百度去广告脚本---tampermonkey油猴子插件js脚本

tampermonkey使用教程(来源:知乎|貌似已被河蟹)

原脚本地址(点击查看)

使用教程

  • 浏览器安装tampermonkey插件,这个在各个浏览器几乎都能安装的。比如UC浏览器,点击扩展中心,在里面搜索tampermonkey,然后安装就可以了。
  • 安装后一般会显示在右上角,比如:3.png
  • 点击油猴子图标,再选择仪表盘4.png
  • 点击这个图标,添加脚本 5.png
  • 粘贴下面的修改版代码,然后点击保存按钮6.png
  • 然后就完成啦
  • 如果要更新tampermonkey插件的话,可以先把插件删除掉,再重新安装就好了。

描述

因为百度有时是局部刷新修改页面内容,所以使用原脚本的时候,会出现必须手动刷新页面才能去除广告的情况。还有,在点击某些链接之后,再回去看搜索页面,会看不见搜索结果,这个是因为被一个“关联推荐”广告页遮住了,针对这我也做了些处理。主要修改内容如下:

  • 修改代码逻辑,使脚本更加精简
  • 针对局部刷新问题的处理:定时判断是否有未隐藏的广告块
  • 模拟鼠标点击,关闭“关联推荐”广告
  • 修改了一些原脚本中不友好的词汇,比如 **ck
  • 增加了一个match ,还增加了对已登录状态下的首页搜索框和搜索按钮,以及浮动框不进行隐藏的判断

其它暂时还没发现什么问题,以后我会持续修改的,具体看修改后的代码吧。

修改版代码

// ==UserScript==
// @name         去除百度广告
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  去掉百度页面上的广告
// @author       axios
// @match        https://www.baidu.com/*
// @match        http://www.baidu.com/s*
// @match        http://news.baidu.com/s*
// @match        https://www.baidu.com/s*
// @match        https://news.baidu.com/s*
// @grant        none
// ==/UserScript==
window.onload = function(){
    console.log("开始干活!");
    var console_log = 0;//console日志,1打印日志,0不打印日志
    //1启用,0关闭
    var option = {
        "ad"    :   1,//推广
        "right" :   1,//右边
        "baike" :   0,//百科
        "img"   :   1,//图片
        "news"  :   1,//新闻
        "tieba" :   1,//贴吧
        "win10" :   1,//Win10
        "video" :   1,//视频
        "comic" :   1,//漫画
        "stock" :   1,//股票
        "map"   :   1,//地图
        "software": 1 //软件
    };

    var obj = {
        "ad"    :   [".ct-content",".ec_tuiguang_ppimlink",".hint_toprq_tips"],    //推广
        "right" :   ["#content_right"], //右边
        "baike" :   [".c-border"],      //百科
        "img"   :   ["#ala_img_results",'.op-img-covers-desktop-cont','.c-showurl'],//图片
        "news"  :   ['.c-offset'],      //新闻
        "tieba" :   ['.op-tieba-general-maintable','.op-tieba-star-maintable','.op-tieba-general-lookmore.op-tieba-general-mainpl'],//贴吧
        "win10" :   ['.opt_software_showarea'],         //Win10
        "video" :   ['.c-row.zx-tv-video-topinfo','.op-zx-new-tvideo-drlt'],//视频
        "comic" :   ['.op_cartoon.click-parent-reward'],//漫画
        "stock" :   ['.op_shares_simple'],              //股票
        "map"   :   ['.op_map_twoplace_table'],         //地图
        "software": ['table.c-table.op_pcsoft_table','.c-gap-top']          //软件
    };
    hideAdvertisement();
    function getElementsByClassName(a, b) {
        if (a.getElementsByClassName) {
            return a.getElementsByClassName(b);
        } else {
            return function c(m, k) {
                if (k === null) {
                    k = document;
                }
                var h = [], g = k.getElementsByTagName("div"), d = g.length, l = new RegExp("(^|\\s)" + m + "(\\s|$)"), f, e;
                for (f = 0, e = 0; f < d; f++) {
                    if (l.test(g[f].className)) {
                        h[e] = g[f];
                        e++;
                    }
                }
                return h;
            }(b, a);
        }
    }
    function Id_hide(id){
        if($(id).css('display')=="block"){
            $(id).css('display', 'none');
            if(console_log){console.log('隐藏-> '+id );}
        }
    }
    function hideAdvertisement() {
        if(option.ad == 1){//推广
            var page;
            var homeIndex = ['div#u_sp','div#s_fm','div#s_wrap','div#s_main'];//已登录状态下的首页搜索框和搜索按钮,以及浮动框
            if (document.all || document.getElementById){
                page = document.getElementsByTagName("div");
            }
            for(var i = 0;i < page.length;i++){
                var div_id;
                if(page[i].id !== ""){
                    div_id = page[i].id;
                }
            }
        }
        var option_i , obj_i , del;
        for(option_i in option){
            if(option[option_i]){
                del = obj[option_i];
                for(obj_i in del){
                    Id_hide(del[obj_i] );
                }
            }
        }
        $(".m").each(function (index,element) {
            if($(element).html() == "广告" && $(element).parent().parent().css('display')!='none'){
                if(console_log){console.log('隐藏搜索结果中的广告->'+index);}
                $(element).parent().parent().css('display','none');
            }
            if($(element).html() == "评价" && $(element).parent().parent().parent().css('display')!='none'){
                if(console_log){console.log('隐藏搜索结果中的加v广告->'+index);}
                $(element).parent().parent().parent().css('display','none');
            }
        });
        $("a span").each(function (index,element) {
            if($(element).html() == "广告" && $(element).parent().parent().css('display')!='none'){
                if(console_log){console.log('隐藏搜索结果中的广告->'+index);console.log($(element).html());}
                $(element).parent().parent().css('display','none');
            }
            if($(element).html() == "评价" && $(element).parent().parent().parent().css('display')!='none'){
                if(console_log){console.log('隐藏搜索结果中的加v广告->'+index);}
                $(element).parent().parent().parent().css('display','none');
            }
        });
    }
    setInterval (function (){
        if($('.rrecom-btn-close')){
            $('.rrecom-btn-close').click();
        }
        hideAdvertisement();
    }, 100);
};

效果

使用之前

1.png

使用之后

2.png

已有 2 条评论
  1. 123 123

    赞~

    1. 菜鸡 菜鸡

      虽然他有局部刷新,只需要设为透明,position absolute层级负无穷就好了,希望改进后可以发给我一下哈哈

添加新评论