簡單幾行代碼,寫一個百度廣告屏蔽插件,爽到爆

下載地址:https://github.com/jsoncode/b...
使用方法:css

clipboard.png

將文件夾拖到這裏面
clipboard.pngcss3

一個小問題:
我沒有境外支付信用卡>沒法向谷歌支付$5的費用>每次打開瀏覽器都會提示是否禁止>點取消就好了git

也能夠經過網上的方法,修改註冊表關閉提示,這裏就再也不贅述
若是你有更新,須要打開第二張圖的位置,從新載入才能生效github


目錄結構


-bd.png
-browser_action.js
-config.js
-manifest.jsonjson

manifest.json

{
    "name": "屏蔽百度廣告",
    "manifest_version": 2,
    "version": "1.0",
    "description": "百度插件",
    "browser_action": {
        "default_icon": "bd.png"
    },
    "icons": {
        "128":"bd.png"
    },
    "content_scripts": [{
        "matches": ["<all_urls>"],
        "js": ["config.js","browser_action.js"]
    }]
}

browser_action.js

var lists = str.split('\n').filter(function(v) {
    if (v) return true
});

function clear(lists) {
    var local = location.href;
    for (var a = 0, list; list = lists[a++];) {
        var sub = list.split('$');
        if (new RegExp(sub[0]).test(local)) {
            var selector = sub[1];
            var obj = document.querySelectorAll(selector);
            for (var i = 0, item; item = obj[i++];) {
                item.parentNode.removeChild(item);
            }
        }
    }
}

clear(lists);
setInterval(function() {
    clear(lists);
}, 2000);
var input = document.querySelector("input[name=wd]");
input&&input.addEventListener('change', function() {
    clear(lists);
});

之因此用定時器一直調用,是由於有些網站會動態延遲的加載動態腳本類的廣告,好比bd,噁心無比,本身使用的adBlock,adBlock plus都不理想。瀏覽器

config.js

var str = `
www.baidu.com$#content_left [style="display:block !important;visibility:visible !important"]
www.baidu.com$[tpl="right_toplist"]
www.baidu.com$[class="c-gray c-feedback"]
www.baidu.com$[data-click*="vLevel"]
`;

用法:每次只須要修改config.js中的規則就行
規則約定:須要屏蔽的網站地址$css3選擇器,中間的$是分隔符,選擇器選中的就是要被刪除的廣告dom

上面四個規則本身經常使用的,
第一個能夠屏蔽大多數動態流氓廣告,之因此用這麼低級的方法(style=*)是由於這類廣告假裝實在太逼真(和正常搜索結果沒任何區別)
第二個屏蔽右側不喜歡的推薦
第三行忘記了,
第四行是一些推廣廣告工具

今後,世界一片潔淨,我不會成爲第二個魏則西,在此分享給你們,網站


這裏更新一下,每次打開瀏覽器,都會提示的問題。url

我找到了一個管理瀏覽器插件代碼片斷的工具Tampermonkey,是一個瀏覽器插件。
而後就能夠把個人百度插件代碼添加到這個插件中使用,就不會每次都提示了。

使用方法:
1,新增腳本
圖片描述

2,粘貼代碼
圖片描述

代碼以下:

// ==UserScript==
// @name         ad-baidu
// @namespace    https://baidu.com/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://www.baidu.com/**
// @grant        none
// ==/UserScript==
var selectors = `
#content_left [style*="display:block !important;visibility:visible !important"]
[tpl="right_toplist"]
[class="c-gray c-feedback"]
[data-click*="vLevel"]
`;
selectors = selectors.trim().split('\n');
var count = 0;
function showCount(cn){
    if(cn>0){
        count+=cn;
        var content_right = document.querySelector('#content_right');
        if(content_right){
            content_right.style.position = 'relative';
            var style = `
line-height: 42px;
text-align: center;
background: #0c0;
color: #fff;
margin-bottom:30px;
`;
            var msgCount = document.querySelector('#msg-remove');
            if(!msgCount){
                content_right.insertAdjacentHTML('afterbegin','<div id="msg-remove" style="'+style+'"></div>');
                msgCount = document.querySelector('#msg-remove');
            }
            msgCount.innerHTML = '已過濾:'+count+'條垃圾廣告,本次過濾:'+cn+'條';
        }
    }
}
function clear() {
    selectors.forEach(function(selector) {
        var doms = document.querySelectorAll(selector);
        if(doms.length){
            doms = Array.from(doms);
            showCount(doms.length);
            doms.forEach(function(dom) {
                dom.parentNode.removeChild(dom);
            });
        }
    });
}
setInterval(function () {
    clear();
},500);

而後每次打開瀏覽器百度搜索,就不會再有提示了;
效果:
圖片描述

相關文章
相關標籤/搜索