zoukankan      html  css  js  c++  java
  • CSDN去广告插件

    因为避免不了与代码打交道,所以经常要上网搜代码,一般搜索到的资源都指向了CSDN,然而,好好的一篇博文,上面有很多广告,看着很不舒服,冲vip是不可能的,穷的的要死,怎么办呢?写个插件把!

    去广告原理

    当检测到匹配的网站时,我们将之前摸索发现的html中的广告位置通过JavaScript注入网页,修改他们的样式为不可见,这样广告就没了!

    manifest.json

    {
      "author": "gshang",
       "description": "为CSDN界面去除广告",
       "icons":
        {
          "48": "48.png",
          "96": "128.png"
        },
      "manifest_version": 2,
      "name": "CSDN去广告",
      "version": "1.0",
      "permissions": [
      "contextMenus",
       "tabs"
    ],
    "content_scripts": [ //将哪些脚本何时注入到哪些页面中
            {
                "matches": ["https://blog.csdn.net/*","https://www.csdn.net/","https://so.csdn.net/so/search/s.do?q=*"], //*:任意字符,注入js脚本的网页
                "js": ["blog.js","home.js","search.js"] //注入网页的js脚本
            }
        ]
    
    }
    

    然后是针对不同网址界面的修改样式的JavaScript文件

    blog.js

    // https://blog.csdn.net/*
    var ad1 = document.getElementsByClassName('csdn-tracking-statistics mb8 box-shadow');//左侧用户下方
    for (var i=0; i<ad1.length; i++){
    ad1[i].style.display = "none";
    }
    var ad2 = document.getElementsByClassName('recommend-item-box recommend-ad-box');//评论区
    for (var i=0; i<ad2.length; i++){
    ad2[i].style.display = "none";
    }
    var ad4 = document.getElementsByClassName('box-box-large');//个人主页右下角
    for (var i=0; i<ad4.length; i++){
    ad4[i].style.display = "none";
    }
    document.getElementById('kp_box_57').style.display = 'none';//左侧下部
    document.getElementById('dmp_ad_58').style.display = 'none';//评论顶部
    document.getElementById('479').style.display = 'none';//右侧
    document.getElementById('480').style.display = 'none';//右侧2
    document.getElementById('adContent').style.display = 'none';//免VIP去广告
    

    home.js

    // https://www.csdn.net/
    var ad1 = document.getElementsByClassName('banner-ad-box');//首页banner
    for (var i=0; i<ad1.length; i++){
    ad1[i].style.display = "none";
    }
    var ad2 = document.getElementsByClassName('slide-outer right_top');//首页右侧轮播
    for (var i=0; i<ad2.length; i++){
    ad2[i].style.display = "none";
    }
    var ad3 = document.getElementsByClassName('J_adv');//信息流
    for (var i=0; i<ad3.length; i++){
    ad3[i].style.display = "none";
    }
    

    searh.js

    // https://so.csdn.net/so/search/s.do?q=*
    var ad1 = document.getElementsByClassName('rightadv');//右侧
    for (var i=0; i<ad1.length; i++){
    ad1[i].style.display = "none";
    }
    document.getElementById('kp_box_471').style.display = 'none';//信息流1
    document.getElementById('kp_box_472').style.display = 'none';//信息流2
    

    这里面的去除方法主要分两类,一类是通过查找ID,对其进行修改,即getElementById 另一类是通过查找类名,再进行修改,即getElementsByClassName。需要注意的是ID查找返回的是单个元素,类名查找返回的是数组,所以处理时需要用循环来写。可能有更好的方法,等后续学习再进一步挖掘。

    结果

    经过测试,首页、博客、博客正文、还有搜索 这几个界面会被去广告

  • 相关阅读:
    2014,成为更好程序员的7个方法
    联想集团大裁员,血淋漓的教训:公司只能给你位置,却无法给你未来!(转)
    Oracel数据库连接时出现:ORA-12518:监听程序无法分发客户机连
    Could not find a version that satisfies.... No matching distribution found for .....
    深度学习(七)U-Net原理以及keras代码实现医学图像眼球血管分割
    深度学习(六)keras常用函数学习
    np.random.random()函数 参数用法以及numpy.random系列函数大全
    2019最新win10 安装tensorflow1.4(GPU/CPU)+cuda8.0+cudnn8.0-v6 + keras 安装CUDA失败 导入tensorflow失败报错问题解决
    c++ 网络编程课设代码 网络编程入门教程 ---目录
    c++ 网络编程(十一) LINUX下 初步制作基于HTTP的WEB服务器
  • 原文地址:https://www.cnblogs.com/gshang/p/10623674.html
Copyright © 2011-2022 走看看